在一些特定场景下我们需要利用iPhone(or any iOS devices)的摄像头来进行光学识别(OCR-Optical Character Recognition),本文即是对此方向的研究。
版权所有,如转载请先联系indie.luo@gmail.com。
一些轮子:
- TesseractOCR
Tesseract OCR iOS | 开源的OCR框架,在其GitHub页面上可发现仍然持续更新中。
它是Tesseract框架的一个iOS实现。
关于当前(Jul 19, 2016)TesseractOCR-iOS的一些注意事项:
使用的Tesseract库版本为 3.03-rc1。所以在Github上找到的3.04语言训练文件不能用会报错。
实测可以使用旧版3.02版本的语言训练文件。(同样的问题出现在chi_sim, jp等语言上)。
Github的issues里作者有展开讨论更新3.04的问题,因为官版tag打的位置有bug,所以现在最好还是等下一个更新版。
- GPUImage
GPUImage | 不用多说,Github上闻名的几个iOS项目之一。一考虑到本项目需要一些摄像头控制,一些图片的调整,就想到GPUImage会派上用场。
- OpenCV-iOS
利用机器视觉,识别文档边缘,判断方向,识别照片的视角扭曲,对应作出修改等。
- ImageMagick
ImageMagick | 对图片的进一步修改/编辑操作,可以使用这个命令行版的“Ps”工具。例如场景:需要对有倾斜拍摄的图片进行视角扭曲,可以很好的利用该工具提供的Perspective Distortion(从平时使用Ps做Perspective Crop裁剪得来灵感)。
定义存储数据类型
当前研究是做ID识别,先定义一个存储ID数据的对象。
满足以下要求:
- 实现 NSCoding和NSCopying
-
字段 ID号码,姓名,民族,住址,有效期,签发机关
-
比较方法 -isEqualToID:
-
描述方法 -description
组织问题
识别是基于整张图片的,所以即使正确识别出所有文字,引擎也无法分辨谁是谁。
所以如果希望区分内容,请在识别之前,对图片进去分割。