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

如果各位观众姥爷觉得有帮助的话,希望可以一键三连!你的点赞关注是我持续创作的动力。
相关推荐
Sarvartha10 小时前
final 关键字
java·开发语言
数字融合10 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi01110 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
程序员Sunday10 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
zhangzeyuaaa11 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
Marst Code11 小时前
上位机开发日记 · 第 2 篇 · 架构先行:六层分层与边界
python
李日华大战鸡红12 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
谢亮_vipxieliang12 小时前
用 PHP 构建轻量级 REST API:从路由到鉴权的完整实践
开发语言·后端·php
思无邪6612 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
H.莓飛13 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法