2024 年 12 款开源文档解析框架的选型对比评测:PDF解析、OCR识别功能解读、应用场景分析及优缺点比较
这是该系列的第二篇文章,聚焦于智能文档处理(特别是 PDF 解析)。无论是在模型预训练的数据收集阶段,还是基于 RAG 的知识库构建阶段,大量高质量数据通常以 PDF 或扫描图像的形式出现。由于这些文件的排版多样、格式不一以及扫描质量参差不齐,利用这些数据极具挑战。主要难点在于:一是有效提取内容信息和版面信息(如正文、标题、图注、图片、表格、公式等);二是处理版面元素之间的关系。鉴于此领域的巨大需求,市场上既有开源框架,也不乏商业解决方案,涵盖了从传统 OCR 识别到新型多模态大模型,甚至两者的结合,本篇文章就对他们进行盘点并做功能解读,优缺点比较,应用场景推荐。
如果觉得内容不错,欢迎关注,分享和在看~
文档智能一直是学术研究的重要课题和工业界的痛点需求,它涉及对网页、数字文档及扫描文档中的文本和排版信息的理解、分类、提取及信息归纳。文档布局和格式的多样性、低质量的扫描图像以及模板结构的复杂性,给文档智能带来了许多挑战,自动、精确、快速的信息处理对于提升生产力至关重要,自大模型技术爆发以来,文档和图像等载体的结构化分析与内容提取成为了企业进行 LLM 落地的关键因素之一,在金融领域,文档智能可用于财报分析和智能决策支持;在医疗领域,它可以实现病例的数字化,提高诊断精度,并通过分析医学文献和病例的关联性,提出潜在的治疗方案;在财务领域,它可以实现发票和采购单的自动化信息提取,大幅降低人工处理的时间成本。关于文档智能详细的演进历史,可以阅读微软亚洲研究院这篇综述《文档智能:数据集、模型和应用》
常规工作流
无论是厂商提供的智能文档识别与处理服务,还是日常遇到的 PDF 内容提取和影像扫描件识别,其背后的技术核心都是文档智能,这里快速梳理下文档智能处理流程中的关键环节及关键技术,以便更好地理解随后对 12 款开源 PDF 工具和 5 家智能文档处理服务的对比分析,这些方案大致可分为两类:一是较为成熟、适用范围广的常规工作流方案;二是尚处于探索阶段、应用场景有限的基于多模态模型的端到端解决方案。
首先看常规的处理流程,通常涉及以下几个步骤:
文档预处理:预处理措施可能包括去噪、校正倾斜、二值化和增强对比度等,这一步是为了提升(图像)文档的质量,以确保后续分析和识别的准确性。
物理版面分析:使用基于回归的单阶段检测模型(如 Faster R-CNN、YOLO 等)检测文档中的物理布局元素(如栏、章节等),通过分析图像中的空白区域、边界和文本密度等特征,识别出标题、段落、图片和表格等不同区域。
文本区域分析:进一步分析检测到的文本区域,识别单词、行和段落,这可能涉及文本行提取和字符分割等子任务。
内容识别:应用 OCR 和表格解析等技术,提取表格、公式、文字等内容。
逻辑版面:通过语义分析理解文档的结构和层次关系,将文本块组织成段落、列表等语义单元。

数据输出:将分析结果以 HTML、JSON 等格式输出,便于后续处理和应用。
内容识别
内容识别是版面分析流程的后续步骤,版面分析关注的是文档的整体布局和结构,而关注的是文档中具体内容的识别,主要包括三种场景,即表格解析、公式识别和文字提取。
表格解析
表格结构识别是在完成表格区域检测后进行的任务,旨在解析表格的布局和层次结构,将视觉信息转化为可用于重建表格的结构描述。这些描述信息涵盖单元格的确切位置、单元格间的关系及单元格的行、列定位。目前,表格结构信息主要采用两种描述方式:1)单元格列表(包括每个单元格的位置、行列表信息及内容);2)HTML 或 LaTeX 代码(除了单元格的位置,有时还包括内容)。实际应用中,表格类型多样,结构各异。根据表头的位置,表格大致可分为四类:
垂直表格:首行为表头,其余行为垂直排列的数据,是最基础的表格形式。
水平表格:首列为行表头,其余列为水平排列的数据,常见于维基百科中的人物信息记录。
层级表格:表头具有层级结构,表格中包含合并单元格,常见于统计报告和学术论文,此类表格可能同时具有行表头和列表头的层级结构。
复杂表格:表头不仅限于表格的左侧或顶部,还可以出现在任意位置,甚至与常规数据混杂,如专业设备手册、政府登记表和公司面试申请表中常见的形式。

