使用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)其它相关文章!
加载中,请稍侯......
精彩评论