如何使用 Python 提取 PDF 文件中的内容
在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型:基于文本的 PDF 和 包含扫描图像的 PDF。
本文将介绍如何使用 Python 分别提取这两种类型的 PDF 内容,并提供完整的代码示例和实用技巧。
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,某些页面可能无法正确提取文本。
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)技术 来提取其中的文字。
你需要安装 Tesseract OCR 引擎以及对应的 Python 封装库。
C:\Program Files\Tesseract-OCR\tesseract.exe
)pip install pytesseract pillow pdf2image
sudo apt install tesseract-ocr libpoppler-cpp-dev # Ubuntu/Debian
brew install tesseract poppler # macOS (Homebrew)
pip install pytesseract pillow pdf2image
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"
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,但速度较慢 |
PyPDF2
提取看看是否有返回内容,若为空则可能是扫描图像。pytesseract
。-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 文档处理的最佳实践!