
OCRFlux:一个基于LLM的复杂布局与跨页合并的PDF文档解析 原创
在数字化办公和信息处理的浪潮中,文档解析技术一直是关键的幕后英雄。无论是学术研究、金融分析,还是日常办公,我们都需要将纸质文档或PDF文件中的内容高效、准确地转化为可编辑、可理解的格式。然而,现有的文档解析工具虽然众多,却仍存在诸多痛点。今天,我们要介绍的OCRFlux,正是为了解决这些问题而生。
一、现有文档解析工具的局限性
现有的文档解析工具虽然吸引了众多用户,但在实际使用中,它们的局限性也逐渐暴露出来。首先,对于复杂布局的页面和结构复杂的表格,现有方法常常力不从心。例如,当表格中存在跨行或跨列的单元格时,解析后的输出往往不完整且错位。其次,PDF文档通常以分页形式呈现,这导致表格或段落可能被分割到连续的两页上,但现有的工具却无法处理跨页的段落和表格合并,它们只是简单地将每一页的内容拼接起来,完全忽略了逻辑上的连贯性,从而导致表格和段落的碎片化。此外,许多最先进的工具依赖于拥有超过70亿参数的模型,这使得它们在推理效率和部署效率上受到极大限制。
二、OCRFlux的创新与优势
为了克服上述问题,OCRFlux应运而生。它是一个基于多模态大型语言模型的工具包,旨在将PDF和图像转换为清晰、可读的纯Markdown文本,并将当前的技术水平提升到一个全新的高度。OCRFlux具有以下关键特性,使其在众多工具中脱颖而出。
(一)单页解析的卓越品质
在单页解析方面,OCRFlux表现出色。与现有的基准模型olmOCR-7B-0225-preview、Nanonets-OCR-s和MonkeyOCR相比,它在我们发布的基准测试OCRFlux-bench-single上分别实现了0.095(从0.872到0.967)、0.109(从0.858到0.967)和0.187(从0.780到0.967)的更高编辑距离相似性(EDS)。这些改进主要来自于对复杂表格的高质量解析,尤其是在需要跨行和跨列合并单元格的情况下。具体细节可以参考我们的评估和交互式比较部分。
(二)原生支持多页文档解析
与现有工具简单地按页拼接内容不同,据我们所知,OCRFlux是第一个能够自动检测并合并跨页元素以产生连贯文档结构的文档解析工具。在我们的基准测试中,它以98.3%的高准确率实现了这一点。它甚至能够在页面分割的情况下重建完整的表格,即使在诸如表头重复、多行单元格分割和表格垂直分割等复杂场景中也是如此。我们在交互式比较部分提供了一些真实世界的跨页表格。此外,实验表明,在我们的基准测试中,参考表格和重建表格之间的树编辑距离相似性(TEDS)得分平均达到0.950。更多详情请参考我们的评估部分。
(三)高效率与紧凑模型尺寸
OCRFlux仅包含30亿参数,这使其在实现更好性能的同时具有极高的效率。与70亿参数的基准模型相比,OCRFlux在GTX 3090 GPU上实现了约3倍的更高吞吐量,从而在实际应用中,尤其是在计算资源有限的情况下,能够实现更快的推理和更广泛的应用。
三、OCRFlux的交互式比较
(一)单页解析
- 列跨表与合并单元格:当表格单元格跨越多列时,确定单元格边界和关系变得十分困难。跨行或跨列合并的单元格模糊了底层结构,导致识别单个单元格及其内容时出现歧义。OCRFlux能够精确地恢复它们,因为它在训练数据中使用HTML格式来表示表格,这自然支持表示复杂表格。
- 多栏布局:具有多栏的文档会破坏典型的从左到右的阅读顺序,需要复杂的算法来重建跨栏的文本元素之间的正确顺序和关系。OCRFlux能够准确识别多栏布局,并将其转换为具有自然阅读顺序的清晰Markdown。
- 多表:单页上的多个表格增加了表格检测和解析的复杂性,要求系统能够区分不同的表格并正确地对每个表格进行分割。OCRFlux的整文件解析能力在解析过程中通过识别和分离它们来有效处理多个表格。
- 多语言:处理同一文档中的不同语言需要强大的语言识别和处理能力,因为不同书写系统的特性可能差异很大。OCRFlux支持解析包含混合英语和中文内容的文档。
(二)跨页段落/表格合并
- 跨越三页的表格:标准的PDF分页通常会将表格分割到不同的页面上,这使得OCR系统难以准确地重建它们。OCRFlux通过自动检测和合并碎片化的表格元素并匹配其表头,从而实现了无缝且准确的输出。
- 表格垂直分割:具有众多列的表格通常会垂直分割到多个页面上,这给理解和准确地重新连接逻辑上相关的片段带来了挑战。OCRFlux通过其先进的跨页表格合并能力有效地解决了这一问题。
- 表头重复:当表格跨越多个页面时,表头通常会在每一页上重复,这可能会混淆OCR系统并导致误解。OCRFlux通过无缝合并跨页内容,删除多余的表头,同时保留必要的表格数据来解决这一问题。
- 多行单元格分割:内容较多的单元格可能会跨越多个页面,这给正确合并这些碎片化的行以保持数据完整性带来了挑战。OCRFlux有效地确保了完整的、准确的单元格内容在最终输出中得以保留。
四、构建OCRFlux
(一)单页解析训练
为了确保OCRFlux-3B模型在单页解析方面的高质量,我们使用我们的私有文档数据集来训练模型。这些数据集包含大约110万页,主要来自金融和学术文件。它们都经过多轮人工标注和检查,以确保标注质量。此外,我们还使用了公共olmOCR-mix-0225数据集中的部分数据(约25万页)。特别地,我们发现GPT-4o在包含表格的页面上的真实标签质量较差,因此我们在训练中过滤掉了它们。
与olmOCR等先前的工作不同,我们的模型仅使用页面图像作为输入,而不是任何元数据,如文本块及其位置。这一决定与RolmOCR中的决策一致。这不会损害我们模型的准确性,反而会显著减少提示长度,从而降低处理时间和内存消耗。此外,它还可以避免因损坏的元数据或OCR结果(如错误读取的字符、错误的阅读顺序和内容缺失)而可能引起的潜在错误。
由于Markdown本身无法自然地表示具有rowspan和colspan单元格的复杂表格,我们在训练数据中使用HTML格式来表示表格。表格解析的示例可以在交互式比较部分找到。
(二)跨页段落/表格合并训练
PDF文档通常以分页形式呈现,这常常导致表格或段落被分割到连续的页面上。准确地检测并合并这些跨页结构对于避免生成不完整或碎片化的内容至关重要。
检测任务可以表述如下:给定两个连续页面的Markdowns——每个都结构化为Markdown元素(例如,段落和表格)的列表——目标是识别出应该跨页合并的元素的索引。
然后对于合并任务,如果要合并的元素是段落,我们可以简单地将它们连接起来。然而,对于两个表格片段,它们的合并要复杂得多。详细的示例可以参考交互式比较部分。
为了训练模型执行检测和合并任务,我们在训练中使用了大约45万份样本用于检测任务,10万份样本用于合并任务。它们都来自我们的私有数据集。
我们没有分别训练单页解析和跨页合并任务,而是将它们一起在同一个多模态LLM中联合训练,使用不同的提示。这有助于将这两种能力整合到一个单一模型中,使其在推理时更加强大和高效。
五、评估
(一)单页解析评估
在单页解析评估中,我们将OCRFlux-3B模型与olmOCR-7B-0225-preview和Nanonets-OCR-s作为基线进行比较。我们使用了两个基准测试:
- OCRFlux-bench-single:包含2000个PDF页面(1000个英文页面和1000个中文页面)及其真实Markdowns(经过多轮人工标注和检查)。
- OCRFlux-pubtabnet-single:从公共PubTabNet基准测试中衍生而来,经过一些格式转换。它包含9064个HTML表格样本,根据它们是否具有rowspan和colspan单元格,被分为简单表格和复杂表格。
我们强调,发布的基准测试数据并未包含在我们的训练和评估数据中。以下是主要结果:
在OCRFlux-bench-single中,我们计算生成的Markdowns与真实Markdowns之间的编辑距离相似性(SED)作为评估指标。
语言 | 模型 | 平均EDS↑ |
英语 | olmOCR-7B-0225-preview | 0.885 |
Nanonets-OCR-s | 0.870 | |
MonkeyOCR | 0.828 | |
OCRFlux-3B | 0.971 | |
中文 | olmOCR-7B-0225-preview | 0.859 |
Nanonets-OCR-s | 0.846 | |
MonkeyOCR | 0.731 | |
OCRFlux-3B | 0.962 | |
总计 | olmOCR-7B-0225-preview | 0.872 |
Nanonets-OCR-s | 0.858 | |
MonkeyOCR | 0.780 | |
OCRFlux-3B | 0.967 |
在OCRFlux-pubtabnet-single中,我们计算生成的HTML表格与真实HTML表格之间的基于树编辑距离的相似性(TEDS)作为评估指标。
类型 | 模型 | 平均TEDS↑ |
简单 | olmOCR-7B-0225-preview | 0.810 |
Nanonets-OCR-s | 0.882 | |
MonkeyOCR | 0.880 | |
OCRFlux-3B | 0.912 | |
复杂 | olmOCR-7B-0225-preview | 0.676 |
Nanonets-OCR-s | 0.772 | |
MonkeyOCR | 0.826 | |
OCRFlux-3B | 0.807 | |
总计 | olmOCR-7B-0225-preview | 0.744 |
Nanonets-OCR-s | 0.828 | |
MonkeyOCR | 0.853 | |
OCRFlux-3B | 0.861 |
您可以在交互式比较部分查看olmOCR-7B-0225-preview和OCRFlux-3B输出的比较示例。
(二)跨页段落/表格合并评估
在跨页段落/表格合并评估中,由于olmOCR-7B-0225-preview和Nanonets-OCR-s没有相应的功能,我们仅报告OCRFlux-3B的结果。我们同样使用了两个基准测试:
- OCRFlux-bench-cross:包含1000个样本(500个英文样本和500个中文样本),每个样本包含两个连续页面的Markdown元素列表,以及需要合并的元素的索引(经过多轮人工检查后标注)。如果没有表格或段落需要合并,则注释数据中的索引为空。
- OCRFlux-pubtabnet-cross:包含9064对分割的表格片段,以及它们对应的合并后的版本。
发布的基准测试数据同样未包含在我们的训练和评估数据中。以下是主要结果:
在OCRFlux-bench-cross中,我们计算了准确率、精确率、召回率和F1分数作为评估指标。注意,只有当它准确判断出两个页面之间是否有需要合并的元素并输出正确的索引时,检测结果才算正确。
语言 | 精确率↑ | 召回率↑ | F1↑ | 准确率↑ |
英语 | 0.992 | 0.964 | 0.978 | 0.978 |
中文 | 1.000 | 0.988 | 0.994 | 0.994 |
总计 | 0.996 | 0.976 | 0.986 | 0.986 |
在OCRFlux-pubtabnet-cross中,我们计算生成的合并表格与真实合并表格之间的基于树编辑距离的相似性(TEDS)作为评估指标。
表格类型 | 平均TEDS↑ |
简单 | 0.965 |
复杂 | 0.935 |
总计 | 0.950 |
您也可以在交互式比较部分查看我们OCRFlux-3B模型的跨页段落/表格合并示例。
六、获取OCRFlux
OCRFlux的首次发布包括演示、模型权重、我们的基准测试、博客文章,最重要的是,一个高效的推理管道。
访问我们的GitHub仓库以安装olmOCR并探索文档。然后,在带有GPU的机器上,只需运行以下命令:
python -m ocrflux.pipeline ./localworkspace --data test.pdf --model /model_dir/OCRFlux-3B
OCRFlux的出现,无疑为文档解析领域带来了新的曙光。它不仅解决了现有工具在复杂布局和跨页合并方面的不足,还以更高效的模型尺寸和出色的性能,为用户提供了更优质的选择。无论是学术研究、金融分析,还是日常办公,OCRFlux都能帮助你更高效地处理文档,释放更多时间和精力去专注于核心任务。赶快去GitHub体验一下吧,让OCRFlux成为你文档处理的得力助手!
本文转载自Halo咯咯 作者:基咯咯
