微信扫码
与创始人交个朋友
我要投稿
这是该系列的第二篇文章,聚焦于智能文档处理(特别是 PDF 解析)。无论是在模型预训练的数据收集阶段,还是基于 RAG 的知识库构建阶段,大量高质量数据通常以 PDF 或扫描图像的形式出现。由于这些文件的排版多样、格式不一以及扫描质量参差不齐,利用这些数据极具挑战。主要难点在于:一是有效提取内容信息和版面信息(如正文、标题、图注、图片、表格、公式等);二是处理版面元素之间的关系。鉴于此领域的巨大需求,市场上既有开源框架,也不乏商业解决方案,涵盖了从传统 OCR 识别到新型多模态大模型,甚至两者的结合,本篇文章就对他们进行盘点并做功能解读,优缺点比较,应用场景推荐。
如果觉得内容不错,欢迎关注,分享和在看~
文档智能一直是学术研究的重要课题和工业界的痛点需求,它涉及对网页、数字文档及扫描文档中的文本和排版信息的理解、分类、提取及信息归纳。文档布局和格式的多样性、低质量的扫描图像以及模板结构的复杂性,给文档智能带来了许多挑战,自动、精确、快速的信息处理对于提升生产力至关重要,自大模型技术爆发以来,文档和图像等载体的结构化分析与内容提取成为了企业进行 LLM 落地的关键因素之一,在金融领域,文档智能可用于财报分析和智能决策支持;在医疗领域,它可以实现病例的数字化,提高诊断精度,并通过分析医学文献和病例的关联性,提出潜在的治疗方案;在财务领域,它可以实现发票和采购单的自动化信息提取,大幅降低人工处理的时间成本。关于文档智能详细的演进历史,可以阅读微软亚洲研究院这篇综述《文档智能:数据集、模型和应用》[1]。
无论是厂商提供的智能文档识别与处理服务,还是日常遇到的 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 款文档解析框架了进行比较了,首先我会快速介绍下每款工具,最后用一个表格直观展示每个框架具备的能力,不想看介绍的可以直接翻到总结部分查看。
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 解析的系统性思考。
PaddleOCR 放在第二个,生态繁荣,影响力巨大,延伸的项目特别多,OCR 话题基本绕不过它,上面的 PDF-Extract-Kit 就在用。PaddleOCR 是一个基于 PaddlePaddle(飞桨) 深度学习框架开发的开源多语言 OCR 工具包,为开发者提供丰富实用的 OCR 解决方案,帮助训练更优质的模型并应用于实际场景。PaddleOCR 提供了一系列功能模型,涵盖文本图像智能分析、通用 OCR、版面解析、表格识别及印章文字识别等。此外,还支持以下高级功能:
Marker 用于将 PDF 文件快速且准确地转换成 Markdown、JSON 和 HTML 格式,也有对应的商业化服务 Datalab[15],包含特性如下:
Marker 的核心是开源的Surya[16],它是一个支持 90 多种语言的文档 OCR 工具包,提供文本检测、布局分析、阅读顺序和表格识别等功能,具体的能力详情前面的开源 OCR 工具评测报告有详细介绍,可自行阅读。
Unstructured 是一个开源库和 API 套件,旨在构建自定义数据预处理管道。它主要用于机器学习任务中的数据提取、转换和加载(ETL)过程,支持 PDF、图像等多种文档格式,帮助开发者从非结构化数据中提取结构化信息,以用于标注、训练或生产环境中的机器学习模型。该项目的创始人在此基础上构建企业级数据预处理工具,提供商业服务,已融资 2500 万美元。
想法很不错,这是我看到的第一个使用多模态模型做 PDF 处理的,虽然已经不维护了,但我还是放在这里,几百行代码,使用 GPT-4o 解析 PDF 文件。首先利用 PyMuPDF 库分析 PDF 文件,识别并标记出所有非文本区域,例如图表和图片,接着使用 GPT-4o 来处理这些标记过的非文本区域,向模型提供适当的提示词,指导其将这些区域内容转换为 Markdown 格式。
DEFAULT_PROMPT = """使用 markdown 语法,将图片中识别到的文字转换为 markdown 格式输出。你必须做到:
1. 输出和使用识别到的图片的相同的语言,例如,识别到英语的字段,输出的内容必须是英语。
2. 不要解释和输出无关的文字,直接输出图片中的内容。例如,严禁输出 “以下是我根据图片内容生成的 markdown 文本:”这样的例子,而是应该直接输出 markdown。
3. 内容不要包含在`markdown`中、段落公式使用 $$ $$ 的形式、行内公式使用 $ $ 的形式、忽略掉长直线、忽略掉页码。
再次强调,不要解释和输出无关的文字,直接输出图片中的内容。
"""
DEFAULT_RECT_PROMPT = """图片中用红色框和名称(%s)标注出了一些区域。
如果区域是表格或者图片,使用 ![]() 的形式插入到输出内容中,否则直接输出文字内容。
"""
DEFAULT_ROLE_PROMPT = """你是一个 PDF 文档解析器,使用 markdown 和 latex 语法输出图片的内容。
"""
Zerox 首先将 PDF、 Docx 等格式转换为一系列图像,这一步使用graphicsmagick
和ghostscript
等工具来处理 PDF 文件。对于 Docx 格式使用libreoffice
等工具将其先转换为 PDF,然后再进行图像转换。将转换得到的图像传递给多模态模型,下面的步骤就和在 gptpdf 的思路上一致了,将模型返回的每个页面的 Markdown 文本聚合起来,形成完整的 Markdown 文档。顺便一提,项目创始人也基于此推出了OmniAI[20] 产品,用于将多种类型的文档转换为结构化数据,融资 320 万美元。
Chunkr 可以将 PDF、PPT、Docx 和 Excel 等格式的文件转换成结构化数据,它通过使用 11 种语义标签(结合多模态模型)进行文档的布局分析,支持 OCR 技术提取文本内容,并能够生成包含边框信息的结构化输出,如 HTML 和 Markdown 格式,开源这个项目的公司叫 Lumina[22],也是做 AI 搜索引擎的,拿了 YC 投资。
pdf-extract-api 用于将图片和 PDF 文档转换为 Markdown 或 JSON 格式,支持多种 OCR 策略,包括 surya、llama_vision(多模态模型) 和 tesseract,此外,它还集成了 LLM(如 LLama 3.1)来改善 OCR 文本的质量。
Sparrow 项目用于从各种文档和图像中高效提取和处理数据,包括表格、银行对账单、发票、收据等非结构化数据源,具有模块化架构,包括多个组件,其中 Sparrow Parse 支持使用多模态模型进行数据提取,Sparrow OCR 使用 OCR 技术进行字符识别,Sparrow 只擅长处理常见的形式化文档。
题目提到 12 个开源的项目,怎么只罗列了 9 种呢,别急,其余 3 种已在系列第一篇关于 RAG 框架的介绍[25]、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 是合合信息推出的通用文档解析服务,它能够识别文档或图片中的文字信息,并将文档内容解析为 HTML 格式,保持常见的阅读顺序。该服务在表格识别方面具有高精度,能够处理有线表、无线表、密集表格,以及单元格合并和跨页表格合并。解析速度极快,100 页长文档最快仅需 1.5 秒,同时支持在线和离线批量处理。TextIn ParseX 支持多种文档格式,包括 PDF、Word、HTML 等,并且能够一次性获取文字、表格、标题层级、公式、手写字符、图片信息。TextIn 解析正确,但表格内内容区分度不明显。
PDFlux 是专为 PDF 文档设计的数据提取工具,实现对 PDF 或图片中的表格和文字内容的智能识别和提取。在内容识别方面,PDFlux 能够智能识别 PDF 或图片中的表格和文字内容,支持无线表格识别、复杂排版精确提取、自动扶正歪斜表格、去除印章干扰、智能合并跨页表格以及一键去除空格换行等功能。在格式转换方面,PDFlux 支持将 PDF 转换为 Word、Excel、HTML 等多种格式,方便用户编辑和移动端阅读,同时保留文档的章节目录结构。PDFlux 的识别结果丢失了表格标题。
通过 OCR 技术识别公式,可以快速准确地将数学公式截图和手写公式转换为 LaTeX 格式,无论是行间公式还是行内公式都可以准确识别,支持多国语言;可以识别图片或 pdf 文件中的表格,并输出 TSV(制表符分隔值)格式,可以直接将 pdf 转换为 LaTeX、Word、HTML 等格式,沉浸式翻译、Anthropic、谷歌 Bard 等都调用了它的服务。Mathpix 识别正确,但没有合并单元格。
上传 PDF 或图片,精准公式识别和表格识别,一键高效转换为 Word、LaTeX、HTML、Markdown 等多种格式,Doc2x 识别正确 ,内容使用空格区分。
大厂产品就首先试了下百度的,内容对,但丢失表格结构,直接放弃,其他家的就没再继续试了。
以后再看到新的和文档解析相关开源项目时,可以通过以下技巧快速判断其是否具有实质性创新:首先检查项目是否沿用了传统的 OCR 流程;其次,观察表格识别和版面分析模型是自主研发的还是基于 PaddleOCR 等开源工具,如果这些方面有所创新,那么该项目值得深入研究。若计划在实际产品中应用相关技术,本着对用户负责的态度,优先考虑商业化的智能文档处理服务(商业化的智能文档处理服务,主要关注三个维度,快、准、稳,(表格、公式)识别精准、解析速度快、稳定性好),对于包含大量表格和公式的文档,我推荐如下选择:英文上下文中的公式识别首选 Mathpix;中文上下文中的公式识别则应选择 Doc2X;而面对复杂的表格,则 PDFlux 或 TextIn 更为可靠。如果你要自建一套文档解析解决方案,基于 MinerU 去搭建,针对无法处理的特定场景利用 PaddleOCR 工具包训练相应的模型。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-06
2024-07-25
2024-08-13
2024-06-12
2024-07-11
2024-06-16
2024-07-20
2024-09-20
2024-06-15
2024-06-06
2024-12-20
2024-12-19
2024-11-22
2024-11-19
2024-11-13
2024-11-13
2024-10-07
2024-09-22