python版提取 PDF 的常用第三方库与工具

之前有分享过一些处理常见格式文件的策略,今天分享一些非常比较好用提取python生态下的第三方库以及工具。

一、python的几个第三方库

1、PyMUPDF ------通用打法

首当其冲的就是PyMuPDF了,它又叫fitz。很多人直接 import fitz,它的包名叫 PyMuPDF,是基于 MuPDF 引擎的 Python 第三方库,用于 PDF、XPS、EPUB 等文档处理,PDF 文本 / 图片提取能力极强,速度快、占用低。

维度 评分
文本提取 ⭐⭐⭐⭐
表格提取 ⭐⭐
精度控制 ⭐⭐⭐⭐⭐
速度 ⭐⭐⭐⭐⭐
学习曲线 di

注意:在安装这个模块的时候,命令是pip install PyMuPDF,不是pip install fitz!fitz 只是导入时的模块名,安装包叫PyMuPDF。

常用API:

1、打开文档提取所有文本

python 复制代码
import fitz  # PyMuPDF

doc = fitz.open("document.pdf")
for page in doc:
    text = page.get_text()
    images = page.get_images(full=True)

注意: 中文混合排版时,文本顺序可能不完美,但大部分场景够用。


2. pdfplumber --- 表格提取之王

维度 评分
文本提取 ⭐⭐⭐⭐
表格提取 ⭐⭐⭐⭐⭐
精度控制 ⭐⭐⭐⭐⭐
速度 ⭐⭐⭐
学习曲线

特点: 在 pdfminer.six 之上封装,提供精确的字符级定位和可视化调试。提取表格时能精确识别单元格边界。

最佳场景: 报表、发票、结构化表格数据。

python 复制代码
import pdfplumber

with pdfplumber.open("invoice.pdf") as pdf:
    for page in pdf.pages:
        tables = page.extract_tables()
        text = page.extract_text()

注意: 比 PyMuPDF 慢,处理大文件(几百页)时明显。


3. Camelot --- 表格专项

维度 评分
表格提取 ⭐⭐⭐⭐⭐
准确性 ⭐⭐⭐⭐⭐
安装复杂度 ⭐⭐(有依赖)
速度 ⭐⭐⭐
学习曲线 中高

特点: 提供两种模式 --- Lattice(有边框线)和 Stream(无边框线,靠空格对齐)。内置准确度评分。

最佳场景: 复杂表格、无边框表格、需要高精度表格场景。

python 复制代码
import camelot

tables = camelot.read_pdf("report.pdf", flavor="lattice")
tables[0].df  # 转为 DataFrame
tables[0].accuracy  # 准确度评分

注意: 依赖 Ghostscript 和 OpenCV,安装稍麻烦。Windows 上配置环境变量劝退过不少人。


二、OCR 方案(图片型)

当 PDF 是扫描件(图片组成),上述所有库都无能为力,必须 OCR。

1. PaddleOCR --- 中文 OCR 王者

百度出品,中文识别效果目前最强。内置版面分析,能识别表格结构。

python 复制代码
from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang="ch")
result = ocr.ocr("scanned.pdf", cls=True)

注意: 模型较大(~15MB),首次加载慢。GPU 加速后性能不错。

2. EasyOCR --- 开箱即用

python 复制代码
import easyocr
reader = easyocr.Reader(["ch_sim", "en"])
result = reader.readtext("scan.pdf")

注意: 速度慢,精度中等,但 API 最简单。

三、推荐组合

场景 推荐方案
通用文本提取 PyMuPDF(最快够用)
提取表格数据 pdfplumber(首选)或 Camelot(精度要求高时)
扫描件/图片PDF PaddleOCR
批量处理 PyMuPDF + pdfplumber 混合
全都要 PyMuPDF 提取文本 + pdfplumber 提取表格 + PaddleOCR 处理扫描页

除了以上一些python的第三方库,另外还有一些工具。

四、PDF 提取工具

1. Marker --- 转 Markdown 的首选

将 PDF 快速转为 Markdown,内置 OCR 兜底、版面分析、公式识别。

bash 复制代码
pip install marker-pdf
marker /path/to/pdf /path/to/output

特点: 输出干净,支持多语言、表格、公式。比传统库的提取结果更"像人读的"。

缺点: 需要 GPU 才能跑得快,纯 CPU 慢。

2. Docling

IBM 开源,基于深度学习做版面理解和文档解析。输出 Markdown 或 JSON,支持表格、图片、标题层级识别。

python 复制代码
from docling.document_converter import DocumentConverter

converter = 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 调用,支持表格、图片、复杂排版。

python 复制代码
from llama_parse import LlamaParse
parser = LlamaParse(result_type="markdown")
docs = parser.load_data("report.pdf")

特点: 精度极高,但按页收费,适合小批量高质量需求。


怎么选?

对比维度 传统库(PyMuPDF/pdfplumber) 新派工具(Marker/Docling)
速度 快,毫秒级 慢,秒级甚至分钟级
硬件要求 最好有 GPU
输出质量 原始文本,可能乱序 结构化 Markdown,排版还原
表格 pdfplumber 不错 更好,但也不是完美
适合场景 批量处理、简单提取 高质量文档转换、RAG 预处理

总结: 先判断 PDF 复杂度。简单报表用 PyMuPDF/pdfplumber。复杂排版/学术论文/多栏布局,直接上 Marker 或 Docling,省得自己调参。

如果各位观众姥爷觉得有帮助的话,希望可以一键三连!你的点赞关注是我持续创作的动力。
相关推荐
lzhdim1 小时前
C# 通过 Windows API 实现进程内存读写操作
开发语言·windows·c#
小猴子爱上树1 小时前
跨境图片翻译工具,批量处理商品图视频字幕
python·音视频
-银雾鸢尾-1 小时前
C#中的预处理指令
开发语言·c#
用户298698530141 小时前
HTML 转 Word 指南:新手入门教程
人工智能·后端·python
Livia要学习1 小时前
Python面向对象三大特性:封装、继承、多态
开发语言·python
dalong101 小时前
Savitzky-Golay 的C# 实现
开发语言·kotlin·c#
Csvn1 小时前
🐍 Day1 : Python 环境搭建 — 现代 Python 工作流
后端·python
杨_晨1 小时前
LLM输出康熙部首冲突
数据库·python·mysql·ai
渣男教父1 小时前
Python-lxml 与 XPath 实战
python·编程语言