一种联合二维码识别的发票信息提取方法
技术领域
本发明涉及发票信息提取技术领域,具体为一种联合二维码识别的发票信息提取方法。
背景技术
发票图像所包含的信息十分丰富,除了发票上印刷的文本信息,发票左上角的二维码同样也编码了发票的主要信息(如发票号码、发票代码、金额、开票日期等等),如何有效提取这些信息则是发票识别技术的关键。
现有方法之一是仅对发票二维码进行定位与解析,因为二维码已经包含了足够多重要的信息,只要成功对其进行解码即可完成基本的发票信息识别,但实际应用场景中发票常常处于皱褶、遮挡的状态,一旦二维码区域有缺损或其他导致无法定位识别的情况,发票所有的信息都无法得出。
现有方法之二是不识别发票二维码,直接对所需识别的文本进行信息识别,该方法是业内比较通用的方法,它对二维码没有依赖,即使二维码发生缺损也可以正常输出识别信息,但该方法完全舍弃了二维码的信息价值,在文本发生遮挡而二维码图像良好的情况下该方法效果反而不如第一种方法。
现有方法之三是对二维码和文本都进行识别,该方法能综合两者的信息并进行互补,但业内一般仅使用传统的二维码定位识别算法对二维码进行解码,在环境复杂多变的情况下,很难达到较高的二维码识别准确率,因而对发票整体的识别准确率提升不大。
发明内容
本发明的目的在于提供一种联合二维码识别的发票信息提取方法,以解决上述背景技术中提出的现有发票信息提取主要采用单一的识别文本或者识别二维码容易出现:二维码区域有缺损或其他导致无法定位识别的情况,发票所有的信息都无法得出、在环境复杂多变的情况下,很难达到较高的二维码识别准确率,因而对发票整体的识别准确率提升不大的问题。
为实现上述目的,本发明提供如下技术方案:一种联合二维码识别的发票信息提取方法,该联合二维码识别的发票信息提取方法的具体提取方法步骤如下:
S1:票据文本识别:对发票文本进行直接识别,需要识别的文本为发票代码、发票号码、日期、合计金额、校验码这5个位置,在定位方面,采用文本定位方法,通过文本识别算法对发票文本进行识别,最终,得到各文本的属性、边框坐标信息以及具体字符信息;
S2:票据二维码识别:对二维码进行定位识别,二维码位于发票代码的左边,先根据S1:票据文本识别中文本识别的所得到发票代码的边框坐标信息来大致确定二维码的位置;
首先根据S1中识别出发票代码的边框坐标信息求得发票的旋转角度,再根据此角度对发票进行水平矫正,然后制作二维码检测定位网络的训练数据:人工标注二维码上三个坐标的位置信息,三个坐标为二维码边角的三个标定位置的方块,再按左下角的标定位置的方块开始的顺时针顺序拼接成6个浮点数的标签数据,与二维码图片一同送入网络训练,训练好后网络能按顺时针顺序输出三个标定位置的方块的中心点坐标,然后根据这三个标定位置的方块的中心点坐标对二维码进行水平方向矫正,同时也可以求得二维码的外接矩形,对外接矩形进行扩宽裁剪即可得较为紧凑的二维码图像,得到裁剪后的二维码图像后,对二维码进行识别;
S3:选择识别结果:在得到票据文本识别和票据二维码识别的输出信息后,我们将这两组信息进行分析取舍;
Attention-CRNN网络对二维码进行识别所输出的每个字符都会附带输出一个置信度,取所有字符置信度的最小值,设定阈值为0.9,如果该值小于阈值,我们取文本识别的结果,如果该值大于阈值,考虑到二维码识别结果更为可靠,取二维码识别的结果。
优选的,所述S2中二维码进行识别的识别对象为:发票代码、发票号码、金额、日期和校验码。
优选的,所述S1中采用的文本定位方法包括但不限于传统机器学习物体定位方法、深度学习物体检测方法。
优选的,所述S1中文本识别算法包括但不限于使用传统机器学习文字识别方法、深度学习文字识别方法。
优选的,所述S2中大致确定二维码的位置、对二维码进行识别分别采用检测网络和识别网络,且检测网络和识别网络均为轻量级的检测网络模型。
与现有技术相比,本发明的有益效果是:
1)准确度高:本方法通过文本识别的结果推出二维码的大致位置,同时用深度学习技术对二维码进行定位识别,具有远高于传统方法的二维码识别率。根据置信度对文本识别和二维码识别的结果进行取舍,进一步保证了识别的准确率。
2)鲁棒性高:由于本方法同时对文本和二维码进行了识别,在其中一方信息缺损时,另一方的结果都能对最终结果进行有利补充。因此,能适应更复杂多变的场景,具有较高的鲁棒性。
附图说明
图1为本发明提取方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
请参阅图1,本发明提供一种技术方案:一种联合二维码识别的发票信息提取方法,该联合二维码识别的发票信息提取方法的具体提取方法步骤如下:
S1:票据文本识别:对发票文本进行直接识别,需要识别的文本为发票代码、发票号码、日期、合计金额、校验码这5个位置,在定位方面,采用文本定位方法,通过文本识别算法对发票文本进行识别,最终,得到各文本的属性、边框坐标信息以及具体字符信息;
S2:票据二维码识别:对二维码进行定位识别,二维码位于发票代码的左边,先根据S1:票据文本识别中文本识别的所得到发票代码的边框坐标信息来大致确定二维码的位置;
首先根据S1中识别出发票代码的边框坐标信息求得发票的旋转角度,再根据此角度对发票进行水平矫正,然后制作二维码检测定位网络的训练数据:人工标注二维码上三个坐标的位置信息,三个坐标为二维码边角的三个标定位置的方块,再按左下角的标定位置的方块开始的顺时针顺序拼接成6个浮点数的标签数据,与二维码图片一同送入网络训练,训练好后网络能按顺时针顺序输出三个标定位置的方块的中心点坐标,然后根据这三个标定位置的方块的中心点坐标对二维码进行水平方向矫正,同时也可以求得二维码的外接矩形,对外接矩形进行扩宽裁剪即可得较为紧凑的二维码图像,得到裁剪后的二维码图像后,对二维码进行识别;
S3:选择识别结果:在得到票据文本识别和票据二维码识别的输出信息后,我们将这两组信息进行分析取舍;
Attention-CRNN网络对二维码进行识别所输出的每个字符都会附带输出一个置信度,取所有字符置信度的最小值,设定阈值为0.9,如果该值小于阈值,我们取文本识别的结果,如果该值大于阈值,考虑到二维码识别结果更为可靠,取二维码识别的结果。
所述S2中二维码进行识别的识别对象为:发票代码、发票号码、金额、日期和校验码。
所述S1中采用的文本定位方法包括但不限于传统机器学习物体定位方法、深度学习物体检测方法。
所述S1中文本识别算法包括但不限于使用传统机器学习文字识别方法、深度学习文字识别方法。
所述S2中大致确定二维码的位置、对二维码进行识别分别采用检测网络和识别网络,且检测网络和识别网络均为轻量级的检测网络模型。
实施例:
一、票据文本识别:
本方法先对发票文本进行直接识别,以普通发票为例,一般需要识别的文本为发票代码,发票号码,日期,合计金额,校验码这5个位置。在定位方面,可采用各种文本定位方法,包括但不限于传统机器学习物体定位方法、深度学习物体检测方法。在文本识别算法方面,包括但不限于使用传统机器学习文字识别方法、深度学习文字识别方法。
最终,我们可得到各文本的属性、边框坐标信息以及具体字符信息。
二、票据二维码识别
由于发票可能发生缺损或产生污渍遮挡等情况,仅通过文本定位识别并不一定能得到准确的信息,本方法将同时对二维码进行定位识别:
二维码定位:
二维码位于发票代码的左边,先根据第一步文本识别的所得到发票代码的边框坐标信息来大致确定二维码的位置。首先根据发票代码的边框坐标信息求得发票的旋转角度,再根据此角度对发票进行水平矫正。设边框左上角坐标为(x_lefttop,y_lefttop),边框长宽分别为boundHeight,boundWidth,选取:
水平方向范围[max(x_lefttop–boundWidth/2,0),x_lefttop]
竖直方向范围[y_lefttop,y_lefttop+3*boundHeight]
这块区域作为二维码的初步候选区域。
考虑到发票的二维码有三个用于标定位置的方块,我们使用修改后的MobileNetV2[1]网络来对这三个方块的中心坐标进行回归。
MobileNetV2本身是分类网络,最后一层输出一个1×1000×1×1的张量,同时使用SoftMax损失函数用于1000类物体的分类,在这里,我们先将网络最后的输出改为1×6×1×1的张量,同时损失函数改为Euclidean损失函数,使网络可以进行三个坐标(6个浮点数)的回归。
回归网络将按顺序回归这三个方块的中心点坐标,即从左下角开始按顺时针顺序的(x1,y1)、(x2,y2)、(x3,y3)。
在网络训练方面,我们将人工标注二维码上这个三个坐标的位置信息,再按左下角开始的顺时针顺序拼接成6个浮点数的标签数据,与二维码图片一同送入网络训练,训练好后网络应能按顺时针顺序输出三个方块的中心点坐标,然后根据这个三个坐标对二维码进行水平方向矫正,同时也可以求得二维码的外接矩形,对外接矩形进行适当扩宽裁剪即可得较为紧凑的二维码图像。
二维码识别:
得到裁剪后的二维码图像后,我们使用Attention-CRNN[2]网络对二维码进行识别,Attention-CRNN原本用于字符识别,在这里我们把二维码看做是一种特殊的字符,Attention-CRNN对场景文字都有较好的识别能力,对多行文本也能进行识别,非常适合处理二维码这种模式的数据。
二维码本身是由固定的信息编码而得来,以普票二维码为例,其原始编码信息格式为:
01,04,发票代码,发票号码,金额,日期,校验码,······
我们并不需要将二维码所有的信息都识别出来,只需要识别其中关键信息“发票代码,发票号码,金额,日期,校验码”这五项,因此在只将标签中这五项信息按顺序拼接成一个较长的字符序列作为网络的训练标签。以普票举一例,标签可为:
044031800104115359242912.622018111065265941300013413192
每个二维码对应一组55个字符的标签。将二维码和标签送入Attention-CRNN网络进行训练,训练好后网络应能预测输出与输入二维码对应的发票信息。
三、选择识别结果
在得到文本识别和二维码识别的输出信息后,我们将这两组信息进行分析取舍。Attention-CRNN网络会对每个字符的识别结果输出一个置信度,取所有字符置信度的最小值,如果该值小于阈值(一般设为0.9),我们取文本识别的结果,如果该值大于阈值,考虑到二维码识别结果更为可靠,取二维码识别的结果。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点,对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明;因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。