基于iOS平台的OCR识别技术的分析与研究

最近老大要求是通过使用Tesseract OCR iOS来 对货柜的货柜号进行识别,然后去深入研究了下这方面的东西。


以下引自百度百科:

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。


看上去很高大上有木有!


后来查了下资料,在iOS端的OCR-SDK还是挺多的,国内的有汉王,云脉等等,国外的话有ABBYY,Tesseract 等等,本菜鸟这次的研究就是基于Tesseract的。


根据官方提供的API我的Demo很快就做出来了,下面为识别图片:



然后这是识别结果:



- -....SHEN ME GUI!!!!!!!

好吧,识别失败了。


于是- -,老大叫我退而求其次的只识别货柜的货柜号



然后,我用PhotoShop(- -||)p了下:


结果:



哟,识别率还挺高的。


以下是我分析出来的原因:

Tesseract OCR iOS提供了一个很强大的识别图片中文字的功能,只要你导入了相应的语言包,然后提供一个识别度很高的图片的话(注意这里!是识别度很高的图片- -),那么他的识别率是相当高的。

然而,这个lib给我们提供的对图片进行处理的api是很少的,只有两个:

-(UIImage *)blackAndWhite;
-(UIImage *)grayScale;

只是简单的将图片变成黑白及增加灰度。


再看看我们强大的百度百科额- -,


OCR软件主要是由下面几个部分组成。
图像输入、预处理:
图像输入:对于不同的图像格式,有着不同的存储格式,不同的压缩方式,目前有OpenCV,CxImage等开源项目 。预处理:主要包括二值化,噪声去除,倾斜较正等
二值化:
对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。
噪声去除:
对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除
倾斜较正:
由于一般用户,在拍照文档时,都比较随意,因此拍照出来的图片不可避免的产生倾斜,这就需要文字识别软件进行较正。
版面分析:
将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优的切割模型。
字符切割:
由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能,这就需要文字识别软件有字符切割功能。
字符识别:
这一研究,已经是很早的事情了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。
版面恢复:
人们希望识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫做版面恢复。
后处理、校对:
根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。

看上去又很高大上对不- -

其实就是说,这个lib是用来识别一个处理好了的识别率很高的图片的lib.


所以,我决定用一个图片处理的lib先对图片进行处理然后再用Tesseract对他进行识别- -。

于是,我找到了OpenCV..

OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

- -(也是百度百科的)


我这种菜鸟当然不可能在短时间内学会OpenCV的所有知识的- -,所以,在简单的了解后我就去万能的Git上找东西了,万幸的我找到一个基于OpenCV的对图片进行倾斜校正及滤镜优化的lib,MAImagePickerController

于是,我试着将这个lib与OCR进行结合,效果杠杠滴,一口气识别五个,不费劲,哈哈,不过因为太懒所以只做了识别英文的。



Demo在此:http://download.csdn.net/detail/ouq68/8465893


十分抱歉,之前资源上传错了,,,现在补上新的地址,之前没下载到的请发邮箱给我,,我补发给您。。。

http://download.csdn.net/detail/ouq68/8528749


转载请注明出处,哈哈哈~

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值