解密商业文档信息提取:让电子文档处理工具为我们效力

在现实生活中,我们常常需要将商业文档中的信息转化为结构化的格式,以便后续的系统能够解析和使用。这个过程被称为商业文档信息提取(Business Document Information Extraction,简称BDIE)。BDIE主要包括两个任务:关键信息提取(Key-Information Extraction,简称KIE)和行项目识别(Line Items Recognition,简称LIR)。本文将介绍一种全新的方法,即”检索增强结构化生成”(Retrieval Augmented Structured Generation,简称RASG),用于解决BDIE问题,并在相关基准测试中取得了最先进的成果。

什么是商业文档信息提取?

商业文档信息提取是将非结构化信息(如原始文本、扫描文档等)转化为结构化格式的过程,使其可以被后续的系统解析和使用。其中,关键信息提取的目标是将文档中的信息提取出来,并按照键值对的形式进行格式化。而行项目识别的目标是将信息提取为一系列行项目,其中每个行项目对应表格中的一行,并以列键值对的形式进行格式化。与表格结构识别不同的是,行项目识别不关注列的顺序,只要能够正确地将列映射到预定义的列键即可。

检索增强结构化生成

检索增强结构化生成(RASG)是一种由四个组件组成的方法:检索增强生成(Retrieval Augmented Generation)、监督微调(Supervised Finetuning)、结构化生成(Structured Generation)和结构化提示(Structured Prompting)。这些技术可以提高机器学习模型使用工具的能力,从而改善BDIE任务的性能。

RASG的四个组件是相互关联的:

  1. 检索增强生成允许我们通过在上下文中进行学习,教导预训练模型使用新的工具。
  2. 监督微调提高了提取结果的正确性。
  3. 结构化生成确保模型输出的结果可以被后续的系统解析。
  4. 结构化提示将布局信息融入到提示中,使得文本提示的形式更接近原始文档。

这四个组件在使用开源的7B大型语言模型(LLM)Hermes 2 Pro – Mistral 7B上可以取得最先进的BDIE结果。然而,在使用GPT-3.5模型时,只需要其中的一个子集即可。

监督微调中的注意事项

监督微调的目标是使语言模型既能输出正确的内容,又能输出正确的结构。为了确保模型输出的结果可以被后续系统解析,我们需要将无效标记的概率置零。然而,简单地将监督微调和结构化生成相结合往往会导致结果不佳。主要存在以下两个问题:

  1. 模式与模型不匹配:基于正则表达式的结构化生成算法(如Outlines’ outlines.generate.json模块)在生成过程中隐式地要求严格的键排序。例如,假设我们的模式中”amount”键在”currency”键之前。在使用Outlines时,会在生成”amount”之前屏蔽”currency”的输出。然而,如果模型被微调为在生成”amount”之前生成”currency”,预测准确性就会下降。为了解决这个问题,可以确保监督微调的数据集严格遵循指定的模式,或者使用基于上下文无关文法的结构化生成算法(例如Outlines’ outlines.generate.cfg模块),它不要求严格的键排序。
  2. 可选键带来的标记膨胀:我们经常遇到一个问题,即在预测值为空时仍然要求生成键。例如,当我们使用可选字段构建一个Pydantic对象并将其JSON模式传递给Outlines时,会生成许多不必要的标记,从而降低推理速度。另一个不好的做法是将所有键都设置为可选的。这是因为Outlines在这种情况下使用了不同的生成状态机算法。解决这个问题的方法是在模式中添加一个类型为null的必需的虚拟键,并在后处理中将其删除。

边界框反向计算的启发式算法

对于关键信息提取任务,我们发现一个简单的贪婪算法(算法1)就足以用于边界框的反向计算。如果要使用整个页面,可以将下边界和上边界分别设置为0和页面的高度(以像素为单位)。对于行项目识别任务,一个好的启发式算法是:(1)将页面在垂直方向上划分为多个块,每个块对应一个行项目;(2)使用上述算法1为每个行项目的分配的单词块中的单词反向计算边界框。挑战在于如何划分页面。

