GitHub-peaktangf/RecognizeCard: 能识别中国二代身份证的iOS Demo
一、项目简介
这是一个iOS平台上的Demo项目,旨在识别中国二代身份证。开发者由于在网上未找到合适免费的OCR相关的身份证识别demo,所以自己进行研究开发。项目中运用到了多种图像处理和文字识别技术,并且使用了OpenCV和TesseractOCRiOS开源框架。
二、核心技术
-
图像处理技术
- 灰度化处理:将图片每个像素点的RGB三个分量通过算法算出灰度值,使图像只含亮度信息。
- 二值化:把经过灰度化处理的图片转换为只含黑色和白色两种颜色的图像。
- 腐蚀:将二值图中的黑色块放大,连接相邻黑色像素点元素,用于连接身份证号码成矩形区域。
- 轮廓检测:在图片经过腐蚀操作后找出大的区域,从而定位身份证号码区域。
-
文字识别技术
通过识别图像将图像信息转化为计算机可输入的技术,例如项目中对身份证号码区域图像进行识别转化为字符串形式的号码。
-
开源框架
- OpenCV:一个开源跨平台计算机视觉和机器学习库,可完成人脸识别、身份证识别等图像相关功能。
- TesseractOCRiOS:针对iOS平台封装的Tesseract引擎库,是较为准确的开源OCR引擎。
三、实践案例
创建一个iOS项目,用CocoPods导入OpenCV和TesseractOCRiOS库,处理库不支持Bitcode机制等问题,并手动导入TesseractOCRiOS所需的英语语言包。创建RecogizeCardManager管理身份证识别相关代码,由于相关库基于c++编写,将RecogizeCardManager.m后缀改成.mm。在识别过程中,先利用OpenCV对身份证图片进行扫描和预处理,定位号码区域图片,再用TesseractOCR识别文字。在RecogizeCardViewController中实现拍照或从相册选取照片后进行身份证识别,并根据识别结果进行相应展示。
四、项目总结
该程序对身份证识别的正确率接近90%,识别正确率主要取决于图像预处理环节,包括腐蚀、取出身份证号码区域(轮廓提取)的算法等。识别速度方面,TesseractOCRiOS对清晰文字识别速度较快,但二值图处理后识别速度降低,可进一步优化。此系统原理还可应用于身份证其他信息、银行卡、车牌号等的识别。欢迎大家留言讨论对这个项目的看法或提出改进建议。
项目地址
数据统计
数据评估
本站链氪巴士提供的GitHub-peaktangf/RecognizeCard: 能识别中国二代身份证的iOS Demo都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。