日期:2014-05-18  浏览次数:20983 次

「继续玩」字符识别练习 分拆字符(验证码、车牌号、身份证号等)
© 野比 2012

注意:这不是完成品。

参考这篇论文,写得很好,我这个基本属于复刻版。

http://www.digitaltrends.com/web/stanford-researchers-crack-captcha-codes/

光学图像识别(OCR)是非常有用的技术。在验证码识别、车牌号识别、文字识别方面,基于字符的识别技术算是比较容易上手的了(相比图文识别)。

闲来看到有朋友研究验证码识别,一时手痒,自己动手来做做验证码识别。当然,肯定只是简单的验证码。

名为验证码,实际上并不限于,还可以识别车牌号、身份证号、门牌号等各种乱七八糟的内容。

识别的流程很明确:

1、预处理图像

2、做y轴的投影

3、分析直方图分区

4、根据分区拆分图像为多个字符(很关键,拆得越好,后续识别率越高)

5、丢弃空白或无效字符

6、自动旋转字符(如果有倾斜),识别字符

如果样本中个图像有粘连,则可能造成分区不准确。这种情况下,需要进行旋转,但是怎样自动旋转,是个难题。

目前已可拆分出字符,下一步准备研究如何识别。(如果单个字符比较规范,可以利用现成的OCR控件)

这里有一些例子。

普通的验证码(毫无难度)


带干扰的验证码



较高强度干扰(目前使用的分区算法不能解决,需要更好的算法,比如动态阈值)



CSDN的验证码(毫无压力)



身份证号码



车牌号



继续研究如何优化分区算法,如何识别单个文字(可以考虑多重识别+样本训练)。

脑容量不够啊!求指导!

------解决方案--------------------
野比好牛x
------解决方案--------------------
不懂,也没有例子,copy不了了
------解决方案--------------------
虽然不懂 但感觉很厉害
------解决方案--------------------
厉害,图像识别
------解决方案--------------------
看不懂
------解决方案--------------------
图图图图图
支持下,哈哈
------解决方案--------------------
很好,野比来了之后
C#论坛 终于有点货了
------解决方案--------------------
有点意思
------解决方案--------------------
嗯,看着貌似很牛=.=
------解决方案--------------------
没有看懂,顶了在说
------解决方案--------------------
先回复一下,再看
------解决方案--------------------
跪求源码。。。
------解决方案--------------------
野比发了24个帖子,被推荐了22个帖子。
------解决方案--------------------
不知道回复可不可以增加积分,呵呵
------解决方案--------------------
越来越佩服野比了!不知道这是不是图论方面的知识?
------解决方案--------------------
我的积分好少啊~~~~
------解决方案--------------------
话说在这能挣积分不啊~
------解决方案--------------------
看不太明白
------解决方案--------------------
貌似好强大 顶个
------解决方案--------------------
感谢楼主分享,继续学习!
------解决方案--------------------
很好的运用。但可惜只有思路,如果将代码拿出来分享更好了
------解决方案--------------------
目前可用的OCR识别组件有很多,如MS 提供的 OFFICE组件 对英文和数字识别率都不错
如果有中文或其他语言,识别率就相对低的多了
------解决方案--------------------
虽然 看不懂 感觉 很有意思
------解决方案--------------------

------解决方案--------------------
不错的,很值得学习!
------解决方案--------------------
虽然不懂 但是觉得很厉害的样子 谢谢楼主分享