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转换成UIImage
UIImage *numberImage = MatToUIImage(resultImage);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS身份证识别(OCR源码)
# IOS身份证识别详解
# IOS
# OCR源码
# iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)
# IOS开发之由身份证号码提取性别的实现代码
# iOS身份证号码识别示例
# IOS 身份证校验详细介绍及示例代码
# iOS正则表达式验证手机号、邮箱、身份证号等
# iOS判断身份证号码是否正确的方法
# iOS Touch ID 身份认证
# Objective-C实现身份证验证的方法示例
# 身份证号码
# 转换成
# 都是
# 如有
# 吃了
# 希望能
# 大神
# 找了
# 分别为
# 谢谢大家
# 大家分享
# 贴出
# 开源
# 变大
# 检测到
# 共同探讨
# 主要有
# 并转
# 证件照
# imageNamed
相关文章:
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何基于云服务器快速搭建网站及云盘系统?
用v-html解决Vue.js渲染中html标签不被解析的问题
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
湖北网站制作公司有哪些,湖北清能集团官网?
高端建站三要素:定制模板、企业官网与响应式设计优化
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何通过山东自助建站平台快速注册域名?
,想在网上投简历,哪几个网站比较好?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
c# await 一个已经完成的Task会发生什么
北京制作网站的公司,北京铁路集团官方网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Swift中循环语句中的转移语句 break 和 continue
独立制作一个网站多少钱,建立网站需要花多少钱?
济南专业网站制作公司,济南信息工程学校怎么样?
建站VPS选购需注意哪些关键参数?
Java解压缩zip - 解压缩多个文件或文件夹实例
专业网站建设制作报价,网页设计制作要考什么证?
Swift中switch语句区间和元组模式匹配
宝塔建站无法访问?如何排查配置与端口问题?
如何通过虚拟主机空间快速建站?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
大连 网站制作,大连天途有线官网?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
定制建站流程步骤详解:一站式方案设计与开发指南
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
免费ppt制作网站,有没有值得推荐的免费PPT网站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何快速搭建响应式可视化网站?
如何在IIS中新建站点并解决端口绑定冲突?
建站org新手必看:2024最新搭建流程与模板选择技巧
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
小程序网站制作需要准备什么资料,如何制作小程序?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何高效利用亚马逊云主机搭建企业网站?
建站主机无法访问?如何排查域名与服务器问题
建站之星代理如何获取技术支持?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
想学网站制作怎么学,建立一个网站要花费多少?
如何通过VPS建站无需域名直接访问?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
网站制作的步骤包括,正确网址格式怎么写?
电商网站制作公司有哪些,1688网是什么意思?
*请认真填写需求信息,我们会在24小时内与您取得联系。