RAG 场景中复杂 PDF 解析工具对比:PyMuPDF、Nougat 与 TextIn
在 AI 领域,高效处理 PDF 文档是提升知识管理效率的关键。随着检索增强生成(RAG)技术的普及,从朴素 RAG 到高级 RAG,再到 GraphRAG 的快速演进,如微软的 GraphRAG 和 LightRAG 等框架不断涌现。这些框架提升了 RAG 的精度,但大多不支持 PDF 格式,而企业内部却存在大量 PDF 文档。因此,将这些资料有效整合进内部知识库成为技术挑战。
然而,各种开源 PDF 解析和商用 PDF 解析工具到底性能怎么样?是否能够精确地处理好一直被诟病的图表转换问题?最近新出的论文《A Comparative Study of PDF Parsing Tools Across Diverse Document Categories》评测了 10 种流行的 PDF 解析工具。
我们使用 Google NotebookLLM 对该论文进行分析,它推荐适用性更强的 PDF 解析器 PyMuPDF 和更适用于论文解析的 Nougat。本文在此基础上,加入商业 PDF 解析工具 TextIn(通用文档解析器)和国内某商用产商的文档解析器,并以该论文作为样本,探索它们在文本提取、表格检测、图像提取、易用性中的真实表现。
注:
- 当前多模态嵌入模型已经出现,准确提取图像也是重要的因素之一,RAG 未来的发展应该不仅仅是文本,也应包括图像。
- 文本识别和段落完整性,采用大模型进行综合评价,而图表处理则使用肉眼直接对比。
1. 安装与使用
1.1 PyMuPDF
PyMuPDF 是一个高性能的 Python 库,用于从 PDF(以及其他)文档中进行数据提取、分析、转换和操作。它支持快速处理 PDF 文件,提供了灵活的接口来提取文本、图像、表格等内容,并且可以进行页面操作、格式转换等多种功能,广泛应用于文档处理、自然语言处理(NLP)任务及数据分析等领域。为了输出 Markdown,这里需要使用它的另外一个版本 PyMuPDF4LLM。API 很简单,非常容易集成到 RAG 应用流程。
使用方法:
pip install pymupdf4llm
import pymupdf4llm
import pathlib
md_text = pymupdf4llm.to_markdown("/path/to/your/document.pdf")
pathlib.Path("output.md").write_bytes(md_text.encode())
1.2 TextIn
TextIn 平台提供智能文档处理服务。在平台注册后,即可领取免费测试额度。打开 TextIn 的通用文档解析工作台,点击左侧上传文件即可。
速度非常快,几乎瞬间转换完成,并且可以逐个段落点击进行高亮对比,如果发现错误也可以手工进行修正,这一点能极大提升文档转换和校正的效率。校正完成后,点击右下角的导出结果按钮即可导出 markdown 文件。
除此之外,TextIn 也支持像 PyMuPDF 一样通过 API 调用。在平台获取 Token 之后,按照如下同步代码,即可转换 PDF 为 Markdown。
file_path = '/path/to/your/document.pdf'
with open(file_path, 'rb') as fp:
pdf = fp.read()
app_id = 'YOUR_APP_ID'
app_secret = 'YOUR_SECRET_CODE'
url = "https://api.textin.com/ai/service/v1/pdf_to_markdown"
headers = {
'x-ti-app-id': app_id,
'x-ti-secret-code': app_secret
}
resp = requests.post(url, data=pdf, headers=headers)
result = resp.json()
with open('result.json', 'w', encoding='utf-8') as fw:
json.dump(result, fw, indent=4, ensure_ascii=False)
返回的结果中直接包含 Markdown 的内容,速度很快不到 2 秒 19 页就解析完成了,可以极大提升我们文档处理效率。同时提取的内容可以保存为 md 或者直接将其 chunk 分割,更容易直接集成到 RAG 应用的流程中。
1.3 Nougat
Nougat 是 Meta 于 2023 年 8 月开源的一款专门用于学术文献的 PDF 解析器,能够理解 LaTeX 数学公式和表格。它是一种基于视觉 Transformer 的模型,执行光学字符识别(OCR)任务,将科学文献处理为标记语言。
安装:
pip install nougat-ocr
pip install transformers==4.38.2
然后执行以下命令将论文转换为 markdown 格式。
nougat /path/to/document.pdf -o ./ -m 0.1.0-base --batch 2
耗时很夸张,在我的 Mac M1 上 19 页的论文达到了 47 分钟。
注: nougat 生成的是 mmd 文件,兼容 mathpic-markdown。我们可以在 VS Code 中安装插件 Mathpix Markdown 来显示。
1.4 某产商
这家公司也同样支持多样化的文档解析,支持网页端直接上传和使用 API 访问,但是不支持导出为 Markdown,API 需要先上传再轮询状态获取。意味着我们需要离线处理文档,无法直接集成到 RAG 应用流程中。
接下来,我们准备开始对比。对比采用两种方式,文本采用大模型帮助我们比对,而图表我们则使用肉眼直接进行观察,这样更为准确。
2. 文本对比
既然要看抽取的文档质量是否有差错,可以考虑使用大模型帮助我们自动评判与原文在语义上的相关性,是否存在一些错误的转译。我们选择论文 3.1 节中双排图文混排进行对比。
2.1 原文

