使用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).
相关推荐
滴啦嘟啦哒1 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生1 小时前
AI安全与红队测试
python·ai
费曼学习法1 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿1 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者1 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp2 小时前
asyncio并发协程
python
小小张说故事2 小时前
Python 的整数为什么永远不会溢出?拆开大整数对象,看 30 位一节的存储与运算代价
python
用户298698530142 小时前
Python 实现 Word 与 TIFF 双向转换的方案
后端·python·api
benchmark_cc2 小时前
实时行情和分钟 K 线应该如何配合使用?从信号计算到交易决策的完整分析
大数据·python·数据分析·pandas·量化交易·股票数据·quantdash
LMT流氓兔2 小时前
第四单元——第17课:让回答边生成、边显示
服务器·数据库·人工智能·python·oracle·langchain