浅谈验证码的识别技术

  这些天出于一些需要,要求做程序识别某网站的验证码,于是潜心研究了一番,颇有心得,特此分享。

编辑推荐:学习网络赚钱、网站运营 、网络营销推广请登录——选学网 http://www.xuanxue.com

  验证码识别这项工作不适合浮躁的人,它需要足够的技术和耐心。由于此技术的特殊性,任何一个被公开识别技术的验证码都会很快地失效,相关网站都会很快地更换验证码。所以本文只介绍最简单的验证码的识别和识别原理。

  ---------------------------

  首先我选择一个最简单的验证码,找来找去,就选挑战网的评论验证码作为例子吧。随便打开挑战网一篇文章,找到发表评论处的验证码,查看其属性,获得其生成地址“ http://tiaozhan.com/checkcode.php ”。

  

  显然,这是最简单的一类验证码:有固定的背景颜色,字符颜色,字体,连字符的坐标都是固定的。对于这类验证码,我们只需要对每个数字进行采样,建立标准库,然后应用的时候一一对照标准库,就可以轻易做到100%识别。

  使用ImageCreateFromPNG函数把图片取回来,然后用imagecolorat函数取得每一个坐标点的色值,并且把第一个点的颜色确定为背景色。然后按照图像大小比例画一个表格,如果该单元对应的坐标颜色与背景色相同,不显示任何内容;反之显示黑色块。于是我们得到这样的分解图:

  

  可以观察到,数字所占区域的y坐标是6-15,四个数字所占区域的x坐标分别为3-10,12-19,21-28,30-37。

  于是建立以0-9为样本建立10个二维数组($arr_eg[0] - $arr_eg[9]),该数组每一个元素均对应该数字区域的每一个坐标,如果该坐标色值与背景相同,值为0,反之为1 。这就是我们的标准库。

  识别的时候,同样取得四个数组,与标准数组一一对照,就可以精确地把四个数字识别出来。

  同时附上此验证码识别程序,供大家研究。(demo.php是程序;arr.php是标准库)

  附件: secode.rar (1688 字节)

  -----------------------

  以上的例子虽然简单,但是已经把基本原理介绍清楚了,就是 采样->建立标准库->应用->对照标准库->识别。

  但是,实际应用中,遇到的往往不是如此简单的情况。比如下面是稍微复杂的一类验证码,它的背景和字符都不是纯色,还有很多干扰点,但其字符的坐标都是固定的。

  

  首先我们对其进行去噪处理。就是首先把每个字符区域分割出来,按照出现的频率确定其主色值(字符的色值),然后去除与其相差大于一定程度的坐标,过滤之后得到目标所在的坐标数组,然后同样与标准库对照。但是这种情况下是不会精确吻合的,我们只能选择吻合度最高的昨作为结果。经过实践,识别率可以达到99%。

  

  再难一点的,就是下面这种:使用了变色、干扰点、干扰线、变位等几种用于干扰手段。

  

  与上一种不同,它的每一个字符所在的位置是不确定的,这就需要我们自己去确定其位置,把字符所占据的大小固定的那一个小块切出来。首先把所有的干扰点和干扰线去掉(去掉之后字符是有所“误伤”的,通常会缺1-3个像素点),得到比较干净的图,然后用一条横向和竖线去扫描它(比较形象的说法,具体如何实现请自己思考),把扫到的没有出现颜色的横竖线全部去掉,把分析范围缩到一个较小区域。然后再用竖线扫描,根据颜色的出现与否,又得到5个小区域,每个小区域再用横线扫,除去空白,得到目标区域。得到的目标区域8630.html">有时候会比标准区域小想办法补全,然后对照,按吻合率最高的原则得出结果。最后识别率达90%以上。

  

  

  

  再难一点。就是目前我研究的最难的一种了。如图,这种验证码除了干扰背景之外,每个字符的位置,大小,甚至字体都是不确定的。还好每个字符之间没有粘连。没有粘连就比较容易切字(当然要比上面那种难),切字之后字块大小不确定,所以很难建立标准库。我能想到的只有这样处理:切字之后对字块用横线或竖线扫描,根据其色块的坐标变化规律确定结果。目前正在实验中,能识别的字符还不完全,识别率也不甚理想。

  

  ---------------------

  验证码识别这个问题算是人工智能和计算机视觉领域的一个难题。作为破解者,总是会处于劣势地位,而且此技术带有一定的不正当性,没有太多的研究交流,因此要做得很好,是非常困难的。而且个人对于很多OCR的技术,理解有限得很,不敢在此乱写,只能利用有限的知识,抛砖引玉而已。

时间: 2024-08-18 23:52:40

浅谈验证码的识别技术的相关文章

乾隆会判阿尔法狗死刑吗 ——浅谈当前人工智能的技术进化

