一种发票字条自动识别录入的方法及装置的制造方法
【技术领域】
[0001]本发明涉及发票识别领域,特别涉及一种发票字条自动识别录入的方法及装置。
【背景技术】
[0002]传统的发票录入方法需要人工打字录入发票各种信息,包括抬头、金额、地址和消费项目等等。这些信息的录入需要大量时间。对于单位内部结帐,给财务管理都会造成大量不便。随着智能手机的普及,OCR(光学字符识别)技术可以大大减轻发票录入时间,做到实时报销等。识别后的结果还可以进行大数据分析,对员工或者客户的消费习惯进行分析和预测。由于OCR是一种具有挑战性的算法设计,目前只能做到对印刷体的识别,对其他的手写潦草等字体无法识别,手写潦草等字体还需要人工打字录入,造成发票录入效率较低,另外,OCR对光学摄像头也有依赖性,光学摄像头的运动模糊和背景光不足都会对识别结果造成不利的影响,造成识别效果较差。
【发明内容】
[0003]本发明要解决的技术问题在于,针对现有技术的上述无法识别发票中手写潦草字体、发票录入效率较低、识别效果较差的缺陷,提供一种能识别发票中手写潦草字体、发票录入效率较高、识别效果较好的发票字条自动识别录入的方法及装置。
[0004]本发明解决其技术问题所采用的技术方案是:构造一种发票字条自动识别录入的方法,包括如下步骤:
[0005]A)建立训练数据库,采集各种不同格式的发票图片,并对每种格式的发票图片中的字条标记包围盒及所属类别后保存到所述训练数据库中;
[0006]B)接收需要识别的发票图片,并自动检测其位置;所述需要识别的发票图片包括多个字条;
[0007]C)将所述训练数据库中的每种格式的发票图片中的包围盒套用到所述需要识别的发票图片上面,并采用开源OCR引擎对被所述包围盒套用的所述需要识别的发票图片中的字条进行识别;
[0008]D)将所述需要识别的发票图片与所述训练数据库中每种格式的发票图片进行格式匹配,并找出格式最匹配的发票图片,将所述格式最匹配的发票图片的格式作为所述需要识别的发票图片的格式;
[0009]E)对所述需要识别的发票图片中被所述最匹配格式的发票图片的包围盒套用的字条进行图片分层,得到多个图层;
[0010]F)采用所述开源OCR引擎对每个所述图层进行识别,计算每个所述图层的识别分数,并将识别分数最高的图层作为滤除公章后的字条。
[0011]在本发明所述的发票字条自动识别录入的方法中,所述步骤B)进一步包括:
[0012]BI)接收所述需要识别的发票图片,并将其转换为图像矩阵;
[0013]B2)利用滑动窗口遍历所述图像矩阵,找出所述滑动窗口中最大的点乘值模板作为所述需要识别的发票图片的位置。
[0014]在本发明所述的发票字条自动识别录入的方法中,所述步骤D)进一步包括:
[0015]Dl)统计所述训练数据库中每个字条的字符的出现概率;
[0016]D2)分别计算所述需要识别的发票图片上被所述包围盒套用的每个字条中字符的出现次数;
[0017]D3)分别计算所述每个字条的字符的出现概率和出现次数的乘积,并对每个所述乘积求和后除以所述需要识别的发票图片中被所述包围盒套用的字条的数量,分别得到所述需要识别的发票图片与所述训练数据库中每种格式的发票图片的相似度;
[0018]D4)找出所述训练数据库中相似度最大的发票图片,并将其作为所述需要识别的发票图片的格式。
[0019]在本发明所述的发票字条自动识别录入的方法中,所述步骤E)中采用K-均值聚类算法、层次聚类算法和自组织映射图聚类算法进行图片分层。
[0020]在本发明所述的发票字条自动识别录入的方法中,所述步骤F)进一步包括:
[0021]Fl)采用所述开源OCR引擎对每个所述图层进行识别;
[0022]F2)计算每个所述图层中每个字符的出现概率及出现次数;
[0023]F3)分别将每个所述图层中每个字符的出现概率及出现次数进行相乘,并将乘积求和后分别得到每个图层的识别分数;
[0024]F4)找出识别分数最高的图层,并将其作为滤除公章后的字条。
[0025]本发明还涉及一种实现上述发票字条自动识别录入的方法的装置,包括:
[0026]训练数据库建立单元:用于建立训练数据库,采集各种不同格式的发票图片,并对每种格式的发票图片中的字条标记包围盒及所属类别后保存到所述训练数据库中;
[0027]发票图片位置检测单元:接收需要识别的发票图片,并自动检测其位置;所述需要识别的发票图片包括多个字条;
[0028]套用识别单元:用于将所述训练数据库中的每种格式的发票图片中的包围盒套用到所述需要识别的发票图片上面,并采用开源OCR引擎对被所述包围盒套用的所述需要识别的发票图片中的字条进行识别;
[0029]格式匹配单元:用于将所述需要识别的发票图片与所述训练数据库中每种格式的发票图片进行格式匹配,并找出格式最匹配的发票图片,将所述格式最匹配的发票图片的格式作为所述需要识别的发票图片的格式;
[0030]图片分层单元:用于对所述需要识别的发票图片中被所述最匹配格式的发票图片的包围盒套用的字条进行图片分层,得到多个图层;
[0031]公章过滤单元:用于采用所述开源OCR引擎对每个所述图层进行识别,计算每个所述图层的识别分数,并将识别分数最高的图层作为滤除公章后的字条。
[0032]在本发明所述的装置中,所述发票图片位置检测单元进一步包括:
[0033]图像矩阵转换模块:用于接收所述需要识别的发票图片,并将其转换为图像矩阵;
[0034]遍历位置查找模块:用于利用滑动窗口遍历所述图像矩阵,找出所述滑动窗口中最大的点乘值模板作为所述需要识别的发票图片的位置。
[0035]在本发明所述的装置中,所述格式匹配单元进一步包括:
[0036]出现概率统计模块:用于统计所述训练数据库中每个字条的字符的出现概率;
[0037]出现次数计算模块:用于分别计算所述需要识别的发票图片上被所述包围盒套用的每个字条中字符的出现次数;
[0038]相似度获取模块:用于分别计算所述每个字条的字符的出现概率和出现次数的乘积,并对每个所述乘积求和后除以所述需要识别的发票图片中被所述包围盒套用的字条的数量,分别得到所述需要识别的发票图片与所述训练数据库中每种格式的发票图片的相似度;
[0039]最大相似度获取模块:用于找出所述训练数据库中相似度最大的发票图片,并将其作为所述需要识别的发票图片的格式。
[0040]在本发明所述的装置中,所述图片分层单元中采用K-均值聚类算法、层次聚类算法和自组织映射图聚类算法进行图片分层。
[0041]在本发明所述的装置中,所述公章过滤单元进一步包括:
[0042]图层识别模块:用于采用所述开源OCR引擎对每个所述图层进行识别;
[0043]出现概率及次数计算模块:用于计算每个所述图层中每个字符的出现概率及出现次数;
[0044]图层识别分数获取模块:用于分别将每个所述图层中每个字符的出现概率及出现次数进行相乘,并将乘积求和后分别得到每个图层的识别分数;
[0045]识