算法1:边界框反向计算的启发式算法

  1. 设置下边界和上边界、预测的键值映射和OCR数据。
  2. 匹配得分、键到边界框的映射。
  3. 对于键值映射中的每对(键,值):
  • 找到边界框中的所有坐标处于下边界和上边界之间的且与值匹配的最长连续单词列表。
  • 记录匹配单词的边界框。
  • 将键到边界框的映射添加到键边界框映射中。
  1. 计算匹配分数,即所有匹配单词的相似度之和,用于评估预测结果的准确性。
  2. 返回匹配分数和键边界框映射。

这种方法的时间复杂度为O(MN^2 * Algo1),其中M是行项目的数量,N是页面的高度。我们可以通过降低页面的规模来优化这个复杂度。在实际生产中,我们使用N=128。此外,我们利用算法1的单调性进行优化:匹配分数随着上边界的增加和下边界的减小而不增加。因此,我们可以使用分治优化来加速计算,将复杂度优化为O(MNlogN * Algo1)。最后,我们使用二分搜索来找到第一个行项目的最大下边界和最后一个行项目的最小上边界,以缩小边界范围。

通用行项目识别度量

行项目识别的目标是将信息提取为有序的行项目列表,其中每个行项目对应表格中的一行,并以列键值对的形式进行格式化。为了评估行项目识别的性能,我们需要一个具备以下属性的度量方法:

  1. 子任务隔离:需要分别评估子任务的性能。
  2. 单元格隔离:将一个真正的正样本对应一个预测的单元格和一个正确的真实单元格进行比较。
  3. 单元格完整性:虚构的单元格被视为假阳性,缺失的单元格被视为假阴性。
  4. 单元格相似度度量的灵活性:在同一个子任务中,度量方法应支持多种单元格相似度度量方式。
  5. 单元格行位置的不变性:对于正确预测的单元格,所给予的奖励应与其绝对行位置无关。
  6. 行顺序的保持:对于任意两个预测行,它们的相对顺序和与其匹配的真实行的相对顺序应保持一致。
  7. 列排列的不变性:度量方法应对列的重新排列具有不变性。即不考虑列的顺序。

目前存在的行项目识别度量方法中,ANLS*和DocILE使用基于最大权重二分图匹配的算法进行行匹配,因此不满足属性#6。此外,DocILE支持单元格内容和单元格位置的识别,但无法隔离这两个方面,这使得它无法用于只进行单元格内容或单元格位置识别的任务。GriTS满足上述所有属性,但不满足属性#7。

在接下来的部分,我们将介绍一种新的度量方法,称为通用行项目识别度量(General Line Items Recognition Metric,简称GLIRM),它满足上述所有属性。GLIRM可以看作是ANLS*和DocILE的扩展,使其满足属性#1和属性#6,同时也是GriTS的一种推广,使其满足属性#7。

GLIRM中的相似度匹配分数

根据属性#1和属性#4,我们将使用𝑓(𝑐ₚ, 𝑐ₜ)表示预测单元格𝑐ₚ和真实单元格𝑐ₜ之间的相似度度量。𝑓可以是适用于特定下游任务的任何相似度度量方式,如产品参考编号的精确匹配、边界框的交并比等。为了使度量方法类似于F1得分,我们需要将𝑓限制在0到1之间:0 ≤ 𝑓(𝑐ₚ, 𝑐ₜ) ≤ 1,对于所有𝑐ₚ, 𝑐ₜ。我们将使用𝑔𝑓(𝑟ₚ, 𝑟ₜ)表示预测行𝑟ₚ和真实行𝑟ₜ中对应单元格的相似度分数之和。

行匹配

我们将𝑅ₚ和𝑅ₜ分别表示预测的行序列和真实的行序列。我们的目标是找到等长的子序列𝑅~ₚ和𝑅~ₜ,使得对应单元格的相似度分数之和最大:
𝑅~ₚ, 𝑅~ₜ = argmax 𝑅ₚ’ | 𝑅ₚ, 𝑅ₜ’ | 𝑅ₜ ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (1)
由于我们关注子序列而不是行的子集,因此更适合使用类似Levenshtein距离的算法来找到𝑅~ₚ和𝑅~ₜ,而不是像ANLS*和DocILE那样使用基于最大权重二分图匹配的算法。这样可以惩罚在预测中交换或重新排列的行。

