从不同布局格式模板式文件中提取结构化数据

由Google Research软件工程师Sandeep Tata发布

模板式文件,例如收据,账单,保险报价单等,在各种业务工作流程中极为常见且至关重要。当前,处理这些文档主要是人工操作,目前处理这些数据的自动化系统确实存在易出错的问题。考虑像发票这样的文档类型,可以用数千种不同的方式进行布局-来自不同公司甚至同一公司内不同部门的发票格式都可能略有不同。但是,对于发票应包含的结构化信息有一个共同点,例如发票编号,发票日期,到期金额,付款日期以及为其发送发票的项目列表。

ACL 2020接受的“ 用于从类似表单文档中提取信息的表示学习 ”中提出了一种从临时文档中自动提取结构化数据的方法。与以前的从纯文本文档提取工作相反,该研究提出了一种使用目标字段类型的知识来识别候选字段的方法。然后使用神经网络对这些分数进行评分,该神经网络使用临近单词学习每个候选密集表示。在两个语料库(发票和收据)上进行的实验表明能够很好地推广到不同格式。

为什么这么难?
由于跨越自然语言处理(NLP)和计算机视觉世界,因此出现了信息提取问题中的挑战。与经典的NLP任务不同,此类文档不包含常规句子和段落中可能包含的“自然语言”,而是类似形式。数据通常以表格的形式显示,但此外,许多文档具有多个页面,通常具有组织信息的各种布局和格式表示。了解页面上文本的二维布局是理解此类文档的关键。另一方面,仅将其视为图像分割问题,将很难利用文本的语义。

解决方案概述
针对此问题的方法开发人员使用两个输入训练和部署给定域(例如发票)的提取系统-目标架构(即,要提取的字段及其对应类型的列表)和少量标有标签文档并将其作为训练集使用。支持的字段类型包括基础,例如日期,整数,字母数字代码,货币金额,电话号码和URL。开发人员还利用了Google知识图检测实体类型,例如地址,公司名称等。

输入文档首先通过光学字符识别(OCR)服务运行提取文本和布局信息,从而使它可以与本机数字文档(例如PDF)和文档图像(例如,扫描的文档)一起使用。然后运行候选生成器,以识别OCR输出中可能对应于给定字段实例的文本范围。候选生成器利用与每种字段类型(日期,号码,电话号码等)关联的预先存储库,从而避免了为每个候选生成器编写新代码的需要。然后,使用受过训练的神经网络(如下所述的“评分器”)对这些候选者中的每一项进行评分,以估计它确实是该领域可能提取值的可能性。最后,分配模块将计分的候选者与目标字段进行匹配。默认情况下,分配器仅选择该字段的最高得分候选者,但是可以合并其他特定域约束,例如要求发票日期字段按时间顺序在付款日期字段之前。

从临时文档中提取结构化数据
提取系统中的处理步骤使用模式,在输入发票单据上具有两个字段。蓝色框显示invoice_date字段的候选,金色框显示amount_due字段的候选。

记分器
记分器是经过训练的二进制分类器的神经模型。它以模式中的目标字段以及提取候选对象作为输入,并产生0到1之间的预测得分。候选对象的目标标签由候选对象是否与该文档和字段的基本事实相匹配来确定。该模型学习如何在向量空间中表示每个字段和每个候选对象,在该向量空间中,一个字段和候选对象越靠近向量空间,候选对象越有可能是该字段和文档的真实提取值。

候选代表
候选者由其附近标记以及页面上标记相对于为候选者标识的包围盒质心相对位置表示。以invoice_date栏位为例,邻近类似“ Invoice Date”或“ Inv Date”的短语可能会向计分器表明这可能是候选者,而类似“ Delivery Date”的短语则可能表明这不是候选者。发票日期。如果培训语料库恰好仅包含发票,则不会在候选者的描述中包括候选者值,以免过度拟合较小的培训数据集(例如,发票日期为“ 2019”)中出现值从那年开始。

从临时文档中提取结构化数据
一小段发票。绿色框显示的是invoice_date字段的候选者,红色框是附近的令牌以及表示相对位置的箭头。其他每个令牌(“编号”,“日期”,“页面”,“ of”等,以及其他出现的“发票”)都是候选发票的邻域的一部分。

模型架构
下图显示了网络的一般结构。为了构造候选编码(i),使用单词嵌入表(a)嵌入邻域中的每个令牌。每个邻居(b)的相对位置是使用两个完全连接的ReLU层嵌入的,它们捕获了细粒度的非线性。连接每个邻近文本和位置嵌入,以形成邻近编码(d)。自关注机制用于合并每个邻域上下文(e),并使用最大池合并到邻域编码(f)中。以类似于针对邻近位置嵌入的方式来嵌入候选对象在页面(g)上绝对位置,并与候选编码(i)的邻域编码串联在一起。最终评分层计算字段嵌入(k)与候选编码(i)之间的余弦相似度,然后将其重新缩放为0到1之间。

从临时文档中提取结构化数据

结果
为了进行训练和验证,开发人员使用了具有多种布局的内部发票数据集。为了测试模型推广到不同布局能力,他们使用了发票的测试集,其布局与训练和验证集不相交。他们在以下几个关键字段上报告了该系统提取的F1分数(越高越好):

领域F1分数
amount_due0.801
邮寄日期0.667
截止日期0.861
发票日期0.940
invoice_id0.949
采购订单0.896
总金额0.858
total_tax_amount0.839

从上表可以看出,该模型在大多数字段上都运行良好。但是,对于delivery_date这样的字段,仍有改进的余地。进一步的调查表明,在训练数据中只有很小一部分示例存在此领域。开发人员希望收集更多训练数据进行改进。

下一步准备做什么?
Google Cloud最近宣布了发票解析服务,作为Document AI产品的一部分。该服务使用上述方法以及BERT等其他最新研究突破,从发票中提取了十几个关键字段。您可以在演示页面上上传发票,并查看该技术的实际效果!

对于给定的文档类型,开发人员期望能够在给定适度大小的带标签语料库的情况下构建提取系统。目前正在追求一些后续措施,包括提高数据效率和准确处理嵌套和重复字段以及难以为其定义良好候选生成器的字段。

延伸阅读:InvoiceNet:从发票文档中提取信息的神经网络

上一篇:

下一篇:


标签