目前,人工智能(AI)非常火爆,有人为之欢呼雀跃,比如说,很多人(特别是程序猿们)纷纷摩拳擦掌去学习AI,以期在未来的职场上分得一碗羹.但也有人心生恐惧,担心AI会逐渐取代人类的工作(比如就有人预言,在未来10年最容易丢掉饭碗的人,反而就是数据攻城狮),并逐渐控制人类. 众所周知,2016年3月,由谷歌的阿尔法围棋(AlphaGo,又称阿尔法狗)以4:1的战胜世界冠军李世石,紧接着,在2016年末至2017年初,AlphaGo的升级版Master(又称大师狗)在围棋快棋对决中,以60场连胜的战绩

硅谷杂志:浅谈个性化元搜索引擎技术

[硅谷网11月4日文]据<硅谷>杂志2012年第16期刊文称,搜素引擎技术这几年的发展速度非常快,同时应用的也非常广泛,可以说搜索引擎改变人们上网的体验,能够更准确的帮助广大用户能够定位自己需要的内容和知识,而且搜索引擎为提供更准确的搜索结果,也已经开始逐步融入智能化搜索引擎技术,而这一切都是建立在元搜索引擎技术基础上的, 重点就是探讨个性化元搜索的几个关键性的技术. 1元搜索引擎的概念分析 元搜索引擎实际上是通过统一的用户界面来 帮助用户在多个搜索引擎中 寻找 合适的搜索引擎来进行检索的基础

浅谈&amp;#106avascript中面向对象技术的模拟

对象 一.引言 在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习.javascript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术.二.原型对象概述 每个JavaScript对象都有原型对象,

浅谈JavaScript中面向对象技术的模拟

javascript|对象 一.引言 在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习.JavaScript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术.二.原型对象概述 每个JavaScri

浅谈IT企业挑选技术人员招聘几个要点

在实际人员招聘的一些感想总结,企业需要怎么样的人才,个人总结如下: 1.技术能力不是第一位 企业在招聘一个人的时候往往看你第一点不是技术实力,而是你个人言谈行为和态度,往往一个面试你的人员他不可能在半个小时内把你了解清楚,但是面试人员可以在半个小时内可以根据你的言谈举止了解的你态度和行为. 2.企业需要的不仅仅是高学历 学历再高,干不来活那是扯蛋,企业需要有能力的人员,能做实事的人员. 3.只有付出才有回报 一般企业都是为了盈利,一个员工对企业没有实际使用价值,企业是不会给员工开高工资的,更谈不

浅谈JavaScript中面向对象技术的模拟_javascript技巧

一.引言 在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习.JavaScript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术. 二.原型对象概述 每个JavaScript对象都有原型对象,对象

【K-DB干货】浅谈KRAC内存融合技术

  数据库的横向扩展已经成为各个企业用户的基本需求,一方面随着企业前端业务系统的膨胀,后端数据库系统的负载也在不断增长,企业进行纵向扩展技术难度较大,另一方面,数据库系统的关键性不断提高,横向扩展不仅提高处理性能,也极大的提高了数据库系统的容错能力. 目前,数据库横向扩展有多种实现方式,较为主流的是共享存储(Shared Disk)技术,不久前,浪潮发布的K-DB数据库,这款产品就基于共享存储技术,实现了双机高可用(HA).多机集群(KRAC)等数据库横向扩展. 浪潮K-DB采用基于共享存储(S

浅谈WiMAX和无线接入技术前景

一.WiMAX的概念及特点WiMAX(WorldInteroperabilityforMicrowaveAccess)意即全球微波接入互操作性,是基于IEEE802.16标准的无线城域网技术,它可作为线缆和DSL的无线扩展技术,从而实现最后一英里宽带接入.WiMAX最大传送距离为50公里,每区段最大数据速率是每扇区70Mbit/s,每个基站通常配置6个扇区,每个扇区可同时支持60多个采用T1的企业用户和数百个采用DSL的家庭用户.WiMAX已经全面超越了目前最为流行的Wi-Fi无线接入技术,有望

阿里云讲师姚伟斌浅谈阿里云CDN技术演变之路

2015年1月31日,阿里云课堂第六期在北京开课,"大型互联网应用架构之存储与分发"主题分享在众多朋友的期待下精彩上演,现场观众再次爆满.本次活动中,姚伟斌(花名:文景)和李文兆两位讲师为大家献上了精彩演讲,并在OpenSpace环节与观众展开讨论,积极互动.应广大用户要求,我们将云课堂讲师现场分享内容全文整理出来,供大家参考.阿里云课堂会继续在全国各地陆续开课,欢迎大家继续支持! 以下为讲师姚伟斌(花名:文景)的分享内容: 我前面会讲一下CDN的用途,也会讲一些CDN产品,在后面我会