公式识别
公式识别用于将图像中的数学公式转换为 LaTeX、MathML 等格式,确保其在文档中正确显示和编辑,但在自动阅卷、数字图书馆建设和办公自动化等场景中,手写数学公式的识别仍面临挑战,主要因为这些公式具有复杂的二维结构、多样的书写风格和手写符号的歧义性,具体来说,手写数学公式的识别难度体现在以下几个方面:
复杂的二维结构,如分式、上下标和根号等;
多样化的书写风格,不同人书写同一符号可能存在差异;
手写符号的歧义性,某些符号在手写时容易混淆。
文字提取
这里需要重点说下 OCR 识别,OCR(Optical Character Recognition、光学字符识别)用于将图像中的文字内容识别并转换为可编辑的文本格式,文字识别是 OCR 技术的核心应用场景之一。广州软件应用技术研究院发布了一份关于 12 款开源 OCR 工具(包括PaddleOCR、RapidOCR、读光、ChineseOCR、EasyOCR、Tesseract、OcrLiteOnnx、Surya、docTR、JavaOCR以及文档分析组件RagFlow和Unstructured)的文字识别性能评估报告。评估覆盖了五个关键场景:印刷中文、印刷英文、手写中文、复杂自然场景和变形字体。该评估的数据集在数量和多样性方面(见下图)很有说服力,而且时间很新(2024 年 6 月),具有较高的参考价值。可以在公众号「莫尔索随笔」后台获取回复「文档解析」获取完整的评估报告,对你进行技术选型和设计符合自己场景的测试数据集很有帮助。

