最近项目用到身份证识别,在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源码)相关推荐

  1. android ocr识别源码_身份证识别OCR解决手动输入繁琐问题

    随着互联网金融的的发展,越来越多的互联网金融公司都推出了自己的金融APP,这些APP都涉及到个人身份证信息的输入认证,如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差. 为了提高在手机移动 ...

  2. android tensorflow文字识别身份证识别ocr文字识别商用源码

    一 ,文字识别简介 计算机文字识别,俗称光学字符识别,英文全称是Optical Character Recognition(简称OCR),它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并 ...

  3. OCR图片识别文字源码(支持多国文字识别)

    OCR图片识别文字源码(支持多国文字识别) 程序员帮帮

  4. 智能名片识别系统源码

    智能名片识别系统源码 一.名片识别产品介绍 1.精准识别名片信息,准确率高: 2.创建电子名片随时随地快速交换名片: 3.关联通讯录识别出来的名片信息,可以直接保存到手机本地的通讯里面: 4.关联地图 ...

  5. 身份证识别OCR 应用技术及应用行业

    银行卡开户.证券开户.火车票机票购买.旅馆入住登记--这时输入身份证信息就成了一件烦人事.如今更多的人倾向于在手机上办理各种业务,各大商家也主推这种营业方式来减轻营业厅压力,节约人力资源.但在在银行. ...

  6. 调用阿里云身份证识别OCR

    这个是需要收费的第三方身份证识别OCR的接口 这个是官方给出的案例和文档 https://market.aliyun.com/products/57124001/cmapi028587.htmlspm ...

  7. (0045) iOS 开发之MBProgressHUD 源码学习

    (0045) iOS 开发之MBProgressHUD 源码学习 第一部分:学习所得和分析线程 1.  学习到了kvo 的使用 和屏幕方向的旋转判断. 2. 如果调起这个 HUD 的方法不是在主线程调 ...

  8. ios水果风暴游戏源码项目下载

    这是一款ios水果风暴游戏源码下载,介绍给大家一下,喜欢的朋友可以下载学习一下吧. 应用介绍:这是一个以获得高分和挑战更高难度为目的的游戏.游戏中有九种不同的卡通水果,您可以交换屏幕中两个相邻水果的位 ...

  9. 比较不错的一个ios找茬游戏源码

    找茬游戏源码 ,这个是一款非常不错的ios找茬游戏源码,该游戏的兼容性非常好的,并且还可以支持ipad和iphone,UI界面设计得也很漂亮,游戏源码真的是一款非常完美,而且又很完整的一款休闲类的游戏 ...

最新文章

  1. 定理在数学中的简写形式_西方把勾股定理叫毕达哥拉斯定理,我们的教材上是不是该改改名?...
  2. python如何自定义函数_python如何自定义函数_后端开发
  3. Spring 4.1和Java 8:java.util.Optional
  4. python3.4学习笔记(九) Python GUI桌面应用开发工具选择
  5. kali2.0安装mysql,Ubuntu/kali上安装MySQL,设置远程访问详细教程
  6. 当航运遇上区块链: 有人在砸钱,有人想上车
  7. SpringMVC初写(四)上传和下载功能的实现
  8. JDK自带的实用工具——native2ascii.exe
  9. python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的
  10. 在横道图中如何实现多级项目计划管控
  11. 案例分享:陕西西安599条背街小巷改造提升,推行“多杆合一”
  12. 史玉柱自述营销心得:降价就是自杀
  13. shiro中使用自定义filter后,anon不生效解决方案
  14. VUE实现DIV点击换色
  15. 工信部电信投诉网站入口
  16. 三维目标识别算法综述
  17. 【国家集训队2011】【BZOJ2141】排队
  18. 【代码分解】用Python实现一个电影订票系统
  19. 如何将 O2OA (翱途) 集成到阿里钉钉
  20. hackbar“学习版”

热门文章

  1. 千寻和省cors精度对比_使用中海达RTK验证千寻cors账号对比省cors网络其测量效果如何...
  2. 如何将 O2OA (翱途) 集成到阿里钉钉
  3. 匹配表情emoji 正则_js判断替换emoji表情?
  4. 基于89c51的74ls138模块的四位数码管动态显示
  5. mysql dba日常_DBA日常工作职责总结
  6. cad连筋字体怎么安装_CAD字体还有这么多学问?出现乱码怎么办?送你2800款字体盘它...
  7. 电脑注销.dll文件
  8. UE4 SVN工程文件备份
  9. 【BZOJ 1925】【SDOI 2010】地精部落
  10. Leave-one-out——留一法