关于验证码识别的两种方案
2015-01-10 23:05
281 查看
最近在做验证码识别的程序,找了不少资料,主要是两种方法。分别是(我称之为)“自建库方法”,“shape context方法”。
这两种方法,其实是从两种方式来分析图像,前者的中心思想是切割出单个字符,将之变为一串二进制的key值,(在php中)以similar_text函数来得到相似度,这种方法,在网上有非常好的例子,
网址分别是:
/article/2784500.html《php实现验证码的识别(初级篇)》,
/article/2784501.html《php实现验证码的识别(中级篇)》
(恕我猜疑,这种方法的源头,我觉得是来自一篇外国的本科生的毕业论文,里面详细叙述了这种方法),不过,这种方法在识别复杂的验证码上是有着明显缺陷的——因为它非常依赖样本库,如果字符变化较多(缩放、旋转、变形),即使能以这种方式识别,可想见库是非常庞大的,并且没有什么普遍性(即一个库只能对应一种验证码)。
虽然有种种“缺陷”,我还是试着去做了个程序。不言而喻,这个程序的核心部分是样本数据库,所以我采用一种“用人工识别特别码”的方法。具体方法是:如果识别错误,则将其中相似度(这里用的是php中的similar_text函数)低于阀值的字符插入待人工审查的数据库。
另一种方法——“shape context方法”的角度完全不同,它是以形状的角度出发,偏重于数学的应用(出自balack大学的两个老师之手),但使用起来比较麻烦。在网上很少能找到相关代码,以下资料是找到的为数不多的实例:http://www.cnblogs.com/xiaotie/archive/2009/01/15/1376677.html?page=2#pagedcomment《车牌识别及验证码识别的一般思路》。这种方法可能需要借助更“强大”的语言,正在研究中ing
这两种方法,其实是从两种方式来分析图像,前者的中心思想是切割出单个字符,将之变为一串二进制的key值,(在php中)以similar_text函数来得到相似度,这种方法,在网上有非常好的例子,
网址分别是:
/article/2784500.html《php实现验证码的识别(初级篇)》,
/article/2784501.html《php实现验证码的识别(中级篇)》
(恕我猜疑,这种方法的源头,我觉得是来自一篇外国的本科生的毕业论文,里面详细叙述了这种方法),不过,这种方法在识别复杂的验证码上是有着明显缺陷的——因为它非常依赖样本库,如果字符变化较多(缩放、旋转、变形),即使能以这种方式识别,可想见库是非常庞大的,并且没有什么普遍性(即一个库只能对应一种验证码)。
虽然有种种“缺陷”,我还是试着去做了个程序。不言而喻,这个程序的核心部分是样本数据库,所以我采用一种“用人工识别特别码”的方法。具体方法是:如果识别错误,则将其中相似度(这里用的是php中的similar_text函数)低于阀值的字符插入待人工审查的数据库。
另一种方法——“shape context方法”的角度完全不同,它是以形状的角度出发,偏重于数学的应用(出自balack大学的两个老师之手),但使用起来比较麻烦。在网上很少能找到相关代码,以下资料是找到的为数不多的实例:http://www.cnblogs.com/xiaotie/archive/2009/01/15/1376677.html?page=2#pagedcomment《车牌识别及验证码识别的一般思路》。这种方法可能需要借助更“强大”的语言,正在研究中ing
相关文章推荐
- 关于sed替换成回车符,两种方案
- 关于服务器端数据访问(2)两种方法访问基于 SQL 的数据 :
- 实现Apache虚拟主机的两种方案
- Repeater嵌套的两种方案
- 求大数和的两种方案
- 谈谈CMS内容管理系统的两种方案:XSL+XML和HTML
- 一个关于Oracle分页的实现方案
- 【论坛话题】两种容错方案的较量(图)
- 关于解决应用层提取NDIS驱动数据包丢包的方案,通过event加共享内存实现
- 关于displaytag1.1的两种分页
- J2EE与.NET平台关于电子企业的两种设想(1)
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于台球(刚体)碰撞物理模型的编写方案
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于图片上传方案选择的依据
- 关于WebService,以下方案是否可行?
- 关于jcreator 3.0的中文问题解决方案
- 探讨关于门户网站中的大型计数器问题解决方案(Inber原作)
- 关于从VSS 中打开一个含有Web工程的方案时的问题—以前原创(三)
- 用手机来支付什么-(别)关于固话与信用卡终端的方案