GLIRM的准确率(GLIRM-Prec)和召回率(GLIRM-Rec)可以定义如下:
GLIRM-Prec(𝑅ₚ, 𝑅ₜ) = (1/|𝑅ₜ|) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (2)
GLIRM-Rec(𝑅ₚ, 𝑅ₜ) = (1/|𝑅ₚ|) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (3)
GLIRM-F1(𝑅ₚ, 𝑅ₜ)可以定义为:
GLIRM-F1(𝑅ₚ, 𝑅ₜ) = (1+𝛽²) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) / (𝛽²|𝑅ₚ| + |𝑅ₜ|) (4)
在实际应用中,或者当人工审核系统的输出时,召回率通常比准确率更重要。这是因为查找并确定缺失单元格比验证提取单元格的正确性需要更多时间。因此,我们可以定义带有𝛽参数的GLIRM-F1指标:
GLIRM-F1𝛽(𝑅ₚ, 𝑅ₜ) = (1+𝛽²) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) / (𝛽²|𝑅ₚ| + |𝑅ₜ|) (5)
其中𝛽是一个控制召回率重要性的超参数。当𝛽=1时,该指标与GLIRM-F1相同。

实验结果

我们使用DocILE数据集进行了实验。表格I比较了LLMs与RASG在KIE和LIR任务上的性能与强大的多模态基线(如LayoutLMv3和Roberta + DETR)。表格II显示了RASG各组件在不同基线模型上的贡献。

在KIE任务上,只需要GPT-3.5 + 1-Shot Retrieval或Hermes 2 Pro + RASG即可超越基线。对于LIR任务,GPT-3.5 + 1-Shot Retrieval + Structured Prompting就足以击败基线模型。

此外,我们还测量了边界框反向计算启发式算法的中位数表格级信息覆盖得分(Information Coverage Score,简称ICS)。最佳基线模型Roberta + finetuned DETR在ICS上达到92.93%,而GPT-3.5 + RASG和Hermes 2 Pro + RASG分别达到87.79%和85.02%。

讨论与结论

我们的模型性能和消融实验结果表明了几个结论。首先,在KIE任务中,与其进行提示工程相比,使用检索机制和/或在目标数据集上进行微调的效果更好。对于LIR任务,首先进行结构化提示,然后再进行微调是一个更好的策略。有趣的是,经过适当调整和增强的LLMs可以击败经过微调的多模态模型,如LayoutLMv3和Roberta + DETR。最后,我们提出的边界框反向计算启发式算法在表格检测任务上的性能仅略逊于最佳基线模型。

对于在商业文档信息提取领域工作的团队,我们建议首先使用支持结构化生成的现成LLMs模型,然后实现检索机制。如果性能仍然不理想,可以考虑进行监督微调。对于LIR任务,我们建议先从结构化提示开始,然后再进行微调。

综上所述,本文介绍了使用RASG框架解决BDIE问题的全面方法,并提供了关于LLMs在这一领域中性能和优化策略的见解。

参考文献:

  • Franz Louis Cesista, Rui Aguiar, Jason Kim, Paolo Acilo. Retrieval Augmented Structured Generation: Business Document Information Extraction As Tool Use.
  • Skalický, Jakub, et al. “Business document information extraction.” arXiv preprint arXiv:2202.06070 (2022).
  • Smock, Matthew, et al. “GriTS: A Generalized Table Structure Recognition Metric.” arXiv preprint arXiv:2304.01428 (2023).
  • Willard, Willard. “Outlines: A toolkit for building structured generation models.” arXiv preprint arXiv:2303.01632 (2023).
  • Xiao, Tong, et al. “Information Coverage Score: Measuring Table Structure Extraction Quality.” arXiv preprint arXiv:2311.00007 (2023).
  • Simsa, Jiří, et al. “DocILE: A Large-scale Research Benchmark for Document Key Information Extraction and Line Item Recognition.” arXiv preprint arXiv:2312.00212 (2023).
  • Huang, Xingyi, et al. “LayoutLMv3: Multi-modal Pre-training for Visually Rich Document Understanding.” arXiv preprint arXiv:2203.06470 (2022).
  • Liu, Yinhan, et al. “Roberta: A robustly optimized BERT pretraining approach.” arXiv preprint arXiv:1907.11692 (2019).
  • Carion, Nicolas, et al. “End-to-end object detection with transformers.” arXiv preprint arXiv:2005.12872 (2020).

发表评论