项目背景:基于手机平台,识别身份证编号、姓名、年龄、地址,性别等;

具体实施方案:

1、基于身份证分类器检测身份证的位置,关于身份证分类器,采用的是HAAR+adaboost算法进行训练;

2、在已经检测到的候选身份证区域里,进行垂直边缘检测;

3、形态学运行,连接垂直边缘;

3、去除干扰连通区域,主要基于连通区域的长宽比,面积,质心相对位置,去除典型的非编号区域;

4、选择质心纵坐标最大的连通区域作为编号数字区域;

5、垂直投影,进行编号的数字分割;

6、基于分割的数字位置,综合判断该区域是不是真正的身份证编号区域,如果是,说明当前候选区域是真正的身份证,否则,说明当前区域是误检区域 ;

7、基于所有的数字中心,通过最小二乘直线拟合,进行身份证的倾斜校正;

8、按照身份证的固定布局规则,获得剩下各个元素的位置,即姓名、性别、地址等;

9、基于垂直投影方法,获取各个元素的单个字符位置;

10、数字识别,采用最简单的模板匹配算法;

11、汉字识别,基于tessract库,但是直接使用该库,识别率很低,只要60%左右,本项目进行了汉字增强处理,主要是外部做一些预处理,比如去除一些干扰,把一些粘连区域分开等,然后在使用tessract库,汉字识别率显著提高;

12、android平台移植,关于opencv的android开发,可以直接参考opencv相关历程,tessract这一块,有一个分支哭可以直接在android上跑,不过不能做到随心的去修改调用,本项目使用的是tessract的源码,通过NDK,自己编译的,呵呵,花了很长时间的尝试,最终搞定;

实验结果:针对清晰的身份证图像,同时倾斜角度在正负10度以内的,数字 识别率99%,汉字识别率在92%以上;

不足:地址里的数字和汉字有时很难区域开来,造成一定的错误识别,美中不足啊,

机器视觉学习系列四:身份证识别相关推荐

  1. [jQuery学习系列四 ]4-Jquery学习四-事件操作

    [jQuery学习系列四 ]4-Jquery学习四-事件操作 前言: 今天看知乎偶然看到中国有哪些类似于TED的节目, 回答中的一些推荐我给记录下来了, 顺便也在这里贴一下: 一席 云集 听道 推酷 ...

  2. 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题

    程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...

  3. Identity Server4学习系列四之用户名密码获得访问令牌

    1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...

  4. android 键编译,Android 音视频学习系列 (四) 一键编译 32/64 位 FFmpeg 4.2.2

    前言 2020/5/20 增加了硬件解码编译脚本 编译环境 Centos + NDK20b + FFmpeg4.2.2 + Android-21/16 2020/4/26 更新了编译 64 位脚本 编 ...

  5. 吕鑫MFC学习系列四

    第一个是Win32工程转换而成MFC工程: 建一个win32项目,window应用程序,然后删除了所有函数,只留下主函数,编写过程中转MFC,所以右击项目,选择静态库MFC,然后在stdafx.h中用 ...

  6. Python - 深度学习系列1-目标识别 yolo

    1 目的 实现基于yolo网络的目标识别. 使用github上开源的代码.那么需要做的事只有几样: 1 原理.多少还是知道一下yolo的原理以及应用特点. 2 环境.对应的安装包,特别是cpu.gpu ...

  7. Java NIO学习系列四:NIO和IO对比

    前面的一些文章中我总结了一些Java IO和NIO相关的主要知识点,也是管中窥豹,IO类库已经功能很强大了,但是Java 为什么又要引入NIO,这是我一直不是很清楚的?前面也只是简单提及了一下:因为性 ...

  8. RabbitMQ入门学习系列(四) 发布订阅模式

    什么时发布订阅模式 把消息发送给多个订阅者.也就是有多个消费端都完整的接收生产者的消息 换句话说 把消息广播给多个消费者 消息模型的核心 RabbitMQ不发送消息给队列,生产者也不知道消息发送到队列 ...

  9. 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce

    场景:将Python程序通过hadoop-streaming提交到Hadoop集群执行. 参考:http://www.michael-noll.com/tutorials/writing-an-had ...

最新文章

  1. vue父组件ajax改变数据,vue父组件传了变量给子组件,改变子组件的对象时,父组件也跟着改变...
  2. ODB——基于c++的ORM映射框架尝试(安装)
  3. android8支持设备,Android8.0奥利奥支持机型有哪些 安卓8.0奥利奥适合设备详细介绍...
  4. 如何科学的使用华为云
  5. 【leetcode】963. Minimum Area Rectangle II
  6. 百度js选择器fox
  7. python lambda函数详细解析(面试经常遇到)
  8. Exchange Server 2013部署系列之一:部署环境介绍
  9. AI智能电话机器人源码搭建的原理
  10. [转载]计算机端口详解
  11. 记一次mykings暗云挖矿木马的排查与解决
  12. 关于开源软件开发的若干问题
  13. ACP敏捷管理-知识要点
  14. html文件导入到u盘中,技术分享 - 编程实现U盘插入自动复制U盘内容到本地
  15. 【协议】MQTT、CoAP、HTTP比较,MQTT协议优缺点
  16. win10控制面板快捷键_你没玩过的全新版本 Win10这些操作你知多少
  17. 英特尔的指令集体系结构_新指令集将上线:Intel 新版指令集手册确认 Alder Lake 架构的存在...
  18. Win11终于兼容安卓App!微软推送安卓子系统
  19. 04_nand基本操作
  20. hp服务器pe系统安装win7系统安装系统安装失败,使用硬盘安装系统出现pGptRestore部署失败怎么解决?...

热门文章

  1. PINN内嵌物理知识神经网络投稿期刊总结
  2. Win7 手动开启 WiFi 共享
  3. thymeleaf 使用手册
  4. 什么是物联网AIoT?
  5. 赚翻,快速带你学会Python爬虫接私单
  6. 挖掘肖特基二极管保护电路的小窍门
  7. HASH和HMAC(5):SHA-384、SHA-512、SHA-512/224和SHA-512/256算法原理
  8. 剪贴板查看器:CopyClip 2 for Mac
  9. 如何正确高效使用搜索引擎
  10. CSS(列表+表格+链接+自定义鼠标光标)样式