2.2 编写 LLM 评测代码
如下 Prompt 然后要求 ChatGPT 进行打分。
prompt = f"""
这是从 PDF 原文上使用 4 种 PDF 解析器提取的,请对照原文基于以下 3 个指标进行评价。满分 5 分,根据这几项进行打分,输出 markdown 表格
1. **准确识别单词**:是否存在提取的文本错误,忽略错误的单词分隔和连字符等问题。
2. **保持段落完整性**:嵌入的元素如公式或图像可能会导致段落被打断,或者将标题错误地合并到正文中。如果原文有图像,但是转换的 markdown 没有图像,则需要扣分。
3. **保持原文语义**:是否存在多提取的内容,导致文本不对。
Original Text:
{original_text}
===================
Markdown Generated by Nougat:
{segment1}
===================
Markdown Generated by TextIn:
{segment2}
===================
Markdown Generated by PyMuPDF4LLM
{segment3}
===================
Markdown Generated by Another Vendor
{segment4}
"""
结果输出如下:

总结:在文本准确识别上,Nougat 和 TextIn 表现较好,不分伯仲。
3. 表格对比
我们选取了一个比较有代表性的表格来比较,这个表格有左侧是目录,而右侧标题列,且分为两行副标题列。
3.1 原文

3.2 PyMuPDF
PyMuPDF 的表格提取效果不佳,结构丢失严重。

3.3 TextIn
不能说完美,但简直一模一样,除了标题列 Metrics 与 Precision 融合到一起之外,没有任何问题,而这种小错误在校正阶段即可手动修复掉。

3.4 Nougat
Nougat 虽然号称是专为学术领域打造的 PDF 论文解析器,然而在这个表格提取上,属实拉胯。目录丢失严重,关键信息丢了,右侧数据再完整又有何用?但它的公式表现确实不错。

3.5 某产商
它输出的是 Word 文档,在这个表格上表现不错。但 Word 文档里的表格,RAG 要想正确处理还需要费一番功夫。

但其实论文里充斥的公式导致了整体排版有点混乱,这一点我们在文本比对中并没有显式进行对比,当然本文重点也不是公式比对。

总结:表格提取上,开源的表现都不太好。虽然某产商在表格提取不错,但输出的是 word 文档。这一环节显然 TextIn 胜出。
4. 图像对比
正如我们之前所说,我们采用肉眼对比图像,接下来多图预警。本节采用 2.1 节中所用图文混排的双排论文作为比对对象。
4.1 PyMuPDF
PyMuPDF 丢失所有图像,只保留图标题。

4.2 TextIn
可以看到 TextIn 准确地识别出了排列,以及图片和其对应的描述。这里图片内容并不影响文本本身的连续性,因为 markdown 中图片内容是以注释 []( "") 格式存在。在 RAG 应用进行 chunk 的时候,并不会导致文本连续受到影响。

4.3 Nougat
Nougat 会把论文中所有的图都丢弃,只保留了图的标题。就这个解析还把原文中的小标题 3.1 丢弃了,整个排版也变得乱序起来,丢大分,耗时就不说了。

4.4 某产商
图像提取出来了,图像标题也提取了,但是混合到正文中去了,且没有分隔符分开。

总结:图像提取这一环节,开源工具都忽略图像,某产商的图像标题错乱排版,TextIn 依然胜出。
5. 总结与建议
综上,不论是在图表提取、格式兼容还是效率上,TextIn 无疑表现更为优秀,而且非常容易集成到 RAG 的 Pipeline 中。因此,在 RAG 应用中如果你有大量的 PDF 文档,尤其是图表较多的场景,推荐你使用合合信息 TextIn 的通用文档解析器提升文档解析效率。
5.1 选型建议
在实际工程落地中,不同场景对解析器的需求有所不同:
- 学术论文场景:如果文档以 LaTeX 公式为主,表格较少,Nougat 在公式渲染上有优势,但需接受其速度慢和表格处理能力弱的缺点。适合对时效性不敏感的历史文献归档。
- 企业报表/合同场景:如果文档包含大量复杂表格和布局,PyMuPDF 可能丢失结构信息,TextIn 这类商业 OCR+Layout 分析工具通常能更好地还原表格层级,利于后续结构化存储。
- 实时流处理场景:对于需要低延迟的 RAG 系统,PyMuPDF 本地运行速度快,无需网络依赖,适合隐私敏感环境;TextIn 等云端 API 速度快但涉及网络开销和数据出境风险。
5.2 RAG 集成最佳实践
- Chunking 策略:由于不同工具输出的 Markdown 结构差异较大,建议在解析后进行二次清洗。例如,TextIn 输出的图片占位符可能会打断语义连贯性,建议在 Chunking 前移除纯图片占位符,仅保留图片 URL 作为元数据关联。
- 多模态 Embedding:随着多模态嵌入模型的成熟,单纯提取文本已不足够。建议保留解析后的原始图片路径,在向量检索时结合图像特征,实现真正的图文检索。
- 人工校对闭环:对于关键业务文档,无论使用何种工具,都应建立'机器解析 + 人工校对'的机制。TextIn 提供的在线校对功能允许快速修正错误段落,这比完全自动化更可靠。
5.3 未来展望
PDF 解析仍是 RAG 领域的难点,主要在于非结构化数据的标准化。未来趋势将集中在:
- 端到端大模型解析:利用大模型直接理解 PDF 布局,而非传统的 OCR+Layout 分离方案。
- 动态布局适应:针对扫描版、手写版、印刷版等不同来源的 PDF 自适应调整解析策略。
- 成本优化:降低高精度解析的计算成本,使大规模知识库构建成为可能。
学习 AI 大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习 AI 大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握 AI 大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。