使用ML算法对多页文档进行分类:VTB经验

作为法人实体信贷传递的一部分,银行要求公司提供各种文件的正本。这些文档的扫描通常以单个多页文件的形式出现-“流”。为了易于使用,需要将流划分为单独的文档(单页或多页)并进行分类。首先,我们将讨论机器学习算法在已分段文档分类中的应用。



文档的类型取决于文本和视觉信息。例如,护照或工作簿很容易在视觉上进行区分,而无需分析其中的文本。此外,如果使用非专业解决方案,则此类文档中的文本识别质量会很低。因此,视觉组件带有更多的相关信息用于分类。租赁协议和公司章程在视觉上可能相似,但是它们所包含的文本信息有很大不同。结果,将文档分类的任务简化为数据融合模型,该模型应结合两个非结构化数据源:文档的可视表示形式和文本信息的识别结果。

请注意,在银行业务中,文件的分类还用于文件的扫描或照片的个人传送带中,用于对文件的累积资金进行分类,用于过滤客户评论以提高服务质量,用于对付款文件进行分类,用于对新闻流进行其他过滤等。 。 

BERT模型


为了解决我们的问题,我们使用了BERT(来自Transformer的双向编码器表示)模型-这是基于多层双向编码Transformer的语言模型。转换器接收一系列令牌(单词的代码或单词的一部分)作为输入,并在内部转换后生成此序列的编码表示形式-一组嵌入。此外,这些嵌入可用于解决各种问题。


变压器模型架构

如果更详细,则将令牌序列馈送到输入,并与这些令牌的位置代码和令牌所位于的段(要约)的代码相加。对于每个输入序列,Transformer会基于“注意力”的自适应机制生成上下文相关的表示形式(整个序列的一组嵌入)。每个输出嵌入都对某些令牌相对于其他令牌的“注意”进行了编码。


