OCR - 行驶证识别(开篇)

声明:本文暂时禁止任何形式的转载

目标

总体目标通过用户上传的行驶证照片,利用OCR技术代替传统的人工审核。
阶段性目标

一、行驶证鉴别 
   因为首先要排除非行驶证的图片,这样不管接下来人工审核还是机器审核都会省成本。
   有些用户也许会把家里的猫狗靓照上传。
二、文字识别
   车辆识别代号(VIN)由17位数字、字母混合排列,是汽车唯一标识,按规则讲只要获取到这项就可以。
   但是标准的行驶一共分2部分。大大小小的项目一共有21项之多,对于我们的审核规则需要4项
   车牌号
   所有人
   车辆识别代号
   发动机号码
三、信息录入
   后期如果实现车主信息录入,把21个信息(也许不会全用到)录入到数据库,那么需要全部识别。并且完成信息读取完后,自动再录入。

技术选择以及实现

底层视觉库 Opencv      照片处理
底层文字识别库 Tesseract     文字识别
应用层调用Python/java/Qt   应用层目前没有明确需求,但底层有了就做对应接口就好

流程及步骤

步骤一 目前因为数据源不规范,只能先通过人工截图方式,取得较为理想的数据源(曝光合适,行驶证内容主要占据照片,尽量不存在正视角和偏斜视角的旋转)注意良好的数据源对提高识别率,决定识别办法非常非常重要。
步骤二 使用视觉处理开源库opencv 对图像做一系列处理,最终得到具有行驶证特征的矩形图
步骤三 SVM训练,生成训练《行驶证识别模型》,为将来预测做基础。
步骤四 对图像做一系列处理,取到包含文本内容的矩形
步骤五 对包含内容的矩形做单字分离,基于ANN人工神经网络多层感知机模型建立自己的文字库
步骤六 文字识别,输出,并根据行驶证现有逻辑归纳

关于后期输出的产品有三个方向
一 、桌面程序使用Qt做,因为既能够跨平台兼容Windows,Linux,MacOS也可以轻松实现良好UI交互界面
二 、此功能未来可能会做系统支持到实时判断检测,自动化处理,对外提供API等等,会用到脚本语言比如Python,Java等应用层语言
三、手机移动端,如Android、iOS、WinPhone 底层会根据操作系统做兼容性处理

设计思路 行驶证判断

一、行驶证最明显可以说明身份的是,照片上具有“中华人民共和国机动车行驶证” 字样,该字样大约在行驶证的1/6处。只要把这个矩形适当的截取出来,作为判定该图片是行驶证的凭证即可
二、SVM训练出“行驶证识别模型”,测试,判断。

设计思路 行驶证内容识别

OCR识别流程主要分为两个部分

一. 首先提取行驶证上可能是内容的矩形区域。行驶证上的内容区域非常多,过滤条件不是很多,说明项和内容项可能会连在一起(说明项如地址,内容项如北京市海淀区)
二. 提取到矩形之后,对矩形通过opencv做单字提取,并且建立自己的文字库(通常你必须这么做,这样会提高文字识别率)。为了更加简单,可以通过谷歌的开源库Tesseract做文字的矫正,文字识别,但底层我猜测应该依旧离不开ANN

参考资料

学习论坛
http://cvchina.net/   
http://www.opencv.org.cn/
http://blog.csdn.net/column/details/opencv-tutorial.html
http://wiki.opencv.org.cn/
开源车牌号识别
http://www.cnblogs.com/subconscious/p/3979988.html
https://github.com/liuruoze/EasyPR
Google Tesseract Open Source OCR Engine (main repository)
https://github.com/tesseract-ocr/tesseract

参考书籍

《OpenCV 2计算机视觉 编程手册》 (张静译)
《学习OpenCV》 中文版
《特征提取与图像处理》
    原文作者:热血沸腾
    原文地址: https://www.jianshu.com/p/9a835b35e17d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