目录

  • 如何将一张身份证图像的信息识别出来?
    • 身份证识别点我
    • 银行卡识别点我
    • 第一步 目标检测
    • 第二步 图像校正
      • 如何获取匹配点对坐标
      • 求解透视变换矩阵
    • 第三步 文本检测
      • CTPN
    • 第四步 文本识别
      • CRNN
    • 最后 信息抽取
  • 总结

如何将一张身份证图像的信息识别出来?

身份证识别点我

银行卡识别点我

目前,人社、金融、工商、公安等政府办事部门使用身份证OCR技术,可以快速识别用户身份信息,缓解政府部门办事压力,减少业务办理的等待时间,是智能识别产业在政务领域的一大突破。

百度、优图等互联网大厂纷纷建立智能识别开放平台。

那么我们不仅要问一张身份证图像信息是如何被精确的结构化识别和传递的呢?

本文将借助项目经验,以身份证信息识别为示例,着重将这一识别流程和框架总结介绍。

第一步 目标检测

毫无疑问我们第一步需要检测和定位我们感兴趣的区域,这是高精度识别的基础。

也就是说我们首先要找到身份证在图像上是否存在,如果存在那么它大概在什么图像坐标位置。

这一步可采用主流目标检测算法有YOLOv3,SSD,Faster RCNN等。

第二步 图像校正

实际应用场景中图像可能是多角度放置的。

需要通过透视变换将变形的目标校正到良好的俯瞰平面。向下面图示一样。。

如何获取匹配点对坐标

由透视变换原理,求解透视变换矩阵至少需要4点对映射。

也就是说我们需要获得至少包括身份证卡片的四个顶点,将其投影到一个标准的卡片尺寸大小。

我们可以根据行业标准获取卡片长宽比为1.6:1,可设置目标顶点坐标(0,0)(1024,0)(1024,640)(0,640)

那么问题来了,图像中身份证顶点坐标如何获取?

经验告诉我们身份证卡边都是直线,透视变换后基本也是直线,通过直线检测获取四条直线相交即可获得四个顶点坐标。直线检测可采用Hough Transform, LSD等。但这些方法鲁棒性较差,直线检测容易受背景干扰。

基于深度学习的关键点检测算法登场!!!

Cascaded Pyramid Network 来自face++2017年coco keypoint benchmark 数据集冠军的文章。主要提出了基于CPN(Cascaded PyramidNetwork)结构的人体关键点检测框架。

采用CPN方法获取关键点还有一大优点相较于传统方法,那就是关键点是有序的,再也不用面对180翻转怎么办的鸡肋问题了。。。

当然也有其他关键点检测算法例如 Mask RCNN。。。

求解透视变换矩阵

不满足四点对?基于四顶点扩增标签点数量。使用最佳子集来产生单应矩阵估计内点和异常值,提升校正效果的鲁棒性。

OpenCV cv2.findHomography()算法使用了RANSAC或者LEAST_MEDIAN(由标志决定)。最优化估计的好的匹配被叫做inliers,而其他的叫做outliers。返回一个掩图 mask 来指定inlier和outlier。如下:

M, mask = cv2.findHomography(pts0, pts1, cv2.LMEDS)
dst = cv2.warpPerspective(img, M, (WIDTH, HEIGHT))

第三步 文本检测

处理到目前为止我们得到了什么?一张张校正过的身份证图像。。。

接下来我们进行文本检测

文本检测不是一件简单的任务,尤其是复杂场景下的文本检测,非常具有挑战性。自然场景下传统行投影,梯度分割等算法局限性凸显。

例如,MSER(Robust wide-baseline stereo from maximally stable extremal regions) 最大稳定极值区域对文字形状变化的适应性和抗干扰性比较差。

文本检测本质上也是一种目标检测,可通对Faster-RCNN这类通用目标检测网络进行改进,设计出适合文本检测全新架构。

CTPN

采用基于faster rcnn等通用物体检测框架的算法都会面临一个问题?怎么生成好的text proposal?这个问题实际上是比较难解决的。因此在这篇文章中作者提供了另外一个思路,检测一个一个小的,固定宽度的文本段,然后再后处理部分再将这些小的文本段连接起来,得到文本行。

