最近项目比较轻松,就花时间研究一下OCR技术,增加自身技能。为啥花时间研究这个OCR技术?因为我现在做的是一个银行项目需要读取客户银行卡卡号以及身份证信息,我们现在在项目上采用方式是通过第三方公司背夹来读取这些信息。我个人觉得这种模式有点笨重,尤其对那些上门办理业务柜员来说,这是一个很大痛点。所以我通过利用空闲时间研究一下,发现ORC技术可以解决掉这个问题。废话不多说直接看讲解OCR技术:
什么是OCR技术?
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
看上去是不是很高大上,有一点懵逼?
其实你去网上一查,关于OCR SDK还是蛮多的,比如汉王、云脉等;这些是收费的而且费用挺昂贵的。开源的sdk也有比如谷歌Tesserac等。
本文采用的是开源框架bank_io与libexidcard,为啥使用它们?因为我比较了很多开源框架发现只有它们识别正确率保证在90%以上。其原理是通过相机捕获物体实时图像,然后通过核心方法(用C写的方法)去实时图像处理,当所需要的信息获取完毕之后相机就会拍一张物体照片。核心代码如下:
完整demo
demo里有完整注释,不要忘记star!!!