一、提取基于文本的 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" 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 都提供了丰富的第三方库来帮助我们实现高效的文本提取。掌握这些工具不仅能提升办公效率,还能为数据分析、文档管理、信息自动化等场景打下坚实基础。
以上就是使用python提取pdf文件中内容的代码示例和使用技巧的详细内容,更多关于python提取pdf文件内容的资料请关注代码网其它相关文章!
发表评论