一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种海量发票的识别方法、系统及存储介质与流程

2022-02-20 08:00:15 来源:中国专利 TAG:


1.本发明涉及计算机图像识别技术领域,更具体地说,它涉及一种海量发票的识别方法、系统及存储介质。


背景技术:

2.发票图片信息提取最传统的方式是ocr识别。传统ocr技术框架主要分为五个步骤:首先文本定位,接着进行倾斜文本矫正,之后分割出单字后,并对单字识别,最后基于统计模型进行语义纠错。传统ocr冗长的处理流程以及大量人工规则的存在,无法处理二维码,识别要素有限,效率低下,精确度不高。


技术实现要素:

3.本发明要解决的技术问题是针对现有技术的上述不足,本发明的目的一是提供一种可以提高识别精度的海量发票的识别方法。
4.本发明的目的二是提供一种可以提高识别精度的海量发票的识别系统。
5.本发明的目的三是提供一种可以实现上述识别方法的计算机可读存储介质。
6.为了实现上述目的一,本发明提供一种海量发票的识别方法,包括:
7.步骤s1.获取图片;
8.步骤s2.检测所述图片中是否存在发票,若存在发票,则定位所述发票的四个角,根据所述四个角对所述图片进行矫正得到矫正图片;否则退出;
9.步骤s3.通过yolo模型定位所述矫正图片中的二维码和需要识别的字符;
10.步骤s4.对所述二维码和需要识别的字符进行预处理,并输入到tensorflow模型中识别得到识别结果。
11.作为进一步地改进,在所述步骤s2中,采用tensorflow模型来识别所述图片中的发票,并将所述图片矫正,具体步骤包括:
12.步骤s21.通过人工打标标注多个发票的四个直角;
13.步骤s22.对所述多个发票进行增加样本量处理得到标注图片样本,增加样本量处理包括对发票进行旋转、腐蚀、加噪、划线中的至少一种处理;
14.步骤s23.将所述标注图片样本输入基于tensorflow模型实现的crnn目标检索网络,经过迭代训练后得到定位发票四角模型;
15.步骤s24.将获取的图片输入所述定位发票四角模型,若能检测到发票的四个角落,则认为该图片中存在发票,执行步骤s25;否则,认为该图片中不存在发票,退出;
16.步骤s25.以所述定位发票四角模型得到的四个角落坐标位置为原坐标,以实际发票的长、宽为目标坐标,使用图像处理工具的透视变换,将该图片摆正。
17.进一步地,所述crnn目标检索网络包括7个cnn卷积层、2个rnn层、5个池化层。
18.进一步地,将所述标注图片样本归一化为768*1536后,再输入tensorflow模型训练得到所述定位发票四角模型。
19.进一步地,在所述步骤s3中,通过yolov3-tiny模型定位二维码和需要识别的字符,具体步骤包括:
20.步骤s31.对所述标注图片样本使用labelimg进行打标,标出需要识别的内容;
21.步骤s32.将打标好的标注图片样本输入yolov3-tiny模型中训练并获取权重值;
22.步骤s33.根据所述权重值将所述矫正图片输入yolov3-tiny模型得到二维码和需要识别的字符的位置信息、置信度;
23.步骤s34.通过图像处理工具把置信度最高的相应位置图片裁剪出来,得到二维码和需要识别的字符。
24.进一步地,所述yolov3-tiny模型的主干网络采用一个7层conv max网络提取特征,所述yolov3-tiny模型的嫁接网络采用的是13*13、26*26的分辨率探测网络。
25.进一步地,tensorflow模型识别所述二维码的具体步骤包括:
26.步骤s41.随机生成一串字符串,通过二维码识别工具编码为二维码样本数据;
27.步骤s42.绘制所述二维码样本数据的01点阵,进行随机扰乱,得到二维码训练集,根据所述二维码训练集训练tensorflow模型得到二维码模糊识别模型;
28.步骤s43.对所述二维码进行二次识别定位,先放大该二维码的识别区域,然后使用tensorflow模型检测二维码区域,再通过图像处理工具裁剪二维码区域,最后用所述二维码模糊识别模型进行模糊识别得到二维码信息。
29.进一步地,tensorflow模型识别所述需要识别的字符的具体步骤包括:
30.步骤s51.根据发票字体绘制文字并加上扰乱随机生成不定长的生成文字图片,加入真实发票对应的真实图片作为基础材料,对所述生成文字图片、真实图片进行扰乱生成训练材料;
31.步骤s52.将所述训练材料输入tensorflow模型训练得到识别发票字符模型;
32.步骤s53.使用所述识别发票字符模型识别所述需要识别的字符得到文字信息。
33.为了实现上述目的二,本发明提供一种海量发票的识别系统,包括:
34.图片获取模块,用于获取图片;
35.发票矫正模块,用于检测所述图片中是否存在发票,以及根据发票的四个角对所述图片进行矫正;
36.定位字符模块,用于定位图片中的二维码和需要识别的字符;
37.识别模块,用于识别图片中的二维码和需要识别的字符;
38.所述图片获取模块获取图片后,所述发票矫正模块、定位字符模块、识别模块根据上述的一种海量发票的识别方法依次对所述图片进行矫正、定位图片中的二维码和需要识别的字符、识别图片中的二维码和需要识别的字符。
39.为了实现上述目的三,本发明提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述的一种海量发票的识别方法。
40.有益效果
41.本发明与现有技术相比,具有的优点为:
42.(1)本发明可以使用tensorflow模型不断学习,对发票字段中不同字体进行训练,不断提高识别率,而且能针对发票信息中因打印问题与其他字段相粘连的问题进行剥离识别。
43.(2)本发明充分利用了zxing结合tenfowflow模型对发票二维码进行识别,能高效提取发票的所需信息。
44.(3)本发明使用tensorflow模型对发票进行定位,根据定位出的四个角使用opencv对图像进行透视变化校正图像,可以针对发票倾斜情况下的识别。
45.(4)本发明使用yolo定位发票识别区域,能快速精确定位发票需要识别区域。
附图说明
46.图1为本发明中识别方法的流程图;
47.图2为本发明中二维码识别的流程图;
48.图3为本发明中对发票四个角进行人工打标标注的示意图;
49.图4为本发明中对发票进行旋转、腐蚀、加噪或划线的示意图;
50.图5为本发明中对发票进行矫正的示意图;
51.图6为本发明中对发票使用labelimg进行打标的示意图;
52.图7为本发明中生成字符训练材料的示意图。
具体实施方式
53.下面结合附图中的具体实施例对本发明做进一步的说明。
54.参阅图1-7,一种海量发票的识别方法,包括:
55.步骤s1.获取图片;
56.步骤s2.检测图片中是否存在发票,若存在发票,则定位发票的四个角,根据四个角对图片进行矫正得到矫正图片;否则退出;
57.步骤s3.通过yolo模型定位矫正图片中的二维码和需要识别的字符;
58.步骤s4.对二维码和需要识别的字符进行预处理,并输入到tensorflow模型中识别得到识别结果。
59.在步骤s2中,采用tensorflow模型来识别图片中的发票,并将图片矫正,具体步骤包括:
60.步骤s21.通过人工打标标注多个发票的四个直角;
61.步骤s22.对多个发票进行增加样本量处理得到标注图片样本,增加样本量处理包括对发票进行旋转、腐蚀、加噪、划线中的至少一种处理,从而使标注图片样本达到数十万,甚至百万;
62.步骤s23.将标注图片样本输入基于tensorflow模型实现的crnn目标检索网络,经过迭代训练后得到定位发票四角模型;
63.步骤s24.将获取的图片输入定位发票四角模型,若能检测到发票的四个角落,则认为该图片中存在发票,执行步骤s25;否则,认为该图片中不存在发票,退出;
64.步骤s25.以定位发票四角模型得到的四个角落坐标位置为原坐标,以实际发票的长、宽为目标坐标,使用图像处理工具的透视变换,将该图片摆正,在本实施例中,图像处理工具为opencv或libccv。
65.在步骤s2中,还包括步骤s26,将训练好的定位发票四角模型在测试材料图片上测试,人工检视结果,把识别错的测试材料图片重新回到步骤s21做增量训练,不断的进行迭
代操作,以提高定位发票四角模型的识别精度。
66.在步骤s23中,crnn目标检索网络包括7个cnn卷积层、2个rnn层、5个池化层。可以将标注图片样本归一化为768*1536后,再输入tensorflow模型训练得到定位发票四角模型,以提高训练速度和准确率。
67.在步骤s3中,通过yolov3-tiny模型定位二维码和需要识别的字符,具体步骤包括:
68.步骤s31.对标注图片样本使用labelimg进行打标,标出需要识别的内容;
69.步骤s32.将打标好的标注图片样本输入yolov3-tiny模型中训练并获取权重值;
70.步骤s33.根据权重值将矫正图片输入yolov3-tiny模型得到二维码和需要识别的字符的位置信息、置信度;
71.步骤s34.通过图像处理工具把置信度最高的相应位置图片裁剪出来,得到二维码和需要识别的字符,如代码、号码、金额、日期等。
72.yolov3-tiny模型的主干网络采用一个7层conv max网络提取特征,yolov3-tiny模型的嫁接网络采用的是13*13、26*26的分辨率探测网络。可以将打标好的标注图片样本归一化为416*416后,再输入yolov3-tiny模型中训练并获取权重值,以提高训练速度和准确率。
73.对二维码和需要识别的字符进行预处理主要为对蓝色文字区域校正,需要识别的字符是机打的,经常会出现与边框或其他字符黏连等情况,由于需要识别的字段大部分都是蓝色字体,通过yolo模型定位出来的二维码、发票号码、金额、日期、校验码等蓝色识别区域,进行区域矫正,剔除非蓝色区域。
74.tensorflow模型识别二维码的具体步骤包括:
75.步骤s41.随机生成一串字符串,通过二维码识别工具编码为二维码样本数据,在本实施例中,二维码识别工具为zbar、zxing;
76.步骤s42.绘制二维码样本数据的01点阵,进行随机扰乱,得到二维码训练集,根据二维码训练集训练tensorflow模型得到二维码模糊识别模型;
77.步骤s43.对二维码进行二次识别定位,先放大该二维码的识别区域,然后使用tensorflow模型检测二维码区域,再通过图像处理工具裁剪二维码区域,最后用二维码模糊识别模型进行模糊识别得到二维码信息。
78.如果二维码模糊识别模型识别失败,则可以调整二维码区域图片的亮度或锐化度或旋转角度进行多次识别。
79.tensorflow模型识别需要识别的字符的具体步骤包括:
80.步骤s51.根据发票字体绘制文字并加上扰乱随机生成不定长的生成文字图片,加入真实发票对应的真实图片作为基础材料,对生成文字图片、真实图片进行扰乱生成训练材料;扰乱包括对图片进行旋转、腐蚀、加噪、划线中的至少一种操作,从而得到大量的训练材料;
81.步骤s52.将训练材料输入tensorflow模型训练得到识别发票字符模型,该tensorflow模型的网络主要由5个cnn层 1个lstm/rnn层 1个全连接组成,每个cnn层都有relu和正则化,第一个和最后一个cnn层的输出有池化;
82.步骤s53.使用识别发票字符模型识别需要识别的字符得到文字信息。
83.tensorflow模型识别需要识别的字符的具体步骤还包括:步骤s54.将训练好的识别发票字符模型在测试字符图片上测试,人工检视结果,把识别错的测试字符图片重新回到步骤s51做增量训练,以及把验真真伪不通过的发票,通过人工做标签后重新回到步骤s51做训练。
84.识别发票字符模型识别得到字符,可能会存在一定的缺陷,需要根据设定规则对有缺陷的字符进行删减或填充得到符合的字符,如日期只识别出18-01-01,则自动填充为2018-01-01,金额只识别出.12,则添加0,成为0.12,号码识别出9位,则截取前8位等,通过这样的方法将其矫正为符合识别区域的结果。
85.通过识别结果的输出,可以人工查看识别效果,以此检查哪一个步骤存在问题,然后不断提升识别率。另外可以根据识别出来的字段结果,调用增值税接口获取发票验真结果,如果验真结果为假或者存在验真字段缺少的情况,可以将这类发票信息保存下来,检查是哪一个步骤识别有误,将此作为训练集,不断迭代定位和识别模型,以提升识别率。
86.一种海量发票的识别系统,包括:
87.图片获取模块,用于获取图片;
88.发票矫正模块,用于检测图片中是否存在发票,以及根据发票的四个角对图片进行矫正;
89.定位字符模块,用于定位图片中的二维码和需要识别的字符;
90.识别模块,用于识别图片中的二维码和需要识别的字符;
91.图片获取模块获取图片后,发票矫正模块、定位字符模块、识别模块根据上述的一种海量发票的识别方法依次对图片进行矫正、定位图片中的二维码和需要识别的字符、识别图片中的二维码和需要识别的字符。
92.一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行上述的一种海量发票的识别方法。
93.以上仅是本发明的优选实施方式,应当指出对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些都不会影响本发明实施的效果和专利的实用性。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献