Lesson 6.1 身份证识别: 提取字段
Lesson 6.1 身份证识别: 提取字段
小编最近试试识别身份证上面的文字。
第一步还是图像分割,第一步还是提取文本行,然后提取字段。
看上去,第一个感觉就是所有文字都是黑色的。可以简单过滤一下图片的RGB通道,剩下黑色部分,如下是结果:
1
2
|
boundary = ([0, 0, 0], [100, 100, 100])
preprocess_bg_mask = PreprocessBackgroundMask(boundary)
|
基本上所有背景都被去掉了,但是还有头像会阻碍检测文本行,所以把头像部分也去掉了。
1
2
|
left_half_id_card_img_mask=np.copy(id_card_img_mask)
left_half_id_card_img_mask[:,norm_width/2:]=0
|
这样往左投影求和就可以找到文本行。然后在图片上,画上文本行即可。
然后每一行进行垂直投影,就可以找到所有字段的位置,当然还有一些噪音。
1
2
3
4
5
6
7
8
9
10
11
12
|
## char extraction
for line_range in line_ranges:
start_y, end_y = line_range
end_y += 1
line_img = id_card_img_mask[start_y: end_y]
vertical_sum = np.sum(line_img, axis=0)
vertical_peek_ranges = extract_peek_ranges_from_array(
vertical_sum,
minimun_val=40,
minimun_range=1)
vertical_peek_ranges2d.append(vertical_peek_ranges)
vertical_peek_ranges2d = merge_chars_into_line_segments(vertical_peek_ranges2d)
|
然后我们可以定义
第一行,第一个字段是名字
第二行,第一个字段是性别
第二行,第二个字段是民族
等等,如此类推。。。下面是以不同的颜色代表不同的字段的调试图片
如何通过Docker安装虫数据的代码可以见 github
运行一下命令可以获取结果:
1
2
3
4
|
exportCAFFE_MODEL=/opt/deep_ocr/data/trained_models/mnist_model
exportDEEP_OCR_ROOT=/opt/deep_ocr
deep_ocr_id_card_segmentation--img$DEEP_OCR_ROOT/data/id_card_img.jpg\
--debug_path/workspace/debug
|
所有身份证的图像分割图片保存在这里 “/workspace/debug”,具体要看用户映射到本机电脑的哪个地方。
下一篇文章将会整合这个分割算法,对身份证上面的字段识别。
编憋了两周,终于憋出了一个简单的身份证识别系统。
基于图像识别,暂时没有加语义上面的纠正。
上一篇文章介绍了如何分割字段,这篇文章主要显示识别结果。
对每个字段的识别方法类似于Lesson 1: 如何做文本行和文字分割分割每个字符。
如何安装请见github项目的首页 通过 Docker 安装
1
2
3
4
5
|
docker run -ti --volume=${HOME}/deep_ocr_workspace:/workspace jinpengli/deep_ocr_cpu_docker:latest /bin/bash
cd /opt/deep_ocr
git pull origin master
export WORKSPACE=/workspace
deep_ocr_id_card_reco --img $DEEP_OCR_ROOT/data/id_card_img.jpg --debug_path /tmp/debug --cls_sim ${WORKSPACE}/data/chongdata_caffe_cn_sim_digits_64_64 --cls_ua ${WORKSPACE}/data/chongdata_train_ualpha_digits_64_64
|
识别结果为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
...
ocrres:
============================================================
name
韦小宝
============================================================
address
北京市东城区累山前街4号
紫禁城敬事房
============================================================
month
12
============================================================
minzu
汉
============================================================
year
1654
============================================================
sex
男
============================================================
id
1X21441114X221243X
============================================================
day
20
|
暂时不是很稳定,需要加一些语义模型。等等小编吧。。。。
Lesson 6.1 身份证识别: 提取字段相关推荐
- JAVA基于百度云文字(车牌、身份证、图片)识别提取
基于百度云文字(车牌.身份证.图片)识别提取 由于自己想写一个停车场项目,所以去查询了百度API文档,可以实现所有图片中文字的提取,此贴为傻瓜式教程,希望所有像我一样的初学者都可以看懂,有所收获,话不 ...
- Java实现身份证识别注册
博主在开发项目时,需要使用Java完成身份证识别功能,如图所示: 后来,便采取了百度识别接口中的身份证识别技术,即通过该接口,实现识别身份证中的信息.下面是实现步骤: 首先,需要去百度平台开通百度身份 ...
- android ocr识别源码_身份证识别OCR解决手动输入繁琐问题
随着互联网金融的的发展,越来越多的互联网金融公司都推出了自己的金融APP,这些APP都涉及到个人身份证信息的输入认证,如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差. 为了提高在手机移动 ...
- 身份证识别技术方案介绍
身份证识别技术方案介绍 身份证识别功能说明 通过合合信息全球领先的 OCR(光学字符识别 Optical Character Recognition)技术,对身份证正反面图片进行识别,返回身份证图片上 ...
- Python使用阿里API进行身份证识别
Python使用阿里API进行身份证识别 1. 作者介绍 2. 身份证识别介绍 3. 调用阿里智能云API 4. 代码解析 4.1导入库 4.2 完整代码 4.3 实验结果 参考 1. 作者介绍 孟莉 ...
- 身份证识别和聚合收单
一,身份认识别(这里的操作是后端进行操作的) 1.需要一个身份证读卡机器,安装相应sdk 身份证识别和聚会收单安装包我放在文章最后,需要自己提取 2,写代码实现该功能: 引入jar包 <depe ...
- 移动端身份证识别,APP证件信息采集
移动端身份证识别app应用背景 移动端身份证识别app的应用,让需要实名制的应用更加方便,快捷,提高用户体验,为人们解决繁琐输入的问题,随着智能终端(智能手机及平板电脑)及移动通信(4G)的发展,人们 ...
- 微信小程序+百度AI OCR二代身份证识别
微信小程序内虽然有OCR识别功能 但是收费是按次计费的,还是选用了百度ai提供的OCR识别二代身份证. // 上传人面像upFileFront:function(e){let type = e.cur ...
- 技术指南:手机拍照身份证识别技术
近几年,各种各样的APP正在取代PC端软件成为用户应用方式的首选,而在APP中,用户信息注册是必不可少的环节,尤其是大型公众平台.第三方支付平台.二手车交易平台等,更是有庞大的用户群体来进行信息输入. ...
最新文章
- 执行cmd并获得结果_MySQL 服务无法启动 请键入 NET HELPMSG 3523 以获得更多的帮助...
- 模块开发卷宗是什么_详论单片机固件模块化架构设计(精华)
- Ubuntu 11.04上搭建Android开发环境
- 初识 HTML5(一)
- 用python计算两个二维list依据第二维的前一个数据相加
- 引用管理器没有程序集_如何使用Zotero插入引用文献
- 【BZOJ3160】万径人踪灭 Manacher+FFT
- Python 字符串查找子串的方法之 index() 和 find()
- MongoDB数据库的迁移
- 暴跌3000亿,“酱茅”怎么了?
- FTP服务器上传文件操作方法,FTP工具(FLASHFXP)下载使用教程
- keil 5 注册机使用及报错解决办法
- linux基础命令(一)
- 研究生硕士论文开题报告中的进度和安排该怎么写?
- JSON在线序列化网站
- WindowsCMD配置代理
- 12306所有车次及时刻表的爬取中
- 第四章 数据定义语言(Data Definition Language,DDL)
- Mac air苹果笔记本安装Win10双系统教程(绝对能成功,超详细!)[转]
- Error receiving broadcast Intent com.android.vending.billing PURCHASES_UPDATED flg=0x10 has extras
热门文章
- 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
- java反射po转vo_三步走使用Dozer (Do,Po,Vo转换工具)
- 说说你对 HTML 语义化的理解?
- 利用fputc函数写一个putw(w,fp)函数,将整数w写入fp所指文件中; 利用fgetc函数写一函数getw(fp)从所指文件读出一整数
- 在关联枚举中使用Codable
- 使用Angular CLI从蓝本生成代码
- Java vararg(动态参数)的应用
- LUA C 交互 cocos
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- oracle 11g RAC Grid Infrastructure