之前有分享过一些处理常见格式文件的策略,今天分享一些非常比较好用提取python生态下的第三方库以及工具。
一、python的几个第三方库
1、PyMUPDF ——通用打法
首当其冲的就是PyMuPDF了,它又叫fitz。很多人直接 import fitz,它的包名叫 PyMuPDF,是基于 MuPDF 引擎的 Python 第三方库,用于 PDF、XPS、EPUB 等文档处理,PDF 文本 / 图片提取能力极强,速度快、占用低。
注意:在安装这个模块的时候,命令是pip install PyMuPDF,不是pip install fitz!fitz 只是导入时的模块名,安装包叫PyMuPDF。
常用API:
1、打开文档提取所有文本
import fitz # PyMuPDFdoc = fitz.open("document.pdf")for page in doc: text = page.get_text() images = page.get_images(full=True)
注意: 中文混合排版时,文本顺序可能不完美,但大部分场景够用。
2. pdfplumber — 表格提取之王
特点: 在 pdfminer.six 之上封装,提供精确的字符级定位和可视化调试。提取表格时能精确识别单元格边界。
最佳场景: 报表、发票、结构化表格数据。
import pdfplumberwith pdfplumber.open("invoice.pdf") as pdf: for page in pdf.pages: tables = page.extract_tables() text = page.extract_text()
注意: 比 PyMuPDF 慢,处理大文件(几百页)时明显。
3. Camelot — 表格专项
特点: 提供两种模式 — Lattice(有边框线)和 Stream(无边框线,靠空格对齐)。内置准确度评分。
最佳场景: 复杂表格、无边框表格、需要高精度表格场景。
import camelottables = camelot.read_pdf("report.pdf", flavor="lattice")tables[0].df # 转为 DataFrametables[0].accuracy # 准确度评分
注意: 依赖 Ghostscript 和 OpenCV,安装稍麻烦。Windows 上配置环境变量劝退过不少人。
二、OCR 方案(图片型)
当 PDF 是扫描件(图片组成),上述所有库都无能为力,必须 OCR。
1. PaddleOCR — 中文 OCR 王者
百度出品,中文识别效果目前最强。内置版面分析,能识别表格结构。
from paddleocr import PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="ch")result = ocr.ocr("scanned.pdf", cls=True)
注意: 模型较大(~15MB),首次加载慢。GPU 加速后性能不错。
2. EasyOCR — 开箱即用
import easyocrreader = easyocr.Reader(["ch_sim", "en"])result = reader.readtext("scan.pdf")
注意: 速度慢,精度中等,但 API 最简单。
三、推荐组合
| |
|---|
| |
| pdfplumber(首选)或 Camelot(精度要求高时) |
| |
| |
| PyMuPDF 提取文本 + pdfplumber 提取表格 + PaddleOCR 处理扫描页 |
除了以上一些python的第三方库,另外还有一些工具。
四、PDF 提取工具
1. Marker — 转 Markdown 的首选
将 PDF 快速转为 Markdown,内置 OCR 兜底、版面分析、公式识别。
pip install marker-pdfmarker /path/to/pdf /path/to/output
特点: 输出干净,支持多语言、表格、公式。比传统库的提取结果更"像人读的"。
缺点: 需要 GPU 才能跑得快,纯 CPU 慢。
2. Docling
IBM 开源,基于深度学习做版面理解和文档解析。输出 Markdown 或 JSON,支持表格、图片、标题层级识别。
from docling.document_converter import DocumentConverterconverter = DocumentConverter()result = converter.convert("report.pdf")print(result.document.export_to_markdown())
特点: 深度理解文档结构,不只是"把文字串起来"。
3. MinerU(PDF-Extract-Kit)
上海 AI Lab 开源,学术论文提取精度很高,支持公式 LaTeX 还原。
特点: 学术场景最强,排版还原度好。
4. LlamaParse(云服务)
LlamaIndex 旗下的 PDF 解析服务,API 调用,支持表格、图片、复杂排版。
from llama_parse import LlamaParseparser = LlamaParse(result_type="markdown")docs = parser.load_data("report.pdf")
特点: 精度极高,但按页收费,适合小批量高质量需求。
怎么选?
总结: 先判断 PDF 复杂度。简单报表用 PyMuPDF/pdfplumber。复杂排版/学术论文/多栏布局,直接上 Marker 或 Docling,省得自己调参。
如果各位观众姥爷觉得有帮助的话,希望可以一键三连!你的点赞关注是我持续创作的动力。