【学习记录】如何使用 Python 提取 PDF 文件中的内容
如何使用 Python 提取 PDF 文件中的内容
在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型:基于文本的 PDF 和 包含扫描图像的 PDF。
本文将介绍如何使用 Python 分别提取这两种类型的 PDF 内容,并提供完整的代码示例和实用技巧。
一、提取基于文本的 PDF 内容
1. 使用 PyPDF2
提取纯文本
PyPDF2
是一个轻量级但功能强大的库,适合用于读取和提取标准文本型 PDF 中的内容。
安装
pip install PyPDF2
示例代码
import PyPDF2def 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 pdfplumberdef 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 Imagedef extract_text_from_scanned_pdf(pdf_path):# 将 PDF 转换为图像列表images = convert_from_path(pdf_path)extracted_text = ""for image in images:# 对每张图片执行 OCRtext = pytesseract.image_to_string(image)extracted_text += text + "\n"return 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 都提供了丰富的第三方库来帮助我们实现高效的文本提取。掌握这些工具不仅能提升办公效率,还能为数据分析、文档管理、信息自动化等场景打下坚实基础。
📌 如果你正在从事数据工程、自动化脚本开发或文档处理相关的工作,熟练使用这些库将大大增强你的生产力。同时,也可以根据实际需求,结合日志记录、GUI 界面、批量处理等功能进行二次开发。
💬 欢迎留言交流你在项目中使用这些技术的经验,或者你遇到的相关问题,我们一起探讨 Python 文档处理的最佳实践!