周翔 刘杨
(深圳市标准技术研究院 广东深圳 518000)
随着中国经济的发展和经济社会合规程度的不断提升,人口的流动范围越来越广,具有统一社会信用代码的系列证件成为机构资质审查的重要依据,但人工录入证件信息存在成本较高、速度慢、即时性差等问题,因此自动证件识别成为经济社会运行中重要的基本模块,也具有广泛的应用场景,比如商家资质审查和企业金融服务等。该文分析了多种证件信息的采集需求,结合最新的光学字符识别、深度学习框架与技术,设计了一套基于CRF模型与多规则集成的证件信息识别策略,相比于当前市场上的通用接口,其效果更好。
OCR在20世纪初提出后[1],经过长期稳定的发展,已成为一个高成熟度的领域。OCR主要有统计特征的方法、结构特征方法和神经网络的方法这3 种主要的技术途径。
(1)统计特征方法主动选取优质特征构建特征向量,这些特征一般是字符集合中普遍的、变化不大的、分类模型支持度高的特征。其中常见有平面位置、双向投影和变换特征等[1]。
(2)结构特征方法则是基于字符内部的结构。字符结构子集的选取随着识别思路变化而随之调整。选取层级可以在字根或者是笔划维度上,也可以选取更小粒度上的笔段。在不同粒度上抽取的结构信息一般命名为子模式、部件或者是基元,基元根据特定的规则构成序列成为特征信息。这种方法本质上是识别基元结构空间内的字符[2]。
目前,基于神经网络的方法是OCR技术途径中的主流策略,人工神经网络(Artificial Nueral Network,ANN)应用广泛。输入特征向量后,ANN作为分类单元输出结果。输入特征向量由于问题理解水平不足或适配的方法不同,常常存在内部信息冗余或矛盾的情况。通过多次迭代,ANN可以自动优化特征向量,清洗特征信息同时优化分类效果。另外,由于当前的ANN主要采用分布式网络,其自身特征保证了天然的并行效率,求解速度在大规模数据上有相当的保证。该文所采取的基础框架就是基于深度人工神经网络的。
该研究基于飞桨框架来进行OCR 工程,飞桨(PaddlePaddle)是百度公司推出的产业级深度学习平台,集成了相关框架、多类型辅助组件等。深度学习是目前人工神经网络的主流发展方向,以多层感知机为基础,在大样本环境下表现出较好的性能,因此成为学界和产业界的主要应用方向,经历多年的快速发展目前已经进入高度商业化的深度学习平台阶段,由大平台普遍支持多样的上层应用。该文使用其OCR 工具库PaddleOCR,使用不同粒度和层次的模型对输入证件图片文件进行解析识别文字,达到了工业级效果。
该文信息抽取任务的本质就是在给定的长序列文本中提取特定模式的关键信息,在OCR 的基础之上,首先使用模板为中心的信息抽取方法。在证件信息识别这一特定领域中,信息抽取单元所得到的输入信息通常具有相当固定的格式,特别是在给定某一特定证件类型例如营业执照时,信息抽取模块的输入文本重复率高且固定不变的形式。在此领域设定下,信息抽取任务可以定义为一个模板填充任务。其目的是在结构相似度极高的文本中发掘多次反复出现的模式,并用适用于不同文本的可变材料将此模式实例化。模式中固定不变的部分可以视为模板干,而随着不同证件实例进行变化的信息可视为模板的枝叶,又称为待填充的槽位。填充到槽位里的信息可以是从原始文本中直接抽取出来的信息,也可以是经特定推理单元处理后的预先定义的概念类。因此,该信息抽取任务的基本步骤主要是规则模板构建、结合模板抽取事实文本以及抽取结果的结构化。规则模板的构建过程主要通过专家设计、行业调研、文本统计与可视化和探针实验进行,同时将不同的标点进行分类,根据为不同分隔符设计不同的决策流程,挖掘基于符号和文本描述的模式。具体而言,规则模式的挖掘主要由3个部分构成,即:槽前模式挖掘、填充文本模式挖掘以及槽后模式挖掘。槽前模式描述待写入槽位置之前的文本的基本模式,槽后模式描述待写入槽位置之后的文本的模式,填充文本模式则用于描述填充目标的基本结构。多个子结构构成模式串或列表,从前向后方向匹配,最终把全部匹配成功的目标槽位结果写入特定证件信息的结构化表格。在计算模板结构的同时,对常见的OCR误例和混淆输出进行统计和识别,通过编写常见规则干预计算过程,降低脏数据噪声对计算结果的影响。
文本抽取就是从文字识别结果中抽取出需要的字段或要素。该文采用深度学习模型混合规则集成的策略,对从图像中识别出的文字进行信息抽取。现阶段对非结构化文本的信息抽取通常转化为序列标注任务,主要以基于循环神经网络RNN 深度学习方法为主。该方法有基于字和基于词两种,均难以同时具备语义信息丰富度高与未登录词数量少的优点。为有效识别证件信息文字中的字段信息,对部分时间和单位信息精准分类,该文使用一种基于字词协同的深度学习序列标注模型与梯度提升决策树模型相结合的信息抽取方法,即利用字词协同的双向LSTM-CRF 模型对文本进行初步解析,在此基础上使用集成学习实现对时间和单位信息的分类矫正。
序列标注可以由隐马尔可夫(HMM)以及最大熵等模型实现。解决序列标注问题,目前最有效、最广泛的方法是条件随机场(Conditional Random Fields),在NLP经典任务上效果很好。CRF可以由HMM来推出,非常适合于序列标注类型的任务,输入和输出形式都是序列的情况下也可以被视作一种Seq2Seq 模型,一般指的是线性链CRF,其本质是针对序列类型数据的对数线性模型。条件随机场是马尔可夫网络的变体,具体而言,CRF 是在输入随机变量X 确定情况下的输出随机变量Y的马尔可夫随机场。其操作方法大致分为特征函数构建、特定数据调优参数和利用模型预测标注或概率这3个步骤。在第一步骤和第二步骤的模型训练过程中,由于线性链条CRF 本质上是对数线性模型,所有可用于优化对数线性模型的方法都可以进行迁移应用,例如拟牛顿下降方法、最大似然估计方法、梯度下降方法、改进的迭代尺度方法、牛顿迭代方法等。在确定模型应用预测时,CRF 模型和预测思路于HMM模型一致,在输入的新的序列中通过计算概率最大的思路寻找一条输出隐状态序列。基于CRF在性能和效果方面的优势,该文的文本抽取也使用CRF。
该文同时使用LSTM 模型来提高抽取效果。RNN擅长处理序列数据,对序列变化的数据解析能力更强。RNN 能很好地处理单个令牌的含义由于其语境会有所变化的情况。但相关背景和当前位置的距离过大时,RNN无法连接距离过远的信息。长短期记忆网络(Long Short-Term Memory,LSTM)在RNN 基础上进行了调整,在长序列调节下能够很好地应对梯度消失和爆炸,比普通RNN 在更长的序列中有更好的表现。RNN 的标准模式是链式的重复模块。在其标准结构中,重复模块的内部构成极为简单,比如:由单个tanh层构成模块。LSTM的结构逻辑与之相同,但其重复模块的内部构成不同。其内部重复模块并非单调的神经网络层,在模块中有4种单元交互。LSTM网络的核心是细胞状态,在水平方向进行操作。LSTM线性特征的交互较少,因此神经网络内部蕴含的信息更容易保持稳态、波动更小。通过不同的“门”单元,LSTM 可以对细胞状态内部蕴含的信息进行增加或删减。门本质上是一种过滤函数,有选择地让不同的信息通过本结构。一个Sigmoid层的产出比例,用于控制每个输入可通过门的程度。LSTM通过3种类型的门来操作细胞状态。首先,LSTM决定需要被删除的状态信息。这个决定是依靠遗忘门来实现的,输入是h(t-1)与x(t),sigmoid对其操作之后产生一个0~1间的数值,描述其移除或者保留的程度。遗忘门操作之后,LSTM通过一个两步步骤决定何种细胞状态被加入,即sigmoid层得到的更新比例与tanh层的输出C相乘,操作后得到所需的输入值。将旧的细胞状态C(t-1)与ft 相乘,通过遗忘门,加上输入门的结果就得到了新的细胞状态。最后,输出门仍然首先使用sigmoid 层细胞状态的输出位置。之后细胞状态使用tanh函数归一化输出值,与sigmoid输出相乘后,最终结果添加进隐藏状态[3]。
相比于传统的Elman-RNN 和Jordan-RNN,LSTM长距离信息处理能力更为强大,缓解了长序列条件下的梯度问题。在序列标注任务中,多采用CRF 层取代双向LSTM的softmax输出层,其中双向LSTM并不会直接输出模型预测的标签,而是将待标记对象对应所有备选标签的概率输出至CRF 层,采用全局归一化的方法,在整个句子级别进行建模。有效解决了原有模型的标记偏置问题。对于给定一条非结构化文本序列X,假设其所对应的标签序列即网络输出的目标序列为y,则可以计算双向LSTM 层的输出分值、整个网络得到的目标序列y 的概率,使得对数概率达到极大值而得到序列结果[4]。
将CRF和双向LSTM结合后,模型由输入层、隐含层和CRF回归层构成。第一层实现文本数据向计算机可处理的向量矩阵的转换。该层通过Glove工具,基于训练好的模型将基于字的直接向量表示的高维稀疏向量转变为可计算词间关系的低维稠密向量。第二层是隐藏层(BiLSTM层),实现对文本语句特征的提取。该层由两个LSTM层组成,根据处理向量序列次序不同分为向前展开的层和向后展开的层,前者用于抽取上文信息,后者用于从相反方向提取下文蕴含的信息。第三层是输出层,在BiLSTM网络的输出层中为每一个输入的数据打一个标签的预测分值,接着在输出层的后面添加CRF层,用于通过序列标注增肌文本的相关程度。在此三层网络模型的基础上,该文结合多重Regex策略,编写针对性regex和大类泛化regex对模型进行外部知识融合,在医疗机构执业许可、民办学校办学许可、营业执照、各类型法人登记、外国企业常驻代表机构登记、各类型单位登记、统一信用代码证书等多类证书证件识别任务上取得了超越目前商业识别接口的效果。
集成学习(Ensemble learning)作为机器学习的分支通过对多个子学习器(也称为基分类器)进行集成操作(Ensemble),通过特定的学习算法集成得到整体学习器,其效果通常比单个子学习器好。Boosting是集成的一种思路。Boosting本质上是分类算法,通过训练强化弱分类器以提升效果。
Boosting将多个子分类器线性组合,该文选取梯度提升策略进行集成。XGBoost(极限梯度提升)将较为广泛使用的GBDT 策略进行了改进,有多种优点。首先,XGBoost 实现正则化提升,在处理过拟合问题方面性能较好。其次,XGBoost 纳入了二阶导数进行优化过程,大幅度提升了最优解求解效率。另外,XBGoost可以自动化地处理缺失值。同时,XGBoost 灵活性很强,优化策略和评价策略的用户自定义程度高。
大多数证件信息的含有更多的时间和地点信息,为了减少模型对时间等字段的识别偏好,纠正模型将机构信息识别时间信息[5-6],该文使用基于机器学习的分类方法对时间和单位信息再矫正,使用基于XGBoost的证件信息再分类方法,以序列标注模型识别出的时间、机构名称、性质、地址、负责人、发证单位6 类信息,作为最小分类单位,提取待分类对象的语言学特征,使用XGBoost判断该信息所属类别,以期对不常见及一些极端样本处理能力较强。
该文使用的双向LSTM结合CRF的模型,在抽取结果上达到了最前沿的效果,结合基于集成学习的分类矫正策略与Regex融合,在医疗机构执业许可证以及营业执照等10个典型证件的识别任务上取得了超越商业级接口的效果,在多种领域具有广泛的应用前景,如企业信息采编过程自动化,应用于企业银行开户、抵押贷款等金融服务场景,大幅度提升信息录入效率,应用于平台式商业模式,实现商户信息增删自动化等。