基于MATLAB的票据自动报账系统设计与实现
2018-11-19赵懿琨马劼聪陈仰丽余晓佳黄国伟
赵懿琨 马劼聪 陈仰丽 余晓佳 黄国伟
【摘 要】 目前,国内会计师仍采用人工方式进行票据数据录入,完成账目的处理,错误率高且效率低,针对该问题,本系统开发出一款对发票实现自动化信息识别并报账的软件,实现从数据采集到报账完成一体的自动化服务。本系统在MATLAB软件上运行,结合光学识别OCR引擎Tesseract软件实现功能,基础功能包括:票据图像的无线收发、票据图像信息提取处理与识别,自动生成财务报表等功能。此外,为了提高系统的可靠性,增加了如多段关键信息截取、图像的倾斜校正、数学形态学处理等技术。
【关键词】 自动化;Tesseract;OCR;MATLAB
[Abstract] At present, domestic accountants still use manual way to input bill data and complete the account processing. The error rate is high and the efficiency is low. Aiming at this problem, this system develops a software to realize automatic information identification and account reporting for invoices, which realizes the automation service from data collection to account reporting. The system runs on MATLAB software and combines with Tesseract software of optical recognition 0C engine to realize the functions. The basic functions include: wireless receipt and dispatch of bills image, information extraction and recognition of bills image, automatic generation of financial statements and other functions. In addition, in order to improve the reliability of the system, such as multi-segment key information interception, Image tilt correction, mathematical morphology processing and other technologies are added.
[Keywords] automation; tesseract ; OCR; MATLAB
1 系統整体概述
本软件主要在PC 及其兼容机上运行,使用WINDOWS 7以上操作系统。成功安装软件并配置相应的系统环境后,在MATLAB上运行,利用FTP传输协议接收票据图像,根据用户需要制作不同票据图像模板,自动批量准确提取相关区域图像,对图像进行预处理后,结合光学识别引擎Tesseract软件,对图像中的字符信息进行识别,并将结果制成汇总表格,根据《小企业会计准则》和手工报账标准生成财务报表。
票据自动报账系统软件利用MATLAB进行编程,核心部分包括票据图像的无线收发、信息提取处理与识别,自动生成财务报表等功能。票据图像信息提取处理与识别部分包括票据图像自动化分类、图像的倾斜校正、关键信息的截取、图像二值化和数学形态学处理以及对票据信息的OCR识别,并储存在TXT文件中;自动报账部分用于完成最后的报账任务,遵循《小企业会计准则》的做账原则,按一定规律进行报账,同时提供导出功能便于输出纸质报表和核查财务数据。项目整体系统框图如图1所示。
2 系统实现部分
2.1 票据图像的无线收发
2.1.1 图像输入读取 在filezilla软件的服务器端开放“download”及“upload”接收、传送图像。可以使用imread,dir函数检测指定目录下图像的张数,设置for循环函数自动读取完目录下所有图像。
在此过程中,需要检测图像是否正向读取,若不可取,则反馈给图像输入模块,若可取,则进行下一步操作。在这个过程中,当图像不被读取反馈回去时,下一步操作中将出现图像空缺,在下一级读取图像时,添加判别出错算法。
2.1.2 图像初级处理 基于无线接收到的图像可直接根据MATLAB处理匹配的命名方式进行批量命名和文件建立,需要考虑图像是否可用,接收到的图像基于以下三种处理方式进行触及处理:
(1)正反面(颠倒):根据对发票右上角的“二维码”进行定位判断,可通过canny算子提取“二维码”边缘,计算统计得出灰度值的平均值,可连接起被分隔开的区域,判断该区域是否存在对应宽度信息,以此判断图像是正面或颠倒,如果判定结果为颠倒,可以通过imrotate语句将图像旋转180度保存以便下一步处理。
(2)里外面:如果发票的上下方位都检测不到“二维码”区域,则表明该图像放置反了,可以反馈回硬件系统,提醒翻转。
(3)拍摄模糊:当将图像进行二值化、中值滤波后,发现无法清晰读取所提取的“二维码”,则该图像拍摄模糊,反馈给硬件系统,提醒硬件重拍。
2.1.3 图像识别反馈 以带有“二维码”的增值税票据图像为例,将左上角的“二维码”识别结果作为判定票据放置是否正确的依据,利用阈值分割提取出“二维码”所在区域,通过扫描得到“二维码”的边角坐标。
调用MATLAB中“width”函数对100张票据“二维码”所在区域的测算得到“二维码”区域平均宽度值为385像素,定义识别到图像中黑色边角宽度像素区间位于375~400时,票据图像放置正确,图像质量合格,储存进“upload”文件夹,当识别到像素区间不符合要求时,将该票据图像储存进“待反馈文件夹”。
将不合格的票据图像序号通过filezilla无线传输发送到上一级的票据图像输入模块。将“upload”文件夹图像的序号储存成txt文档,通过filezilla平台反馈回上一级。
2.2 票据图像信息提取处理与识别
2.2.1 票据图像信息提取处理 无线接收票据图像后,软件利用MATLAB批量处理票据,首先截取有效票据区域,然后截取票据中有效数据区域;接着逐渐增加角度调整函数,自动调整图片,不同票据用同一算法实现;再对截取部分进行灰度化,腐蚀膨胀处理,以便于识别。
2.2.2 识别 本设计通过第三方jTessBoxEditor工具训练字库,字符识别过程中OCR也在进行自适应学习,不断拓展字库,识别更多的字符,从而提高识别率。通过tesseract平台上的jTessBoxEditor工具来处理修正字库,通过不断识别更新字库,积累字库的信息。
2.3 自动生成财务报表
这一步分为四个模块,分别是数据导入模块、数据识别模块、数据判断模块和表格生成模块。
总工作流程:如图2所示,首先导入存放OCR识别结果的txt文本,将这些信息汇总成表格,然后在汇总表的基础上,加入会计科目等类别,对收集到的信息进行分类处理,完善汇总表格成为会计信息总表,最后在会计信息总表上提取数据,经过统计归类,按实际需求,编制财务表格。
数据导入模块设计:在本模块中,txt文件分为七类,对应发票上的七类有效信息。因为OCR识别对字符和数字的编码方式不同,七类txt文件中会出现两种编码格式,一种是ANSI,另一种是utf-8。针对不同的编码格式,MATLAB在将txt文件里的内容导入到汇总表格时,需要运行不同的处理语句,确保txt文件里的内容能被正确导入。
数据识别模块设计:本模块的功能是在汇总表上处理错误的数据,完成对汇总表的自动修正。完成数据的导入后,因为OCR识别可能存在错误,所以数据识别模块的工作就是识别并且定位汇总表格上错误的数据。基于本设计对于报账系统自动化的目標,在构想处理方案时,希望做到的是发现错误并且能够自动改正错误。因此也引入了相似度算法,对可能出现的一些错误实现自动纠正,或者是为使用者手动纠正提供参考。
数据判断模块:在汇总表的基础上,通过对表上数据的分析判断得到借贷关系和会计科目。判断会计科目时额外需要关系数据库的辅助。得到这两项信息后,即完成了由汇总表到会计信息总表的过程。
表格生成模块设计:在本设计中,输出的财务表格有三种,分别是资产负债表、科目余额表和利润表。在会计信息总表的基础上,对表格上的金额依照会计科目和借贷关系进行统计和归类,将统计归类后的信息分别输出到三种财务表格的相应模板上,完成财务表格的编制。如果在以上模块中识别出错误并无法修正时,则需要人工参与修正。
3 系统测试部分
3.1 识别部分测试结果
汉字89%、符号98%、字母98%、数字96%,通过测试结果分析可以看出,数字的识别准确率已比较高,但文字识别准确率还有待提高,ocr识别字库需要不断训练积累,需要一定的时间,需要不断扩充识别字库来满足需求。二维码测试结果:发票二维码内的信息都是符号和数字,符号和数字识别率已到达96%。
识别速度达到OCR识别每张图片2.1s,二维码识别每张图片1.95s
3.2 票据提取部分测试结果
经过测试发现并解决问题,测得本设计图像处理平均时间为396秒
4 总结
本课题通过使用Matlab软件与Tesseract开源OCR引擎进行设计研究,对会计人员没有完整的自动化发票单据报账软件这一问题做出尝试,通过对OCR引擎的熟悉与训练,通过使用Matlab软件进行程序的开发,实现了从发票单据的图片输入、输入图片处理、有效数据的截取、数据的录入到通过程序进行自动报账,这样一系列完整的功能,证明了全流程的自动化报账软件实现是非常有前景的。
参考文献:
[1] 安然.基于OCR技术的原始凭证电子化管理系统的设计与 实现[D].吉林:吉林大学,2016.
[2] 陈东霞.浅谈高校财务预约报账系统的构建[J].会计之友, 2012,(35):127-128.
[3] 陈隆伟,张晓琼,黄昌勇.会计电算化全通用理论与会计软 件的全通用[A].财会月刊,2005,(1):5-6.
[4] 邓继忠,张泰岭.数字图像处理技术[M].广州:广东科技出 版社,2005.
[5] 吴狄,张冠伟.基于二维码识别技术的工业企业设备管理 系统的开发与应用[J]].数字技术与应用,2015,06.
[6] 祝锡萍,企业财务系统[M].杭州:浙江大学出版社,2009: 2-3.