做OCR身份证识别的调研,正好整理一下从基础的图像处理角度的算法流程。

OCR简介

  • 光学字符识别 Optical Character Recognition(OCR)
  • 其目标是对图像中的字符进行分析识别,将其转换为文本格式的字符序列。
  • 利用模式识别和数字图像处理技术,解决文字输入问题。
按输入方式分类
  • 印刷体文字
  • 手写体文字(由扫描仪输入/由手写板输入)
按识别字符集分类
  • 英文,中文,日文,韩文等
  • 中文,常用4000字,各种字体,相似字不易区分
面向应用的OCR
  • 牌照,票据,文稿,名片,身份证,驾驶执照,汽车制造业。

身份证识别

ocr识别身份证JAVA ocr识别身份证异常_人工智能

一个典型的身份证识别算法流程图如下:

ocr识别身份证JAVA ocr识别身份证异常_算法_02

图像预处理

  • 降噪
    滤波、光照处理
  • 增强(可选)
    灰度拉伸
  • 二值化
    由灰度图像变成二值图像
  • 倾斜校正
    Hough变换、投影法

图像分割

  • 行分割
    身份证图像字符信息分布规则,每行有一定间隙;采用水平投影法进行图像分割
  • ocr识别身份证JAVA ocr识别身份证异常_算法_03

  • 字符分割
    垂直投影
  • ocr识别身份证JAVA ocr识别身份证异常_算法_04

字符识别

  • 模板匹配法
    对每个字符建立一个标准模板,进行图形匹配、笔画匹配、几何特征匹配。
    特点:实现简单,图像质量要求高,计算速度慢,相似字符识别率低
  • 人工神经网络字符识别算法
    artificial neural network,简称神经网络(neural network),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。

识别结果处理

ocr识别身份证JAVA ocr识别身份证异常_python_05

- 身份证号码验证

ocr识别身份证JAVA ocr识别身份证异常_算法_06

- 有效期验证

ocr识别身份证JAVA ocr识别身份证异常_算法_07


身份证识别软件

  • 云脉
  • 文通
  • Abbyy
  • ……

识别效果和照片清晰度、 倾斜度、背景、光照、对比度等相关性较大。