我们对单词it进行编码,这是关注动物的“注意力”机制的一部分,并在it编码中固定了其表示的一部分(来自The Illustrated Transfomer博客

BERT模型分为两个步骤:预训练和文件调整。在预训练期间,该模型解决了两个问题:MLM(屏蔽语言模型)和NSP(下一句预测)。在MLM任务中,输入序列中一定比例的令牌被随机标记(屏蔽),并且任务是恢复已屏蔽的令牌的值。当需要预测第二个句子是否是第一个句子的逻辑延续时,NSP任务是一对句子的二进制分类。在调整过程中,预训练的变形金刚会在这些特定任务上进行再训练。基于变压器的调整已经证明了自己在很多NLP(自然语言处理任务:自动聊天机器人,翻译,文本分析,及其他变压器


电路用于将法语自动翻译为英语(来自The Illustrated Transfomer博客

在出现BERT模型之前,曾使用过分页扫描的方法:图片的卷积符号(使用CNN卷积神经网络获得),频率文本属性(TF-IDF) ,专题文本标签(LDA主题),卷积文本标签(1-d卷积),字嵌入物WordToVec手套)以及它们的组合。 

先前开发的方法可提供良好的质量。但是选择的质量越接近最高,就越难提高质量。正如我们将在后面显示的那样,当我们已经具有接近最高质量的质量时,使用BERT模型有助于使其进一步提高。 

由于我们主要处理俄语文本,因此我们使用了BERT模型,该模型已针对某些俄语文本案例进行了预训练(RuBERT,俄语,来自DeepPavlov)。 

我们的数据集 


描述


解决分类问题的文件的选择包括对VTB银行多年来积累的公司公司文件的扫描。多页公司文档从扫描的流中进行半自动分割,并通过付费解决方案对它们的页面进行分类。

大多数扫描是黑白的,而一小部分是彩色的(主要是由于彩色打印)。

业务部门的客户确定了10个主要类别的文档(约30,000个已分段的多页文档,约129,000页)。由于分段过程中的错误,必须手动清洁文档。还引入了一个“其他”类别,将所有其他较不重要的文档类别合并在一起(约300个类别,已分割的约43,000多页文档,约128,000页)。结果,我们将构建一个包含11个类的分类器。我们还将ImageNet数据集中的大约18,000张图像添加“其他”类别(用于“保护傻瓜”)。

主要的10个类别是:

  1. 租赁合同
  2. 与会者名单摘录
  3. 公司章程
  4. 在税务机关的注册证明
  5. 法人问卷
  6. 俄罗斯护照
  7. 公司成立表
  8. 法人国家注册证书
  9. 订单/订单
  10. 决定/协议

其他各种身份证(外国护照,移民卡等),其他证书,IP问卷调查,声明,行为,授权委托书,问卷调查,仲裁庭的决定,从ImageNet图像等被列入其他类别。
被带到火车大约81%的已分段多页文档(在所有此类文档的数量中),dev-9%,test-10%。为了保证实验的纯洁性,对选择进行了划分,以使任何分段的多页文档的页面都完全分成一个部分:训练,开发或测试。

认证缝合页


公司客户通常不提供原件,而是提供文件副本,其中许多文件是由公证人或公司高管证明的。此外,通常会装订多页文档,指定固件日期,并在最后一页再次进行认证。 

因此,在我们的数据集中有许多这样的多页文档,在最后一次扫描(页)上有印章,日期和其他有关固件或证人详细信息的信息,但与文档的类别无关。下面是从流中分割出的两个不同的多页文档的最后一页,如果您不看其余页面,则几乎无法正确分类。


各个类别的文档的最后一页相同

扫描质量


尽管文档扫描通常在银行办公室进行(使用良好的复印设备),但是客户经常携带重复扫描的文档副本。此类复印件的质量也受到很大影响:在扫描过程中,由于碳粉质量差,许多文档的全息图和纹理以及其他原因,可能会出现许多噪音和伪影。

取向


数据集中有很多文档的扫描方向错误,对于以横向模式创建的ID卡和文本文档尤其如此。但基本上,文本旋转了90度(±5度)的倍数。提取文本时,我们还确定了图片的“正确”方向,以便大多数文本都垂直放置。

基准线


由于大多数文档从第一页开始扫描,因此通常会有足够的信息来确定类别,并且许多多页文档在第一页中的区别也很大。

因此,我们将仅在多页文档的第一页上构建基线分类器。 

请注意,尽管我们在本文中没有考虑多页面流的分段问题(PSS-页面流分段),但是如果将文档的剩余页面添加到分类器的训练中,而不仅仅是将其添加到分类器中,那么我们可以轻松地获得二进制分类的PSS分段问题的解决方案:对于流中的页面,依次预测了两个类别:“新文档”或“相同文档”。 

预处理


由于许多扫描图像很大,并且影响处理速度,因此我们首先压缩所有扫描,以使两个图像大小(宽度和高度)均不超过2000像素。

为了从图像中提取文本,我们使用了Google提供的免费Tesseract 4.0软件包此软件包的4.0版(及更高版本)在噪音方面非常有效(与以前的版本不同),因此我们没有从文本中消除噪音,而是在从扫描图像中提取文本之前确定了“正确”的方向,为此我们在Tesseract中使用了特殊功能4.0

图片中的卷积分类器


从每个文档中,我们使用预训练的卷积神经网络(ResNet34获得了卷积符号。为此,采用了最后一个卷积层(512个卷积符号的向量)的输出。在通过神经网络运行之前,对来自火车的扫描图片进行了一些增强以抵制再训练。

作为卷积符号分类器的模型,尝试通过在dev上选择参数来进行逻辑回归和提升。

经逻辑回归,最佳卷积分类器模型的测试质量约为76.1%(准确性)。

这种方法使我们可以对显然彼此相差很大的扫描进行分类。但是要通过神经网络运行图片,必须将它们压缩到神经网络输入的大小(ResNet34在输入处的大小为224x224像素),因此分类质量很低:文档的精美打印变得不可读,并且分类器只能“捕获”某些卷积符号,从大字体中获得的,页面上的某些对象具有特殊的排列方式等,但是这样的分类器没有考虑文本的本质。


租赁协议首页和公司章程首页的扫描在视觉上有所不同

但是,我们正在解决对公司文档进行分类的问题,其中许多类型的文档主要包含文本信息,并且很难在视觉上进行区分-很难仅在视觉上仅“捕捉”具有相同文档标题的行的“细长点”:


从视觉上减少两个类别的证书扫描副本几乎无法区分

我们假设文本属性将提高质量,因此添加文本属性,或者为基线模型创建文本分类器。

文字分类器


对于基线模型,我们将仅基于从扫描中提取的文本的TF-IDF(术语频率-反向文档频率)功能构建文本分类器。在编译热矩阵TF-IDF之前,将文本简化为小写形式。标点符号,停用词已从文本中删除;检查单词的拼写,并通过lemmatization(Pymystem3程序包)简化为初始形式。 

作为分类器模型,我们再次尝试了逻辑回归和提升,在开发人员中选择了参数。由于热矩阵的大小很大且非常稀疏,因此逻辑回归显示出良好的质量,并且每次测试的质量为85.4%(准确性)。

分类器的集合


为了获得整体效果,我们将卷积和文本分类器与在dev样本上选择的权重进行了混合。也就是说,对于每次扫描S,我们使用权重α 来获得卷积分类器发布的概率集Y CNN(按类别数为11位),我们还采用文本分类器所发布的11位概率集Y TF-IDF,权重为1 –α,并且总结这些加权集以得到混合基线分类器的输出:

Y CNN + TF-IDF(S)=αY CNN +(1-α)Y TF-IDF

结果,我们在测试中得到了90.2%(准确性)的混合分类器质量。
分类器结果:卷积(Y CNN),基于tf-idf的文本(YTF-IDF)及其集合(Y CNN + TF-IDF):

  • Ÿ CNN - 76.1%
  • Y tf-idf -85.4%
  • Y CNN + TF-IDF -90.2%

两步分类


在分析分类器整体的结果时,事实证明他经常在“护照(RF)”类别的扫描中犯错误,将护照归类为“其他”,因为该类别包含许多身份证。而且,它们的扫描以及护照扫描的质量通常也很差,这会干扰定性分类。
因此,我们决定分两步进行分类。

步骤1


根据最初的划分,我们将“其他”类别中的所有身份证转移到“俄罗斯联邦护照”类别中,按照最初的划分,分别是火车,开发和测试。

主要的10个类别:

  1. 租赁合同
  2. 与会者名单摘录
  3. 公司章程
  4. 在税务机关的注册证明
  5. 法人问卷
  6. 俄罗斯联邦护照+各种身份证(外国护照,移民卡等)
  7. 公司成立表
  8. 法人国家注册证书
  9. 订单/订单
  10. 决定/协议

类别“其他”:

  • 其他证据
  • 知识产权问卷
  • 陈述
  • 使徒行传
  • 授权书
  • 问卷调查
  • 仲裁法院的决定等

我们在这种修改后的样本上训练了一组分类器。 

第2步 


第二步,我们在第一步获得的类别6中进行了二进制分类:“俄罗斯联邦护照”(1类)与“各种身份证”(0类)。为此,通过类推,我们训练了卷积和文本分类器(在两个模型中都有逻辑回归)并权衡了它们的输出,从而获得了合奏。

两项测试的总体分类质量为每项测试95.7%(准确性)。在这种情况下,质量可以满足我们业务客户的要求(阈值-95%)。

BERT标志


我们建立了两步分类,类似于上面的操作,但是在每一步中,我们使用从RuBERT模型获得的文本页面嵌入来代替TF-IDF功能。对于每一页,对文本进行标记,并将前256个标记的序列提供给RuBERT模型的输入(填充最大512,即模型输入的大小)。 

为了提高效率,在接收文本嵌入之前,我们对数据集中的文本进行了掩码语言模型(MLM)的预训练,类似于BERT模型的作者所做的工作:当我们将令牌序列提供给RuBERT模型的输入时,我们用[MASK]令牌替换了一部分采取令牌。为了实验的纯正,仅对火车上的文字进行了预训练。令牌序列被用于分段文档的所有页面,而不仅仅是第一页。序列的开头是从标记化文本中随机选择的。
在嵌入阶段,将RuBERT模型的结果输出的平均向量作为页面的文本嵌入。

预训练在两步分类中有所改进:当使用从RuBERT模型获得的文本嵌入时,通过测试,质量提高到96.3%(准确性)。请注意,精度越接近100%,改进的难度就越大。因此,可以将产生的0.6%的增加视为显着。

输入令牌序列的长度增加到512(最大到BERT模型的输入大小)不会产生明显的增加。

我们得到了什么


模型的最终方案:



所有测试模型的质量:

  • Ÿ CNN - 76.1%,
  • TF-IDF -85.4%,
  • Y CNN + TF-IDF -90.2%,
  • Y CNN + TF-IDF + 2个步骤-95.7%,
  • Y CNN + RuBERT + 2个步骤-96.3%,

其中,Y CNN是卷积分类器,Y TF-IDF是关于TF-IDF属性的文本分类器。 

Y CNN + TF-IDF-分类器的集合(Y CNN + TF-IDF(S)=αY CNN +(1-α)Y TF-IDF, α= 0.45)。

CNN + TF-IDF + 2个步骤-两步分类:1)将ID卡放入“俄罗斯联邦护照+ ID卡”类别,然后在所得样本的基础上建立11个类别的分类器; 2)在“俄罗斯联邦护照+身份证”类别中,正在构建具有两个类别的分类器集合:1类-俄罗斯联邦护照,0类-身份证。

Y CNN + RuBERT + 2个步骤-两步分类;取而代之的是TF-IDF标记,而不是TF-IDF标记,它是在我们的数据集中预先训练的RuBERT模型的文本嵌入。

All Articles