使用pdfplumber库处理pdf文件获取文本图片作者等信息

复制代码
   To use the `pdfplumber` library to extract content from PDF files in Python, follow these steps with example code:

1. Install pdfplumber 库安装

First, install the library using pip:

bash 复制代码
pip install pdfplumber

2. Basic Text Extraction获取文本

Extract all text from a PDF file:

python 复制代码
import pdfplumber

# Replace with your PDF file path (use raw string or double backslashes on Windows)
pdf_path = r'c:\Users\czliu\Documents\python\example.pdf'

# Extract all text from PDF
with pdfplumber.open(pdf_path) as pdf:
    all_text = ''
    for page in pdf.pages:
        all_text += page.extract_text() + '\n'

print("Extracted Text:")
print(all_text)

3. Extract Text from Specific Pages获取指定的页内容

Extract text from page 2 (0-indexed, so page 1 is index 0):

python 复制代码
import pdfplumber

pdf_path = r'c:\Users\czliu\Documents\python\example.pdf'

with pdfplumber.open(pdf_path) as pdf:
    # Extract text from page 2 (index 1)
    page = pdf.pages[1]
    page_text = page.extract_text()
    
    print("Text from Page 2:")
    print(page_text)

4. Extract Tables (pdfplumber's Key Feature) 获取表格

pdfplumber excels at extracting structured tables. Example with table extraction:

python 复制代码
import pdfplumber
import pandas as pd  # Optional, for better table handling

pdf_path = r'c:\Users\czliu\Documents\python\example.pdf'

with pdfplumber.open(pdf_path) as pdf:
    for page_num, page in enumerate(pdf.pages, 1):
        # Extract tables from current page
        tables = page.extract_tables()
        
        if tables:
            print(f"\n--- Tables from Page {page_num} ---")
            for table_idx, table in enumerate(tables):
                print(f"\nTable {table_idx + 1}:")
                
                # Print raw table data
                for row in table:
                    print(row)
                
                # Optional: Convert to pandas DataFrame for better manipulation
                df = pd.DataFrame(table[1:], columns=table[0])  # Assume first row is header
                print(f"\nDataFrame for Table {table_idx + 1}:")
                print(df)

5. Extract PDF Metadata 获取作者、创建时间等信息

Get document information like author, title, creation date:

python 复制代码
import pdfplumber

pdf_path = r'c:\Users\czliu\Documents\python\example.pdf'

with pdfplumber.open(pdf_path) as pdf:
    metadata = pdf.metadata
    print("PDF Metadata:")
    for key, value in metadata.items():
        print(f"{key}: {value}")

6. Extract Images (Advanced)获取图片内容并存盘

Extract images embedded in the PDF:

python 复制代码
import pdfplumber
import pillow as pw  # Optional, for image saving
pdf_path = r'c:\Users\czliu\Documents\python\example.pdf'

with pdfplumber.open(pdf_path) as pdf:
    for page_num, page in enumerate(pdf.pages, 1):
        images = page.images
        if images:
            print(f"\n--- Images from Page {page_num} ---")
            for img_idx, img in enumerate(images):
             	  pw.Image.save(img, f"page{page_num}_img{img_idx + 1}.png")   # Save image
                print(f"Image {img_idx + 1}:")
                print(f"  Coordinates: {img['bbox']}")
                print(f"  Width: {img['width']}, Height: {img['height']}")
                # Note: To save images, you'll need additional libraries like PIL

Notes:

  • On Windows, use raw strings (r'path') or double backslashes ('c:\\Users\\...') for file paths.
  • pdfplumber's table extraction uses camelot's algorithm under the hood and can be customized with table_settings (e.g., table_settings={"vertical_strategy": "lines", "horizontal_strategy": "lines"}).
  • For scanned PDFs, you'll need OCR tools like Tesseract (pdfplumber alone won't work for scanned text).
相关推荐
橙橙笔记8 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事8 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力10 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力10 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A10 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖11 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks11 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境
AI导出鸭PC端11 小时前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭
Ravenq~12 小时前
无头转换:把 .docx 变成 PDF,不打开编辑器
pdf·编辑器
青少儿编程课堂12 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