之所以选用CTPN这个文本检测框架是有原因的:

  • 将文本检测任务转化为一连串小尺度文本框的检测;
  • 引入RNN提升文本检测效果; 利用特征前后文信息提升鲁棒性;
  • Side-refinement(边界优化)提升文本框边界预测精准度。

这里一些同学该反驳了,CTPN有个大缺点!对于非水平的文本的检测效果并不好!!

这个嘛 前面我们预处理对身份证图片进行了校正,文本位于水平方向的,完全可以与CTPN无缝衔接,充分发挥CTPN良好的工业化适用能力。

推荐一篇文本检测算法综述

再来一篇。。。

文本检测效果如下

第四步 文本识别

得到多个文本行图像后,就要进行字符识别
传统的方法比如投影分割出单字后进行通过模板匹配,浅层神经网路分类识别几乎已经没有市场。
现今基于深度学习的端到端OCR技术正大行其道。

主要有两大技术方向CRNN OCR和attention OCR。其实这两大方法主要区别在于最后的输出层(翻译层),即怎么将网络学习到的序列特征信息转化为最终的识别结果。这两大主流技术在其特征学习阶段都采用了CNN+RNN的网络结构,CRNN OCR在对齐时采取的方式是CTC算法,而attention OCR采取的方式则是attention机制, 本文将介绍应用更为广泛的CRNN算法。

CRNN

CRNN 网络结构由CNN + LSTM 两部分构成,LSTM的加持使它能够结合前后文信息,同时适用变长文本行的识别。

CRNN 具有以下优势

  • (1)可以端到端训练;
  • (2)可以识别任意长度的序列;
  • (3)可以训练基于字典的模型和不基于词典的任意模型;
  • (4)训练速度快,并且模型很小。

CRNN训练用样本如何获取?有限的身份证数据集仅包含部分字符样本,或者字符概率分布极不平衡。

因此需要机器生成训练用样本,通过透视变换,模糊,抖动,背景融合等增强样本数据。如下 Fake News。。。

最后 信息抽取

得到杂乱的文本识别结果后,就需要抽取关键身份证信息关键字段了,姓名,性别,住址,号码。。。等

八仙过海各显神通了,对于身份证信息来说格式相对固定,可通过关键字匹配,结合位置信息来编写抽取规则。

这部分重要吗?非常重要!!!结构化的输出识别信息才是客户的最终需求,它对精度影响是直接的。

一些有用的规则不能忽略,比如身份证号码符合国标校验的,,,

总结

以上是笔者在对身份证信息高精度识别流程的实践总结,可推广应用至银行卡,驾驶证,户口本等其他类似卡证智能识别场景。

当然有同学会觉得流程过于复杂,比如目标检测可以直接跳过,图像校正也可以跳过,直接进行文本检测。

本文提供的通用卡证信息识别流程框架,是充分考虑使用场景,保证识别精度,提升识别效率,建立在实践基础上的。。。

欢迎同学们访问如下链接,测试评估交流!!

Email:1161242024@qq.com

身份证信息识别服务

银行卡信息识别服务

通用卡证信息高精度识别流程
智能图像识别产品开发流程
如何设计一个开放平台

