OCR技术在发票识别中的应用
2018-03-01张淇元
张淇元
(上海市建平中学,上海 200135)
1 OCR简介
OCR全称是Optical Character Recognition,即光学字符识别。[1]指的是各种电子设备,比如摄像头,数码相机,扫描仪等识别纸质载体上的打印或者印刷的字符。它是通过光的明暗度确定字符的形状,然后利用图像字符识别的方法将纸上的各种字符形状转换为计算机文字的过程。
O C R技术包括采集部分,识别部分和验证测试三个大模块。
采集部分的采集工作主要由各种电子设备承担。当然,精度越高的数码相机或是扫描仪能够大幅地提高图片的质量,对于识别部分来说是非常有利的。如果采集到的图片不是很理想,即使使用多么先进的识别算法也无济于事,所以采集部分的地位相当重要。
识别部分是整个技术中最重要的部分,也是本文研究的关键部分。想要达到高识别率,识别的算法要选取得当。要根据识别业务场景选择最适合的识别算法,而不是一味地追求最新最先进的算法,往往较适合较稳定的算法才是最佳算法。
验证测试部分的重要性和识别部分相当。原因是对于企业来说,错误的识别可能会带来灾难性的问题。比如机器识别错误而人工又无法手动干预,造成无法处理的问题。甚至对于银行,金融等行业来说,对于识别精度的需求特别高,细微的识别差错可能会造成巨大的损失。所以验证识别部分是不可忽视的。验证测试部分的主要工作是搜集大量样本,对其进行识别测试,找出识别存在的问题,反馈给算法设计者。并且在测试的过程中不断地扩充和完善识别的模板库,帮助识别工作。
一个好的OCR系统产品应该具有以下特性:用户界面友好,识别速度较快,识别正确率高,稳定性强,易用性强等。
2 应用背景
对于许多大中型企业来说,每个月都会有大量的进货与销售行为,随之产生的就是大量的进项增值税发票和销项增值税发票。增值税发票对于企业来说是非常重要的,这关乎于企业向国家缴纳的税金,所以企业对于发票十分看重。但是由于发票多为纸质,并且类型繁多,难以批量整理,大部分企业只能招聘一些财务人员专门整理发票,记录发票信息。但是,结果往往是企业花费了大量的人力财力,依然还有小部分发票出现纰漏。
如果能将人工智能技术应用在发票识别上,会减少人力物力财力的消耗,并且能够大幅度的提升正确率及工作效率。而O C R技术便是最适合于识别发票信息的识别技术。
3 增值税发票简介
增值税发票是我国税务领域中非常重要的买卖依据,主要分为以下三类:增值税专用发票,增值税普通发票和增值税普通电子发票[2]。下图1为增值税专用发票票样图片。
其中,左上角的发票代码,右上角的发票号码,开票日期,开票金额以及校验码五要素是发票最关键的要素。国家发票验伪平台对一张发票进行验证也是需要以上几个元素。根据规则,获取了发票代码就可以得到发票类型,根据发票号码,开票日期,开票金额,校验码(增值税普通发票)就可以获取到整张发票的信息。
图1
图2
所以想要获取到一张发票的完整信息,只要识别出以上五要素就可以了。但是给识别工作带来极大困难的一点是全国的发票样式不统一,每个省都有自己特有的发票样式。甚至同一个省的不同时间的发票样式都不同。比如左上角的发票代码在上海市发票上距离发票中线很近,但是在浙江省的发票上却距离左边缘很近。这对识别工作是个挑战。但也正是如此,识别发票的需求才会如此之高。
4 OCR识别发票的技术流程
4.1 主题流程图
图2是O C R识别发票的流程图。
4.2 采集部分
采集部分较为简单,主要是通过电子设备,比如数码相机,扫描仪或者摄像头等采集到发票图片。重点是两种识别方式,一种是同步识别,另一种是异步识别。
同步识别是在采集的过程同时对图片进行识别,识别后进行数据保存。但是这样带来的问题是,如果识别的发票数量较多,排队识别的发票图片容易阻塞,这样对识别速度回造成很大的影响。同步识别对识别算法的识别速度要求很高,如果识别算法能够和电子设备采集图片的时间相差无几,同步识别方式是可取的。
与同步识别相对应的识别方法就是异步识别方式。所谓的异步识别方式就是电子设备采集上图片后,先缓存在本地,识别过程直接从本地缓存中调取图片并且进行识别。也就是说采集和识别还是同时工作,但是互不影响。异步识别方式的好处是能够避免排队阻塞现象,但是由于要缓存在本地,所以要花费一些时间和容量在储存图片的过程中。该方式比较适应于识别速度不是很快并且本地存储容量足够大的场景中。
4.3 识别部分
识别过程毋庸置疑是整个系统中的核心部分。其主要分为以下几个步骤[3]。
(1)图片预处理。为了是采集到的图片能够更好地被识别,在识别前要进行图像的预处理。预处理包括:
图片灰度化(二值化):目的是将图片中的多于色彩去除掉,这样能够减少颜色对识别的干扰。
去噪:将采集过程中图像的噪声通过中值滤波(均值滤波)等方法过滤掉,可以将图片清晰化,更加接近原型。
边缘加强:通过边缘加强,可以使图片中字符的边缘更加明显,为分割和识别做好铺垫。
还有很多其他图像预处理方法,在此不一一列举。要说明的是,图像与处理方法很多,但并不是使用所有的预处理方法就更好,而是要选择最合适的预处理方法搭配使用,目的为了便于图片分割和识别。
(2)图片分割。对于识别发票来说,我们需要找到五要素的大体位置进行分割,再进行逐一识别。我们可以归纳总结全国各类发票中每一个元素大体位置。为了保证能够识别所有类型的发票,我们需要将分割的范围扩大化。也就是说,能做到每一个元素的分割范围都能包含该元素可能出现在发票的位置。
(3)字符识别。将图片分割成小的元素图片后,就可以进行字符识别了。在识别前,还要对字符进行分割。简单的方法是利用垂直和水平两个方向的扫描线去扫描图像中的像素点,通过获取与扫描线重合点数的个数变化,判定字符存在的位置。
将字符逐个分隔开后,便可以与模板库中的模板进行匹配,得到识别结果。
(4)识别预判。在识别过程中可以根据识别到的元素判断其他元素,比如识别出发票代码后就可以依照国家发票代码规则判断出发票的类型。这部分工作既可以减少识别的压力,同时还可以提高识别的准确性。
(5)矫正识别。在识别过程中,如果遇到以下问题,比如根据识别到的发票代码无法得到发票的类型,那么说明发票代码识别错误,于是可以再次识别,以提高精准度。
(6)识别训练。在识别过程中,我们可以训练识别算法。比如让算法识别各种各样的“大”字,训练的次数越多,识别率会随之提高。
4.4 验证部分
识别结束后,需要对识别结果进行验证和测试,当识别结果错误时,应该反馈给算法设计者,算法设计者会依照该反馈进行算法优化。并且在测试的过程中,可以将测试的用例保存进模板库,再次进行训练,以提高下次识别的正确率。经过多次训练,使机器识别结果正确率不断提高,减小误差已满足其在各个领域的识别精度需求。
5 结语
本文简单的介绍了O C R的识别原理和流程以及识别增值税发票的应用实例。可以得到以下结论:O C R是可以通过训练达到准确率的提升,这与人工智能机器学习的理念相一致。还有O C R的图片处理和识别过程要根据发票的特性进行定制,说明人工智能需要更多的考虑应用场景和应用领域,不能脱离现实进行算法研究。O C R已经逐渐应用到各行各业,随着人工智能的发展,O C R将会有更高的应用价值。
[1] 马壮,赵国权,任占鹏.基于OCR识别技术的自动阅卷系统的研究[J].河北工业科技,2005,22(6):354-357.
[2] 高晓玲.浅谈企业增值税发票的管理[J].全国商情·理论研究,2011(5):48-49.
[3] 汪益民,梅林,张义超,等.基于OCR技术的书写文字识别系统设计[J].甘肃科技,2007,23(8):17-19.