多模态模型端到端
基于多模态大模型(如面壁智能的 MiniCPM-V 2.6)的端到端解决方案较为直接,通过设计特定的提示词,能够直接从图片文档中提取和分析信息,输出结构化的数据。尽管开源社区已有许多相关项目,但是远远还不成熟,后面我会详细介绍。针对多模态模型,已有一个名为 OCR 任务测评基准(OCRBench
2
)的评估工具,该工具涵盖了文本识别、场景文本为中心的视觉问答(VQA)、文档导向的 VQA、关键信息提取(KIE)以及手写数学公式识别(HMER)等测试维度。多模态模型在传统的文本任务上表现出色,但在处理缺乏语义上下文的文本、手写文本、多语言文本及高分辨率输入图像方面存在不足。
开源框架
了解完核心能力,接下来就可以对开源的 12 款文档解析框架了进行比较了,首先我会快速介绍下每款工具,最后用一个表格直观展示每个框架具备的能力,不想看介绍的可以直接翻到总结部分查看。
常规流程
1. MinerU
3
MinerU 放在第一个,因为这个项目完成度特别高。作为由上海人工智能实验室大模型数据基座团队(OpenDataLab)开发的开源数据提取工具,MinerU 专精于从复杂的 PDF 文档、网页和电子书中高效提取内容。它能去除文档中的页眉、页脚、脚注和页码等非文本元素,确保提取内容的语义连贯性。该工具支持单栏、多栏及复杂排版的文本提取,并能保留原文档的结构,如标题、段落和列表等。此外,MinerU 还能提取图像、图片描述、表格、表格标题和脚注。对于文档中的数学公式,MinerU 可以自动识别并转换为 LaTeX 格式,同时将表格转换为 HTML 格式。对于扫描版 PDF 和乱码 PDF,MinerU 配备了 OCR 功能,支持 84 种语言的检测与识别,输出格式多样,包括 Markdown 和 JSON。
然而,MinerU 不支持垂直文字的处理。目录和列表依赖规则识别,少数不常见的列表类型可能无法被正确识别。仅支持一级标题,不支持多级标题。漫画书、艺术图册、小学教材和习题集目前无法准确解析。在处理复杂表格时可能出现行列错误。小语种 PDF 的 OCR 识别可能无法准确识别特殊字符,例如拉丁文重音符号或阿拉伯文中的易混淆字符。某些数学公式可能无法在 Markdown 中正确显示。
尽管存在上述限制,但我依旧很推荐这个项目,其 PDF 解析功能已被拆分为独立项目 PDF-Extract-Kit
4
,通过它可以深入了解文档处理流程的具体实现,包括表格解析方法和版面分析模型的设计。此外,OpenDataLab 团队还分享了一份关于 MinerU 的 PPT,链接在此
5
,其中包含了许多有价值的见解,特别是关于网页内容采集和 PDF 解析的系统性思考。
2. PaddleOCR
6
PaddleOCR 放在第二个,生态繁荣,影响力巨大,延伸的项目特别多,OCR 话题基本绕不过它,上面的 PDF-Extract-Kit 就在用。PaddleOCR 是一个基于 PaddlePaddle(飞桨) 深度学习框架开发的开源多语言 OCR 工具包,为开发者提供丰富实用的 OCR 解决方案,帮助训练更优质的模型并应用于实际场景。PaddleOCR 提供了一系列功能模型,涵盖文本图像智能分析、通用 OCR、版面解析、表格识别及印章文字识别等。此外,还支持以下高级功能:
文档场景信息抽取
7
%28PP-ChatOCRv3-doc%29:用于从文档中提取关键信息。
高精度版面区域检测模型
8
(基于 RT-DETR):适用于需要高精度检测的应用。
高效率版面区域检测模型
9
(基于 PicoDet):适用于对处理速度有较高要求的场景。
高精度表格结构识别模型
10
SLANet_Plus:能够准确识别表格的结构。
文本图像矫正模型
11
UVDoc:用于校正扭曲的文本图像。
公式识别模型
12
LatexOCR:能够识别并转换数学公式。
文档图像方向分类模型
13
(基于 PP-LCNet):用于确定文档图像的方向。
3. Marker
14
Marker 用于将 PDF 文件快速且准确地转换成 Markdown、JSON 和 HTML 格式,也有对应的商业化服务 Datalab
15
,包含特性如下:
页面布局检测:利用 Surya 模型检测页面布局,确定文本的阅读顺序。
内容清洗与格式化:采用 heuristics、texify 和 tabled 模型对文本进行清洗和格式化,确保表格、代码块等元素的结构清晰。
文本提取:除了使用常规 PDF 解析方式,还使用 OCR 技术(如 heuristics 和 Surya 模型)识别图像中的文本。
公式图片处理:提取 PDF 中的图片,并将公式转换为 LaTeX 格式。
Marker 的核心是开源的Surya
16
,它是一个支持 90 多种语言的文档 OCR 工具包,提供文本检测、布局分析、阅读顺序和表格识别等功能,具体的能力详情前面的开源 OCR 工具评测报告有详细介绍,可自行阅读。
4. Unstructured
17
Unstructured 是一个开源库和 API 套件,旨在构建自定义数据预处理管道。它主要用于机器学习任务中的数据提取、转换和加载(ETL)过程,支持 PDF、图像等多种文档格式,帮助开发者从非结构化数据中提取结构化信息,以用于标注、训练或生产环境中的机器学习模型。该项目的创始人在此基础上构建企业级数据预处理工具,提供商业服务,已融资 2500 万美元。
多模态模型
5. gptpdf
18
想法很不错,这是我看到的第一个使用多模态模型做 PDF 处理的,虽然已经不维护了,但我还是放在这里,几百行代码,使用 GPT-4o 解析 PDF 文件。首先利用 PyMuPDF 库分析 PDF 文件,识别并标记出所有非文本区域,例如图表和图片,接着使用 GPT-4o 来处理这些标记过的非文本区域,向模型提供适当的提示词,指导其将这些区域内容转换为 Markdown 格式。
DEFAULT_PROMPT = """使用 markdown 语法,将图片中识别到的文字转换为 markdown 格式输出。你必须做到: 1. 输出和使用识别到的图片的相同的语言,例如,识别到英语的字段,输出的内容必须是英语。2. 不要解释和输出无关的文字,直接输出图片中的内容。例如,严禁输出 "以下是我根据图片内容生成的 markdown 文本:"这样的例子,而是应该直接输出 markdown。3. 内容不要包含在markdown
中、段落公式使用 的形式、行内公式使用 的形式、忽略掉长直线、忽略掉页码。 再次强调,不要解释和输出无关的文字,直接输出图片中的内容。 """ DEFAULT_RECT_PROMPT = """图片中用红色框和名称%28%s%29标注出了一些区域。 如果区域是表格或者图片,使用 %21[]%28%29 的形式插入到输出内容中,否则直接输出文字内容。 """ DEFAULT_ROLE_PROMPT = """你是一个 PDF 文档解析器,使用 markdown 和 latex 语法输出图片的内容。 """
6. Zerox
19
Zerox 首先将 PDF、 Docx 等格式转换为一系列图像,这一步使用graphicsmagick和ghostscript等工具来处理 PDF 文件。对于 Docx 格式使用libreoffice等工具将其先转换为 PDF,然后再进行图像转换。将转换得到的图像传递给多模态模型,下面的步骤就和在 gptpdf 的思路上一致了,将模型返回的每个页面的 Markdown 文本聚合起来,形成完整的 Markdown 文档。顺便一提,项目创始人也基于此推出了OmniAI
20
产品,用于将多种类型的文档转换为结构化数据,融资 320 万美元。
结合方案
7. Chunkr
21
Chunkr 可以将 PDF、PPT、Docx 和 Excel 等格式的文件转换成结构化数据,它通过使用 11 种语义标签(结合多模态模型)进行文档的布局分析,支持 OCR 技术提取文本内容,并能够生成包含边框信息的结构化输出,如 HTML 和 Markdown 格式,开源这个项目的公司叫 Lumina
22
,也是做 AI 搜索引擎的,拿了 YC 投资。
8. pdf-extract-api
23
pdf-extract-api 用于将图片和 PDF 文档转换为 Markdown 或 JSON 格式,支持多种 OCR 策略,包括 surya、llama_vision(多模态模型) 和 tesseract,此外,它还集成了 LLM(如 LLama 3.1)来改善 OCR 文本的质量。
9. Sparrow
24
Sparrow 项目用于从各种文档和图像中高效提取和处理数据,包括表格、银行对账单、发票、收据等非结构化数据源,具有模块化架构,包括多个组件,其中 Sparrow Parse 支持使用多模态模型进行数据提取,Sparrow OCR 使用 OCR 技术进行字符识别,Sparrow 只擅长处理常见的形式化文档。
其他
题目提到 12 个开源的项目,怎么只罗列了 9 种呢,别急,其余 3 种已在系列第一篇关于 RAG 框架的介绍
RAGFlow 开源的DeepDoc
26
以及 Quivr 开源的MegaParse
27
,这些组件不仅提供了文档解析功能,还处理了内容分块的步骤,是构建高效 RAG 框架不可或缺的一部分,这里不再赘述。
总结
划重点的部分来了!
PDF、DOCX、Excel 和 PPT 四种文档格式均有对应的解析器,其中 PDF 的解析最为复杂,因此常被用作评估文档解析能力的基准。尽管有许多优秀的开源项目,但在处理复杂表格和公式识别时,它们大多表现不佳。例如,当公式嵌入到上下文页面中时,具备布局分析能力的框架往往会出现大量识别错误。此外,这些项目还存在各自的局限性:gptpdf、PaddleOCR 缺乏必要的后处理步骤;Marker 支持的语言种类有限,Figure 处理不够完善;MinerU 消耗较多的计算资源等。大多数项目转换后的格式支持 Markdown 和 HTML,以便于 LLM 理解和处理。不过不支持 HTML 输出的项目可以确定是无法解析较为复杂的表格,因为标准 Markdown 语法仅适用于简单的表格结构,而复杂的表格则需借助 HTML 表格或其他文档格式(如 LaTeX、AsciiDoc、ReStructuredText)来实现。
文件解析是一个不断优化的过程,针对不同格式和复杂性的文件,需要持续探索和调整解决方案,在处理 PDF 文件时,数字签名、扫描件、影印件及复杂表格的解析均属特殊情形,需采取专门的方法,这个领域仍有许多机会,欢迎有兴趣合作的朋友后台联系我交流咨询。
智能文档处理服务
鉴于开源项目在处理复杂表格和公式方面过于拉垮,我进一步测试了 5 家收费的智能文档处理服务,发现其性能确实更出色些,果然是贵有贵的道理。比如下面这个复杂合并单元格(关于更多带复杂表格和公式的文档测试数据,可以在公众号「莫尔索随笔」后台获取回复「文档解析」获取,相信对你进行厂商选择和设计符合自己场景的测试数据集很有帮助)
TextIn
28
TextIn 是合合信息推出的通用文档解析服务,它能够识别文档或图片中的文字信息,并将文档内容解析为 HTML 格式,保持常见的阅读顺序。该服务在表格识别方面具有高精度,能够处理有线表、无线表、密集表格,以及单元格合并和跨页表格合并。解析速度极快,100 页长文档最快仅需 1.5 秒,同时支持在线和离线批量处理。TextIn ParseX 支持多种文档格式,包括 PDF、Word、HTML 等,并且能够一次性获取文字、表格、标题层级、公式、手写字符、图片信息。TextIn 解析正确,但表格内内容区分度不明显。
PDFlux
29\] PDFlux 是专为 PDF 文档设计的数据提取工具,实现对 PDF 或图片中的表格和文字内容的智能识别和提取。在内容识别方面,PDFlux 能够智能识别 PDF 或图片中的表格和文字内容,支持无线表格识别、复杂排版精确提取、自动扶正歪斜表格、去除印章干扰、智能合并跨页表格以及一键去除空格换行等功能。在格式转换方面,PDFlux 支持将 PDF 转换为 Word、Excel、HTML 等多种格式,方便用户编辑和移动端阅读,同时保留文档的章节目录结构。PDFlux 的识别结果丢失了表格标题。 ### Mathpix \[30
通过 OCR 技术识别公式,可以快速准确地将数学公式截图和手写公式转换为 LaTeX 格式,无论是行间公式还是行内公式都可以准确识别,支持多国语言;可以识别图片或 pdf 文件中的表格,并输出 TSV(制表符分隔值)格式,可以直接将 pdf 转换为 LaTeX、Word、HTML 等格式,沉浸式翻译、Anthropic、谷歌 Bard 等都调用了它的服务。Mathpix 识别正确,但没有合并单元格。

