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
相关文章:
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星安装步骤有哪些常见问题?
如何正确选择百度移动适配建站域名?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何用虚拟主机快速搭建网站?详细步骤解析
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何续费美橙建站之星域名及服务?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何快速启动建站代理加盟业务?
建站之星展会模版如何一键下载生成?
大连 网站制作,大连天途有线官网?
北京网站制作的公司有哪些,北京白云观官方网站?
如何通过远程VPS快速搭建个人网站?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
公司网站设计制作厂家,怎么创建自己的一个网站?
建站之星安装路径如何正确选择及配置?
建站上传速度慢?如何优化加速网站加载效率?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
如何用美橙互联一键搭建多站合一网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
建站主机与虚拟主机有何区别?如何选择最优方案?
临沂网站制作公司有哪些,临沂第四中学官网?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
香港网站服务器数量如何影响SEO优化效果?
如何在阿里云域名上完成建站全流程?
北京的网站制作公司有哪些,哪个视频网站最好?
如何设置并定期更换建站之星安全管理员密码?
Android滚轮选择时间控件使用详解
网站图片在线制作软件,怎么在图片上做链接?
高端云建站费用究竟需要多少预算?
网站制作话术技巧,网站推广做的好怎么话术?
,巨量百应是干嘛的?
建站主机核心功能解析:服务器选择与网站搭建流程指南
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站之星如何配置系统实现高效建站?
简单实现Android文件上传
想学网站制作怎么学,建立一个网站要花费多少?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何快速搭建高效WAP手机网站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何快速搭建高效WAP手机网站吸引移动用户?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站之星免费模板:自助建站系统与智能响应式一键生成
建站之星伪静态规则如何设置?
*请认真填写需求信息,我们会在24小时内与您取得联系。