文档解析方案大评测:做 RAG 的第一步,我帮你踩完了坑

7 阅读1分钟

做大模型应用的都知道,RAG 的第一步就是把文档解析成结构化文本。听起来简单,做起来想砸电脑。

我因为工作需要,系统测了市面上主流的文档解析方案。今天把结论和踩坑经验分享出来,帮你少走弯路。

为什么文档解析这么难

先说个反直觉的事实:PDF 不是给人读的格式,是给打印机读的。

PDF 内部存的不是"段落"和"表格",而是一堆文本块的坐标、字体大小和绘制指令。所谓的"表格",不过是几根线条加上恰好对齐的文字。所谓的"标题",可能只是字号比正文大了 2pt。

这就意味着,任何文档解析工具都在做一件事:从像素级的排版信息里,逆向推断出文档的逻辑结构。

评测选手

我测了以下几个主流方案,覆盖开源和商用:

工具类型是否需要 GPU核心原理
PyMuPDF (fitz)开源不需要直接解析 PDF 内部结构
pdfplumber开源不需要基于 pdfminer,擅长表格
Marker开源推荐深度学习,PDF→Markdown
MinerU开源推荐上海 AI Lab,版面分析+OCR
Docling开源可选IBM 出品,文档理解模型
Unstructured开源+商用可选多策略组合,生态完善
LlamaParse商用 API不需要LlamaIndex 官方,多模态
Doc2X商用 API不需要国产,效果很好

评测维度

我从以下几个实际业务角度打分(5 分制):

1. 表格识别

这是区分度最大的维度,没有之一。

简单表格(规整的行列、有边框)大家都能处理。真正拉开差距的是:

  • 合并单元格rowspan/colspan,很多工具直接错位
  • 跨页表格:一个表格跨了两页,上下页能不能拼起来
  • 无线框表格:只靠列对齐来区分,没有实际的表格线

实测结论:

  • Doc2X、LlamaParse 表现最好,跨页和合并单元格基本能处理
  • Marker、MinerU 中等偏上,简单合并没问题,复杂的会出错
  • PyMuPDF、pdfplumber 需要自己写后处理逻辑,原始输出不够用
  • Unstructured 默认策略一般,用 hi_res 模式好很多但慢

2. 标题层级

大部分工具靠字体大小和加粗来猜标题层级。问题在于:

  • 有些 PDF 的标题和正文字号一样,只是加粗
  • 有些用颜色区分
  • 自动编号(1.1, 1.1.1)的层级还原

Marker 和 Docling 在这块做得最好,输出的 Markdown 标题层级基本准确。PyMuPDF 你得自己根据字号写规则判断。

3. 页眉页脚

看似小问题,实际很烦。如果不去掉,RAG 检索时会被"第 X 页"、"公司名称"、"Confidential"这些垃圾文本严重干扰。

  • MinerU 做得最好,自动识别并过滤
  • Marker 也不错
  • PyMuPDF / pdfplumber 需要自己写规则过滤
  • LlamaParse / Doc2X 大多数情况能去掉,偶尔漏

4. 布局理解

多栏排版、文本框、浮动图片、混排布局——这些是版面分析的硬骨头。

  • 基于深度学习的方案(Marker、MinerU、Docling)明显更强
  • 传统解析方案(PyMuPDF、pdfplumber)在复杂排版下经常把阅读顺序搞乱

5. 中文支持

这是很多国外工具的软肋。

  • MinerU:国产,中文支持最好
  • Doc2X:国产,中文没问题
  • Marker:还行,但偶尔有分词错误
  • LlamaParse:英文为主,中文偶尔出问题
  • Docling:中文支持一般

6. 速度和成本

工具50 页 PDF 耗时硬件要求费用
PyMuPDF~2 秒CPU免费
pdfplumber~5 秒CPU免费
Marker~30 秒GPU(推荐)免费
MinerU~45 秒GPU(推荐)免费
Docling~40 秒GPU(可选)免费
Unstructured hi_res~60 秒GPU免费/商用
LlamaParse~20 秒云端$0.3/千页起
Doc2X~15 秒云端按页计费

我的推荐

场景一:要求高 + 有预算

Doc2XLlamaParse

商用方案就是好,尤其是复杂表格和混合排版。如果文档以中文为主,优先 Doc2X。

场景二:想本地免费跑

MinerU(中文为主)或 Marker(英文为主)

开源方案里质量最好的两个。有 GPU 跑起来效果不输商用。MinerU 对中文学术论文、研报之类的效果特别好。

场景三:只是简单提取文字

PyMuPDF

快得飞起,几秒搞定。如果你的文档排版简单,用它就够了。搭配正则提取特定内容,效率最高。

场景四:在搭 RAG 管道

Unstructured

和 LangChain、LlamaIndex 集成好,生态最完善。默认策略一般,但 hi_res 模式 + 后处理可以达到不错的效果。

踩坑总结

  1. 别信 demo:很多工具的 demo 用的是精心挑选的文档,换你自己的文档可能效果差很远。一定要用自己的真实数据测。

  2. 扫描件是另一个世界:原生 PDF 和扫描件完全是两回事。扫描件需要先 OCR,然后再做版面分析。不要拿扫描件的效果去评价一个原生 PDF 解析工具。

  3. 表格是永远的痛:说实话,没有任何方案能 100% 还原复杂表格。如果你的业务核心是表格数据,建议多方案对比 + 人工抽检。

  4. 后处理很重要:任何工具的原始输出都需要后处理。去重复段落、合并跨页内容、清理特殊字符……这些"脏活"往往决定了最终效果。

  5. 别追求一个工具解决所有问题:实际项目中,组合使用效果更好。比如用 PyMuPDF 做快速预处理,遇到复杂页面再调 Marker/MinerU。

最后

文档解析看着不起眼,但它是整个 RAG 管道的地基。地基不稳,后面做得再花哨也没用。

希望这篇评测能帮你选到合适的工具。如果你在搭建 RAG 系统遇到了文档解析的问题,欢迎评论区交流。


本文基于实际项目经验,评测数据来自真实中英文文档测试。工具版本截至 2026 年 2 月。