Doc2x
31
上传 PDF 或图片,精准公式识别和表格识别,一键高效转换为 Word、LaTeX、HTML、Markdown 等多种格式,Doc2x 识别正确 ,内容使用空格区分。
百度智能云办公文档识别服务
32
大厂产品就首先试了下百度的,内容对,但丢失表格结构,直接放弃,其他家的就没再继续试了。
写在最后
以后再看到新的和文档解析相关开源项目时,可以通过以下技巧快速判断其是否具有实质性创新:首先检查项目是否沿用了传统的 OCR 流程;其次,观察表格识别和版面分析模型是自主研发的还是基于 PaddleOCR 等开源工具,如果这些方面有所创新,那么该项目值得深入研究。若计划在实际产品中应用相关技术,本着对用户负责的态度,优先考虑商业化的智能文档处理服务(商业化的智能文档处理服务,主要关注三个维度,快、准、稳,(表格、公式)识别精准、解析速度快、稳定性好),对于包含大量表格和公式的文档,我推荐如下选择:英文上下文中的公式识别首选 Mathpix;中文上下文中的公式识别则应选择 Doc2X;而面对复杂的表格,则 PDFlux 或 TextIn 更为可靠。如果你要自建一套文档解析解决方案,基于 MinerU 去搭建,针对无法处理的特定场景利用 PaddleOCR 工具包训练相应的模型。