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,省得自己调参。

如果各位观众姥爷觉得有帮助的话,希望可以一键三连!你的点赞关注是我持续创作的动力。
相关推荐
神仙别闹2 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
Y幽谷客2 小时前
Python加载本地大模型(Qwen3.5 8B)
python·大模型
伞伞悦读3 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
线上放牧人3 小时前
Windows删除图标缓存
windows·python·pyqt
qq_5470261794 小时前
Python 变量和简单数据类型
python
智搜广告5 小时前
智搜广告:科技行业AI回答优化公司如何破局
大数据·python·elasticsearch·geo
IpdataCloud5 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
2601_966949656 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng6 小时前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
m0_734571766 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g