通用卡证信息高精度识别流程 OCR 文本检测 文本识别 身份证 银行卡相关推荐

  1. 机器视觉 OpenCV—python 基于LSTM网络的OCR文本检测与识别

    文章目录 一.背景与环境搭建 二.文本检测与识别 一.背景与环境搭建 OpenCV的文本识别流程: OpenCV EAST 文本检测器执行文本检测, 我们提取出每个文本 ROI 并将其输入 Tesse ...

  2. opencv OCR 端到端场景文本检测与识别(webcam_demo) vs2015

    版权声明:技术分享,csdn longji https://blog.csdn.net/longji/article/details/78274842 01 资源 OpenCV自带的端到端场景文本检测 ...

  3. 文本检测与识别技术的应用现状及产业案例

    文本检测与识别技术的产业应用现状 文本是人类文明的视觉和物理载体,文本的检测和识别使视觉与对其内容的理解进一步联系起来.在这一部分中,我们列出并分析了对提高我们的生产力和生活质量产生或将产生重大影响的 ...

  4. 自然场景的文本检测与识别发展综述

    摘要 本文介绍图像文本识别(OCR)领域的最新技术进展.首先介绍应用背景,包括面临的技术挑战.典型应用场景.系统实施框架等.接着介绍搭建图文识别模型过程中经常被引用到的多种特征提取基础网络.物体检测网 ...

  5. 【论文翻译】Scene Text Detection and Recognition: The Deep Learning Era 场景文本检测和识别:深度学习时代

    原文地址:Scene Text Detection and Recognition: The Deep Learning Era 文章目录 摘要 1.引言 2.深度学习时代之前的方法 2.1概括 3. ...

  6. 【文本检测与识别白皮书-3.1】第一节:常用的文本检测与识别方法

    点击领取AI产品100元体验金:https://www.textin.com/coupon_redemption/index.htmlhttps://www.textin.com/coupon_red ...

  7. 基于深度学习的场景文本检测和识别(Scene Text Detection and Recognition)综述

    1. 引言 文字是人类最重要的创作之一,它使人们在时空上可以有效地.可靠的传播或获取信息. 场景中的文字的检测和识别对我们理解世界很有帮助,它应用在图像搜索.即时翻译.机器人导航.工业自动化等领域. ...

  8. 论文翻译:自然场景文本检测与识别综述

    论文翻译:自然场景文本检测与识别综述 引言 介绍 文章回顾 文本检测 文本识别 实验结果 总结和未来工作展望 引言 自然图片的检测和识别是计算机视觉领域的两个主要的问题,在运动视频分析,自动驾驶,工业 ...

  9. OpenVINO+OpenCV 文本检测与识别

    本文转载自OpenCV学堂. 1 模型介绍 文本检测模型 OpenVINO支持场景文字检测是基于MobileNet的PixelLink模型,该模型有两个输出,分别是分割输出与bounding Boxe ...

最新文章

  1. 数据库 user schema sqlserver 关系
  2. python自动化接口测试中的cookies怎么实现_Python接口自动化之cookie、session应用
  3. 计算机比赛的评分办法,汉字录入比赛评分规则方案
  4. Spring Cloud-微服务架构集大成者
  5. 清明梦超能力者黄YY、异或树(线段树合并)
  6. 【spfa】假期计划(jzoj 3936)
  7. oracle 查询所有组合,Oracle的组合条件查询
  8. mysql忘记密码怎末版_mysql忘记密码怎么办
  9. mysql8.0新建用户登录_Mysql8.0 创建远程登陆账户
  10. 20190909:(leetcode习题)第一个错误的版本
  11. 查找当前SQL Server下的Active Session正连接着哪个数据库
  12. python培训班靠谱吗-python培训机构靠谱吗?python培训班
  13. 第十二届noc网络机器人赛项成绩_喜报!第18届NOC大赛全国决赛 理想学子荣获国家二等奖...
  14. 人工智能在生活中的应用都有哪些?
  15. java8进制转换_Java进制转换方法大全_十进制,八进制,二进制,十六进制转换...
  16. 点扩散函数(PSF)的模型及求取
  17. 运行 DAEMON TOOL 时 提示 Virtual SCSI driver not detected
  18. Python3.1 使用卡通头像网络模型生成卡通头像(基于GAN)
  19. Warren E Buffett
  20. python学习笔记分享(二十四)python学习笔记分期补充(二)复数,randint与sample,进制转换表,转义字符,二维数组,键,end,pass,迭代器和生成器

热门文章

  1. HTML Rendering Error(This view has crashed)处理方法
  2. python编译make_编译安装python3时make install出错
  3. java查看日志命令_Java程序员必备:查看日志常用的linux命令
  4. poj2228(dp)
  5. SpringBoot配置Consul及健康检测
  6. Fasttext(AG数据集---新闻主题分类)
  7. 写了个静态的网页-模仿网易云
  8. Python编程 环境搭建
  9. cdr保存的内容计算机搜不到,CorelDRAW自动保存的文件在哪里?
  10. 算法题练习:棋盘放麦子