iOS身份证识别(OCR源码)
最近项目用到身份证识别,在github上搜了一堆demo,在Google上找了一堆代码,有能识别出证件照的,但是都是打包成.a的静态库,没有源码,我努力吃了几天书,有了一点研究成果,现在贴出来与大家分享,要是有更好的方法,希望大神指正,共同探讨解决方案。(以下代码本人亲测可用,正在进一步探索智能识别,如有兴趣,请加入)
这里用到了两个开源库:OpenCV、TesseractOCRiOS,两个语言包chi_sim、eng。身份证识别的流程主要有:灰度化,阀值二值化,腐蚀,轮廓检测,取出身份证号码区域,TesseractOCR识别文字。
身份证识别核心源码:
UIImage * image = [UIImage imageNamed:@"abc.png"];//将UIImage转换成Matcv::Mat resultImage;UIImageToMat(image, resultImage);//转为灰度图cvtColor(resultImage, resultImage, 6);//利用阈值二值化cv::threshold(resultImage, resultImage, 100, 255, CV_THRESH_BINARY);//腐蚀,填充(腐蚀是让黑色点变大)cv::Mat erodeElement = getStructuringElement(cv::MORPH_RECT, cv::Size(140,140)); cv::erode(resultImage, resultImage, erodeElement);//轮廊检测std::vector> contours;//定义一个容器来存储所有检测到的轮廊cv::findContours(resultImage, contours, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));//取出身份证号码区域std::vectorrects;cv::Rect numberRect = cv::Rect(0,0,0,0); std::vector>::const_iterator itContours = contours.begin();for ( ; itContours != contours.end(); ++itContours) {cv::Rect rect = cv::boundingRect(*itContours);rects.push_back(rect);NSLog(@"位置分别为:x=%d,y=%d,width=%d,height%d",rect.x,rect.y,rect.width,rect.height);//算法原理:如果新的区域范围宽度大于已赋值区域宽度,并且宽度为高度的五倍则赋予新值if (rect.width > numberRect.width && rect.width > rect.height * 5 && rect.height > 200 && rect.height < 300) {numberRect = rect;}}//定位成功成功,去原图截取身份证号码区域,并转换成灰度图、进行二值化处理cv::Mat matImage;UIImageToMat(image, matImage);resultImage = matImage(numberRect);cvtColor(resultImage, resultImage, cv::COLOR_BGR2GRAY);cv::threshold(resultImage, resultImage, 80, 255, CV_THRESH_BINARY);//将Mat转换成UIImageUIImage *numberImage = MatToUIImage(resultImage);
iOS身份证识别(OCR源码)相关推荐
- android ocr识别源码_身份证识别OCR解决手动输入繁琐问题
随着互联网金融的的发展,越来越多的互联网金融公司都推出了自己的金融APP,这些APP都涉及到个人身份证信息的输入认证,如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差. 为了提高在手机移动 ...
- android tensorflow文字识别身份证识别ocr文字识别商用源码
一 ,文字识别简介 计算机文字识别,俗称光学字符识别,英文全称是Optical Character Recognition(简称OCR),它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并 ...
- OCR图片识别文字源码(支持多国文字识别)
OCR图片识别文字源码(支持多国文字识别) 程序员帮帮
- 智能名片识别系统源码
智能名片识别系统源码 一.名片识别产品介绍 1.精准识别名片信息,准确率高: 2.创建电子名片随时随地快速交换名片: 3.关联通讯录识别出来的名片信息,可以直接保存到手机本地的通讯里面: 4.关联地图 ...
- 身份证识别OCR 应用技术及应用行业
银行卡开户.证券开户.火车票机票购买.旅馆入住登记--这时输入身份证信息就成了一件烦人事.如今更多的人倾向于在手机上办理各种业务,各大商家也主推这种营业方式来减轻营业厅压力,节约人力资源.但在在银行. ...
- 调用阿里云身份证识别OCR
这个是需要收费的第三方身份证识别OCR的接口 这个是官方给出的案例和文档 https://market.aliyun.com/products/57124001/cmapi028587.htmlspm ...
- (0045) iOS 开发之MBProgressHUD 源码学习
(0045) iOS 开发之MBProgressHUD 源码学习 第一部分:学习所得和分析线程 1. 学习到了kvo 的使用 和屏幕方向的旋转判断. 2. 如果调起这个 HUD 的方法不是在主线程调 ...
- ios水果风暴游戏源码项目下载
这是一款ios水果风暴游戏源码下载,介绍给大家一下,喜欢的朋友可以下载学习一下吧. 应用介绍:这是一个以获得高分和挑战更高难度为目的的游戏.游戏中有九种不同的卡通水果,您可以交换屏幕中两个相邻水果的位 ...
- 比较不错的一个ios找茬游戏源码
找茬游戏源码 ,这个是一款非常不错的ios找茬游戏源码,该游戏的兼容性非常好的,并且还可以支持ipad和iphone,UI界面设计得也很漂亮,游戏源码真的是一款非常完美,而且又很完整的一款休闲类的游戏 ...
最新文章
- 定理在数学中的简写形式_西方把勾股定理叫毕达哥拉斯定理,我们的教材上是不是该改改名?...
- python如何自定义函数_python如何自定义函数_后端开发
- Spring 4.1和Java 8:java.util.Optional
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
- kali2.0安装mysql,Ubuntu/kali上安装MySQL,设置远程访问详细教程
- 当航运遇上区块链: 有人在砸钱,有人想上车
- SpringMVC初写(四)上传和下载功能的实现
- JDK自带的实用工具——native2ascii.exe
- python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的
- 在横道图中如何实现多级项目计划管控
- 案例分享:陕西西安599条背街小巷改造提升,推行“多杆合一”
- 史玉柱自述营销心得:降价就是自杀
- shiro中使用自定义filter后,anon不生效解决方案
- VUE实现DIV点击换色
- 工信部电信投诉网站入口
- 三维目标识别算法综述
- 【国家集训队2011】【BZOJ2141】排队
- 【代码分解】用Python实现一个电影订票系统
- 如何将 O2OA (翱途) 集成到阿里钉钉
- hackbar“学习版”
热门文章
- 千寻和省cors精度对比_使用中海达RTK验证千寻cors账号对比省cors网络其测量效果如何...
- 如何将 O2OA (翱途) 集成到阿里钉钉
- 匹配表情emoji 正则_js判断替换emoji表情?
- 基于89c51的74ls138模块的四位数码管动态显示
- mysql dba日常_DBA日常工作职责总结
- cad连筋字体怎么安装_CAD字体还有这么多学问?出现乱码怎么办?送你2800款字体盘它...
- 电脑注销.dll文件
- UE4 SVN工程文件备份
- 【BZOJ 1925】【SDOI 2010】地精部落
- Leave-one-out——留一法