使用Python提取PDF文件中内容的代码示例和使用技巧
目录
- 一、提取基于文本的 PDF 内容
- 1. 使用 PyPDF2 提取纯文本
- 安装
- 示例代码
- 2. 使用 pdfplumber 提取表格和布局复杂的文本
- 安装
- 示例代码
- 二、提取扫描图像型 PDF 内容(OCR)
- 1. 安装依赖项
- Windowandroids:
- linux / MACOS:
- 2. 示例代码:结合 pdf2image + pytesseract 提取扫描 PDF 内容
- 三、总结与建议
- 建议:
- 四、扩展功能推荐
- 结语
一、提取基于文本的 PDF 内容
1. 使用 PyPDF2 提取纯文本
PyPDF2
是一个轻量级但功能强大的库,适合用于读取和提取标准文本型 PDF 中的内容。
安装
pip install PyPDF2
示例代码
import PyPDF2 def extract_text_from_pdf(pdf_path): with open(pdf_path, 'rb') as file: reader = PyPDF2.PdfReader(file) text = "" for page in reader.pages: text += page.extract_text() return text # 使用示例 pdf_path = 'example.pdf' extracted_text = extract_text_from_pdf(pdf_path) print(extracted_text)
注意:对于格式复杂或字体嵌入的 PDF,某些页面可能无法正确提取文本。
2. 使用 pdfplumber 提取表格和布局复杂的文本
如果你需要提取含有表格、列布局或精确坐标信息的 PDF,pdfplumber
是更合适的选择。
安装
pip install pdfplumber
示例代码
import pdfplumber def extract_text_from_pdf(pdf_path): with pdfplumber.open(pdf_path) as pdf: text = "" for page in pdf.pages: text += page.extract_text() return text # 使用示例 pdf_path = 'example.pdf' extracted_text = extract_text_from_pdf(pdf_path) print(extracted_text)
特点:支持表格识别、文字坐标定位等功能。
二、提取扫描图像型 PDF 内容(OCR)
对于由扫描图片组成的 PDF 文件,必须借助 光学字符识别(OCR)技术 来提取其中的文字。
1. 安装依赖项
你需要安装 Tesseract OCR 引擎以及对应的 python 封装库。编程客栈
Windows:
- 下载并安装 Tesseract OCR
- 添加 Tesseract 到系统环境变量(例如路径为
C:\Program Files\Tesseract-OCR\tesseract.exe
) - 安装 Python 库:
pip install pytesseract pillow pdf2image
- 安装 Poppler(用于将 PDF 转换为图像):
- 可以从 github - poppler-windows 下载并解压,同样添加到系统 PATH。
Linux / macOS:
sudo apt install tesseract-ocr libpoppler-cpp-dev # Ubuntu/Debian brew install tesseract poppler # macOS (Homebrew) pip install pytesseract pillow pdf2image
2. 示例代码:结合 pdf2image + pytesseract 提取扫描 PDF 内容
from pdf2image import convert_from_path import pytesseract from PIL import Image def extract_text_from_scanned_pdf(pdf_path): # 将 PDF 转换为图像列表 images = convert_from_path(pdf_path) extracted_text = "" for image in images: # 对每张图片执行 OCR text = pytesseract.image_to_string(image) extracted_text += text + "\n" rewww.devze.comturn extracted_text # 使用示例 pdf_path = 'scanned_example.pdf' text = extract_text_from_scanned_pdf(pdf_path) print(text)
说明:该方法会逐页将 PDF 转换为图像,再通过 OCR 提取文字,适用于高质量扫描件。
三、总结与建议
PDF 类型 | 推荐库 | 特点 |
---|---|---|
纯文本型 PDF | PyPDF2 或 pdfplumber | 快速、高效,适合标准 PDF 文档 |
扫描图像型 PDF | pdf2image + pytesseract | 支持 OCR,适合图像型 PDF,但速度较慢 |
建议:
- 优先判断 PDF 类型:可以尝试用
PyPDF2
提取看看是否有返回内容,若为空则可能是扫描图像。 - 提高 OCR 准确率:可先对图像进行预处理(如灰度化、二值化),再传给
pytesseract
。 - 多语言支持:Tesseract 支持多种语言包,可通过
-l
参数指定语言,如pytesseract.image_to_string(img, lang='chi_sim')
提取中文。
四、扩展功能推荐
功能 | 工具 | 描述 |
---|---|---|
表格识别 | camelot 或 tabula-py | 专门用于提取 PDF 中表格数据 |
PDF 加密破解 | pikepdf | 可用于打开加密 PDF 文件(需密码) |
PDF 合并与拆分 | PyPDF2 / pypdf | 拆分、合并、旋转 PDF 页面 |
PDF 注释提取 | pdfminer.six | 提供底层解析能力,适合高级用途 |
结语
无论是处理普通的文本型 PDF 还是扫描图像型 PDF,Python 都提供了丰富的第三方库来帮助我们实现高效的文本提取。掌握这些工具不仅能提升办公效率,还能为数据分析、文档管理、信息自动www.devze.com化等场景打下坚实基础。
以上就是使用Python提取PDF文件编程客栈中内容的代码示例和使用技巧的详细内容,更多关于Python提取PDF文件内容的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论