1.本发明涉及发票识别技术领域,特别涉及一种卷式浮动发票识别方法及装置。
背景技术:
2.随着人工智能技术的发展,票据的智能化识别已经应用到各行各业中,同时随着社会经济的飞速发展,经济活动日益频繁,人们在消费过程中开具的票据也越来越多。尤其在企业的报销中,票据的录入是需要耗费大量的人力,因此将票据的智能化识别应用到企业的报销流程中,不仅能够节省很多人力,而且更能够提高效率。
3.目前的票据智能化识别中,对于打印比较清晰,版面规整的票据,识别的精度是比较理想的。例如,采用票据模板对票据信息进行提取,实现票据的识别;再例如,采用对预设关键词和捕获到的关键词之间进行打分的方式来获取关键信息的位置,实现对关键信息的提取。但是针对打印的信息和背景存在较大浮动和偏移时,上述方法是不能够很好的进行识别和匹配的,使得输出结果出现不对应或错误的情况。
技术实现要素:
4.本发明提供一种卷式浮动发票识别方法及装置,可以提高发票的识别准确率。
5.第一方面,本发明提供的卷式浮动发票识别方法,包括:
6.采用预设文本检测模型对待识别发票对应的发票图像进行文本检测,得到多个文本区域;
7.采用预设字符识别模型对各个所述文本区域分别进行字符识别,得到对应的多项文本内容,所述文本内容中包括文本名称和内容本体;
8.在所述多项文本内容中确定至少一个第一预设文本名称分别对应的第一内容本体;所述第一内容本体为根据所述第一预设文本名称对应的内容本体的字符类型、所属的文本区域和/字符长度能在各项文本内容中唯一确定的内容本体;
9.根据所述待识别发票的先验票面结构信息和所述第一内容本体所在的文本区域,采用正则匹配的方式在所述第一内容本体所在的文本内容之外的其余文本内容中筛选出多个第二预设文本名称各自对应的第二内容本体;
10.将各个所述第一预设文本名称和对应的第一内容本体以及各个第二预设文本名称和对应的第二内容本体作为识别结果输出。
11.第二方面,本发明提供的卷式浮动发票识别装置,包括:
12.区域检测模块,用于采用预设文本检测模型对待识别发票对应的发票图像进行文本检测,得到多个文本区域;
13.字符识别模块,用于采用预设字符识别模型对各个所述文本区域分别进行字符识别,得到对应的多项文本内容,所述文本内容中包括文本名称和内容本体;
14.第一筛选模块,用于在所述多项文本内容中确定至少一个第一预设文本名称分别对应的第一内容本体;所述第一内容本体为根据所述第一预设文本名称对应的内容本体的
字符类型、所属的文本区域和/字符长度能在各项文本内容中唯一确定的内容本体;
15.第二筛选模块,用于根据所述待识别发票的先验票面结构信息和所述第一内容本体所在的文本区域,采用正则匹配的方式在所述第一内容本体所在的文本内容之外的其余文本内容中筛选出多个第二预设文本名称各自对应的第二内容本体;
16.结果输出模块,用于将各个所述第一预设文本名称和对应的第一内容本体以及各个第二预设文本名称和对应的第二内容本体作为识别结果输出。
17.本发明中,首先识别出待识别发票上的文本区域,然后识别出文本区域内的文本内容,在各项文本内容中筛选出可以唯一确定的第一内容本体,并根据先验票面结构信息和第一内容本体推理出第二预设文本名称对应的第二内容本体,最后实现结构化的输出。在这个过程中,采用正则匹配的方式进行数据筛选,无需考虑打印偏移的问题,可以提高识别的准确度。
附图说明
18.图1为本发明一实施例中卷式浮动发票识别方法的流程示意图。
具体实施方式
19.第一方面,本发明提供一种卷式浮动发票识别方法,如图1所示,该方法可以包括如下步骤s100~s500:
20.s100、采用预设文本检测模型对待识别发票对应的发票图像进行文本检测,得到多个文本区域;
21.其中,预设文本检测模块可以根据需要选择,例如,采用基于yolov4算法的文本区域检测模型,基于yolov4算法的文本区域检测模型的大体结构会在下文介绍。
22.可理解的是,将待识别发票对应的发票图像输入到预设文本检测模型中,会得到各个文本区域的四个角坐标,从而确定各个文本区域的位置。
23.s200、采用预设字符识别模型对各个所述文本区域分别进行字符识别,得到对应的多项文本内容,所述文本内容中包括文本名称和内容本体;
24.可理解的是,在一张待识别发票上有多项文本内容,而一项文本内容包括文本名称和内容本体。例如在一张待识别发票上的一项文本内容为:纳税人识别号:123456,则其中的“纳税人识别号”为文本名称,“123456”为内容本体。
25.可理解的是,由于浮动发票上,内容本体和对应的文本名称之间是有偏移的,在偏移比较严重的情况下,有可能会出现一项文本内容中的文本名称和内容本体不是对应的,例如,在一项文本内容:纳税人识别号:123456中,123456代表的并不是纳税人识别号,而是其它文本名称对应的内容本体。当然,在偏移很小的情况下,文本内容中的文本名称和内容本体也可能是对应的。
26.s300、在所述多项文本内容中确定至少一个第一预设文本名称分别对应的第一内容本体;所述第一内容本体为根据所述第一预设文本名称对应的内容本体的字符类型、所属的文本区域和/字符长度能在各项文本内容中唯一确定的内容本体;
27.在具体实施时,可以正则匹配的方式根据第一预设文本名称对应的内容本体的字符类型进行筛选,正则匹配的方式,例如,数字、大写英文字母、小写英文字母、汉字、日期等
多种正则匹配的方式。例如,在将一项文本内容:纳税人识别号:123456进行数字正则匹配时,会将文本内容中的数字提取出来,进一步根据其它要求判断是否为所需要的内容本体。
28.可理解的是,第一内容本体为在各项文本内容中能够唯一确定的内容本体。例如,在一张待识别发票中只有购买方纳税人识别号和销售方纳税人识别号对应的内容本体中既包括数字又包括大写字母,而且购买方纳税人识别号对应的内容本体位于销售方纳税人识别号对应的内容本体之上,即购买方纳税人识别号所属的文本区域位于销售方纳税人识别号所属的文本区域的上方,因此购买方纳税人识别号和销售方纳税人识别号对应的内容本体可以唯一确定,因此可以将购买方纳税人识别号和销售方纳税人识别号作为第一预设文本名称,将购买方纳税人识别号和销售方纳税人识别号各自对应的内容本体作为第一内容本体。
29.在具体实施时,所述第一预设文本名称可以包括购买方纳税人识别号和销售方纳税人识别号;所述购买方纳税人识别号和所述销售方纳税人识别号各自对应的内容本体中均包括数字和大写字母;所述购买方纳税人识别号和所述销售方纳税人识别号各自对应的内容本体的长度为第一长度;对应的,s300可以包括如下步骤:
30.s310、采用数字和大写字母的正则匹配方式在所述多项文本内容中筛选出字符类型匹配的内容本体;
31.也就是说,采用正则匹配的方式在各项文本内容中筛选出包括数字和大写字母的内容本体。
32.s320、在字符类型匹配的内容本体中筛选出所述第一长度的内容本体;
33.为了避免在s310中出现的误匹配,在s320中采用第一长度对s310中筛选出的各个内容本体进一步进行筛选,筛选出符合购买方纳税人识别号和所述销售方纳税人识别号对应的内容本体的长度的内容本体。
34.例如,购买方纳税人识别号和所述销售方纳税人识别号对应的内容本体均为18位,筛选出s310中匹配得到的各项内容本体中长度为18位的内容本体,从而保证筛选的准确性。
35.s330、根据所述先验票面结构信息中所述购买方纳税人识别号和所述销售方纳税人识别号的相对位置,在所述第一长度的内容本体中确定所述购买方纳税人识别号和所述销售方纳税人识别号分别对应的第一内容本体。
36.在s320中得到两个长度为第一长度的内容本体后,需要区分哪一个是所述购买方纳税人识别号对应的内容本体,哪一个是销售方纳税人识别号对应的内容本体。在所述先验票面结构信息中,所述购买方纳税人识别号位于所述销售方纳税人识别号的上方,因此可以将在s320中得到两个长度为第一长度的内容本体中位于上方的内容本体作为购买方纳税人识别号对应的内容本体,将位于下方的内容本体作为销售方纳税人识别号对应的内容本体。
37.通过上述s310~s330可以确定购买方纳税人识别号和销售方纳税人识别号各自对应的第一内容本体。
38.可理解的是,这里的预设文本名称可以与待识别发票上的文本名称相同,也可以与待识别发票上的已有文本名称不同。例如,在待识别发票上,只有纳税人识别号这一名称,而这一名称对应的是购买方纳税人识别号对应的内容本体和所述销售方纳税人识别号
对应的内容本体这两项内容本体,因此可以设置两个预设文本名称为:购买方纳税人识别号和销售方纳税人识别号,相对于待识别发票上的已有文本名称,预设文本名称更为细化,使得输出的识别结果更加清晰准确。
39.当然,预设文本名称也可以采用待识别发票上已有文本名称的英文,还可以根据需要对待识别发票上已有文本名称稍作修改,总之,预设文本名称可以与待识别发票上已有文本名称相同,也可以在待识别发票上已有文本名称的基础上进行适当修改。
40.可理解的是,由于第一内容本体是唯一确定的,因此第一内容文本为关键内容本体,根据关键内容本体可以推理出其它内容本体的位置,具体推理过程参见s400。
41.s400、根据所述待识别发票的先验票面结构信息和所述第一内容本体所在的文本区域,采用正则匹配的方式在所述第一内容本体所在的文本内容之外的其余文本内容中筛选出多个第二预设文本名称各自对应的第二内容本体;
42.其中,所述待识别发票的先验票面结构信息中包括各项文本内容之间的相对位置、各项文本内容中内容本体的长度、各项文本内容中内容本体中字符的类型等。
43.可理解的是,在得知第一内容本体的位置之后,根据待识别发票的先验票面结构信息中其余内容本体与第一内容本体之间的相对位置,以及先验票面结构信息包含的其它限制信息,可以推理出其它内容本体的位置和信息。
44.在具体实施时,所述第二预设文本名称可以包括开票日期,所述先验票面结构信息可以包括:所述开票日期所属的文本内容位于所述购买方纳税人识别号所属的文本内容和所述销售方纳税人识别号所属的文本内容之间的垂直方向上;此时s400可以包括s410:
45.s410、在位于所述购买方纳税人识别号所属的文本内容和所述销售方纳税人识别号所属的文本内容之间的垂直方向上的文本内容中,采用日期的正则匹配方式筛选出所述开票日期对应的第二内容本体。
46.由于根据先验票面结构信息可以得知所述开票日期所属的文本内容位于所述购买方纳税人识别号所属的文本内容和所述销售方纳税人识别号所属的文本内容之间的垂直方向上,而购买方纳税人识别号所属的文本内容和所述销售方纳税人识别号所属的文本内容的位置是已知的,因此在位于所述购买方纳税人识别号所属的文本内容和所述销售方纳税人识别号所属的文本内容之间的垂直方向上的文本内容中进行筛选,具体采用日期的正则匹配方式进行筛选,从而得到开票日期对应的第二内容本体。
47.其中,日期在正则匹配的过程中,具有一定的格式,针对不同的格式可以采用不同的指令,例如,date1=re.findall(r"(\d{4}
‑
\d{1,2}
‑
\d{1,2})",text_temp),date2=re.findall(r"(\d{4}年\d{1,2}月\d{1,2}日)",text_temp),date3=re.findall(r"(\d{4}/\d{1,2}/\d{1,2})",text_temp)。
48.在具体实施时,所述第二预设文本名称可以包括发票代码和发票号码,所述先验票面结构信息包括:所述发票代码和所述发票号码所属的文本内容均位于所述销售方纳税人识别号所属的文本内容的垂直方向上,所述发票代码对应的内容本体为第二长度,所述发票号码对应的内容本体为第三长度,第二长度不同于第三长度。此时,s400可以包括步骤s420~s430:
49.s420、在位于所述销售方纳税人识别号所属的文本内容的垂直方向上的文本内容中,采用数字的正则匹配方式筛选出字符类型匹配的内容本体;
50.根据先验票面结构信息,可以知道所述发票代码和所述发票号码所属的文本内容均位于所述销售方纳税人识别号所属的文本内容的垂直方向上,因此在s420中在位于所述销售方纳税人识别号所属的文本内容的垂直方向上的文本内容中进行筛选,由于所述发票代码和所述发票号码对应的内容本体中均为数字,因此具体采用数字的正则匹配方式进行筛选。
51.s430、根据所述第二长度,在所述字符匹配的内容本体中确定所述发票代码对应的第二内容本体;并根据所述第三长度,在所述字符匹配的内容本体中确定所述发票号码对应的第二内容本体。
52.在一张待识别发票上,有可能有多个内容本体仅由数字组成,因此还需要通过长度对s420中筛选出来的内容本体进行进一步筛选。具体通过第二长度从s420中筛选出所述发票代码对应的第二内容本体,通过第三长度从s420中筛选出所述发票号码对应的第二内容本体,从而保证识别的准确性。
53.在具体实施时,所述第二预设文本名称可以包括校验码,所述先验票面结构信息可以包括:所述校验码所属的文本内容位于所述购买方纳税人识别号所属的文本内容沿垂直方向的下方,所述校验码对应的内容本体为第四长度。此时,s400可以包括s440~s450:
54.s440、在位于所述购买方纳税人识别号所属的文本内容沿垂直方向的下方的文本内容中,采用数字的正则匹配方式筛选出字符类型匹配的内容本体;
55.在先验票面结构信息中,校验码所属的文本内容位于所述购买方纳税人识别号所属的文本内容沿垂直方向的下方,因此在位于所述购买方纳税人识别号所属的文本内容沿垂直方向的下方的文本内容中进行筛选。由于校验码为数字,则采用数字的正则匹配方式进行筛选。
56.s450、根据所述第四长度,在数字匹配的内容本体中确定所述校验码对应的第二内容本体。
57.可理解的是,由于数字类型的内容本体可能有多个,因此这里还根据校验码的先验长度进行进一步筛选,实现准确筛选。
58.在具体实施时,所述第二预设文本名称可以包括金额,所述先验票面结构信息包括:所述金额所属的文本内容位于所述校验码所属的文本内容之上的预设高度内,所述预设高度为所述校验码所属文本区域的高度的5倍。此时s400可以包括s460:
59.s460、在位于所述校验码所属的文本内容之上的预设高度内的文本内容中,采用金额的正则匹配方式筛选出所述金额对应的第二内容本体。
60.其中,金额的正则匹配方式可以有多种,如果在发票中金额通常采用阿拉伯数字的方式,则这里可以采用阿拉伯数字的正则匹配方式进行筛选。如果发票上通常采用汉字的方式,则这里可以采用汉字的正则匹配方式进行筛选。
61.在具体实施时,所述第二预设文本名称可以包括销售方名称和购买方名称,所述先验票面结构信息可以包括:所述销售方名称所属的文本内容位于所述发票号码所属的文本内容和所述销售方纳税人识别号所属的文本内容之间的垂直方向上,所述购买方名称位于所述开票日期所属的文本内容和所述购买方纳税人识别号所属的文本内容之间的垂直方向上。此时s400可以包括如下步骤s470~s480:
62.s470、在位于所述发票号码所属的文本内容和所述销售方纳税人识别号所属的文
本内容之间的垂直方向上的文本内容中,采用汉字的正则匹配方式筛选出所述销售方名称对应的第二内容本体;
63.s480、在位于所述开票日期所属的文本内容和所述购买方纳税人识别号所属的文本内容之间的垂直方向上的文本内容中,采用汉字的正则匹配方式筛选出所述购买方名称对应的第二内容本体。
64.可理解的是,销售方名称和购买方名称为汉字,因此这里采用汉字的正则匹配方式。由于在一个文本内容中既包括文本名称也包括内容本体,而文本名称多为汉字,而这里采用的也是汉字的正则匹配方式,但是由于内容本体和文本名称之间有空格或“:”这种特定符号,因此在正则匹配时可以以特定符号为分界,在特定符号后面的部分进行筛选,避免出现误匹配。
65.s500、将各个所述第一预设文本名称和对应的第一内容本体以及各个第二预设文本名称和对应的第二内容本体作为识别结果输出。
66.可理解的是,输出的识别结果包括:各个第一预设文本名称、各个第一预设文本名称分别对应的第一内容本体、各个第二预设文本名称、各个第二预设文本名称分别对应的第二内容本体,根据需要从待识别发票上识别出所需要的多个本体内容,未必需要将所有的内容本体识别出来。
67.可理解的是,在识别过程中只识别本体内容,而本体内容对应的本体名称并非是从待识别发票中识别出来的,而是提前设置多个所需要的预设文本名称,然后根据同种发票的先验票面结构信息中多个所需要的预设文本名称对应的内容本体的先验信息从各个内容本体中进行识别,所以即便在待识别发票上文本名称和内容本体之间存在偏移或不对应的情况,也不会影响识别的准确度。
68.本发明提供的识别方法,首先识别出待识别发票上的文本区域,然后识别出文本区域内的文本内容,在各项文本内容中筛选出可以唯一确定的第一内容本体,并根据先验票面结构信息和第一内容本体推理出第二预设文本名称对应的第二内容本体,最后实现结构化的输出。在这个过程中,采用正则匹配的方式进行数据筛选,无需考虑打印偏移的问题,可以提高识别的准确度。进一步的,由于采用结构化的输出,可以大大提高工作人员的工作效率。
69.在具体实施时,所述预设文本检测模型可以为yolov4算法的文本区域检测模型,所述文本位置检测模型包括依次连接的骨干网络模块、颈网络模块和头网络模块,其中:
70.所述骨干网络模块用于将所述发票图像划分为多个检测区域,并针对每一个检测区域进行特征提取得到四个不同尺寸的特征图像;所述颈网络模块用于每一个检测区域对应的四个不同尺寸的特征图像进行多尺度特征融合,得到四个不同尺寸的融合特征图像;所述头网络模块用于根据每一个检测区域对应的四个不同尺寸的融合特征图像生成对应的四个不同尺寸的检测框,并根据四个不同尺寸的检测框生成一个文本检测框,并根据所述文本检测框的位置确定该检测区域内的文本区域的四角坐标。
71.其中,骨干网络在划分检测区域时,一般按照文本内容的高度沿水平方向进行划分,划分后的一个检测区域内尽量只包含一项文本内容,一个检测区域的高度为一项文本内容的高度。
72.其中,骨干网络针对每一个检测区域进行特征提取得到四个不同尺寸的特征图
像,例如,针对1216*1216大小的发票图像进行特征提取,得到152*152、76*76、38*38、19*19的四张不同尺寸的特征图像,所谓的特征图像即特征矩阵。
73.其中,骨干网络模块可以包括一个区域分割单元、多个卷积单元和多个跨阶段局部单元;所述多个卷积单元和所述多个跨阶段局部单元交替连接,所述区域分割单元用于将所述发票图像划分为多个检测区域;所述卷积单元用于对每一个检测区域进行特征提取,得到特征图像;所述跨阶段局部单元用于按照比例对特征图像进行缩小。
74.其中,跨阶段局部单元即csp(全称为cross stage partial)单元,该单元能够实现对特征图像的缩放。
75.例如,在骨干网络中可以设置5个cbm单元和4个csp单元,cbm单元和csp单元交错设置,即一个cbm单元之后设置一个csp单元,在csp单元之后再设置一个cbm单元,经过一次csp单元,特征图像的尺寸就缩小一倍,针对1216*1216大小的发票图像可以得到四张不同尺寸的特征图像。
76.可理解的是,相对于其它的区域检测模型,本技术采用的yolov4算法的文本区域检测模型,颈网络模块中进行多尺度特征融合,兼具了大尺寸特征图像的感受性高和小尺寸特征图像的高分辨率的优点,即融合后的特征图像的综合性更高。
77.进一步的,每一个所述跨阶段局部单元可以包括如下几个单元:
78.第一卷积单元,用于对输入的特征图像进行卷积处理,并将卷积处理后的特征图像分别输入到拼接单元和残差网络单元中;
79.残差网络单元,与所述第一卷积单元连接,用于对所述第一卷积单元输出的特征图像进行残差处理;
80.第二卷积单元,与所述残差网络单元连接,用于所述残差网络单元输出的特征图像进行卷积处理;
81.拼接单元,用于将所述第一卷积单元输出的特征图像和所述第二卷积单元输出的特征图像进行张量拼接,得到拼接后的特征图像。
82.可见,在上述跨阶段局部单元中包括2个cbm单元、1个残差网络单元和1个拼接单元,残差网络单元中包括n个残差网络子单元。相比于yolov3的独立残差块,yolov4算法中将特征送入残差网络单元的同时也将特征传播到了拼接单元,在拼接单元通过concat乘法进行融合拼接,这样做的目的是在减少计算量的同时实现更丰富的梯度组合,提高了计算验证的速度和准确性。
83.针对颈网络模块,将四个不同尺寸的特征图像进行多尺度特征融合,得到四个不同尺寸的融合特征图像,在多个不同尺寸的特征图像进行融合之前,需要进行上采样或下采样,将多个不同尺寸的特征图像处理成同一尺寸,例如将152*152、76*76、38*38、19*19的四张不同尺寸的特征图像均处理成152*152尺寸的四张特征图像进行融合,将152*152、76*76、38*38、19*19的四张不同尺寸的特征图像均处理成76*76尺寸的四张特征图像进行融合,将152*152、76*76、38*38、19*19的四张不同尺寸的特征图像均处理成38*38尺寸的四张特征图像进行融合,将152*152、76*76、38*38、19*19的四张不同尺寸的特征图像均处理成19*19尺寸的四张特征图像进行融合,从而得到152*152、76*76、38*38、19*19的四张不同尺寸的融合特征图像。
84.其中,在头网络模块中,首先对四个不同尺寸的融合特征图像分别进行卷积处理,
然后对每一个卷积处理后的融合特征图像采用conv函数进行边框回归,从而在发票图像的每一个检测区域中生成四个不同尺寸的检测框,最后依据这四个不同尺寸的检测框可以生成一个最终的文本检测框,从而得到该检测区域内的文本区域的四个角的坐标值。
85.第二方面,本发明提供一种卷式浮动发票识别装置,装置包括:
86.区域检测模块,用于采用预设文本检测模型对待识别发票对应的发票图像进行文本检测,得到多个文本区域;
87.字符识别模块,用于采用预设字符识别模型对各个所述文本区域分别进行字符识别,得到对应的多项文本内容,所述文本内容中包括文本名称和内容本体;
88.第一筛选模块,用于在所述多项文本内容中确定至少一个第一预设文本名称分别对应的第一内容本体;所述第一内容本体为根据所述第一预设文本名称对应的内容本体的字符类型、所属的文本区域和/字符长度能在各项文本内容中唯一确定的内容本体;
89.第二筛选模块,用于根据所述待识别发票的先验票面结构信息和所述第一内容本体所在的文本区域,采用正则匹配的方式在所述第一内容本体所在的文本内容之外的其余文本内容中筛选出多个第二预设文本名称各自对应的第二内容本体;
90.结果输出模块,用于将各个所述第一预设文本名称和对应的第一内容本体以及各个第二预设文本名称和对应的第二内容本体作为识别结果输出。
91.可理解的是,第二方面提供的装置与第一方面提供的方法相对应,其有关内容的解释、实施方式、举例、有益效果等内容可以参考第一方面中的相应部分,此处不再赘述。
92.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
转载请注明原文地址:https://doc.8miu.com/index.php/read-1722211.html