验证码识别基础方法及源码

验证码识别基础方法及源码

ID:18747270

大小:298.00 KB

页数:10页

时间:2018-09-22

验证码识别基础方法及源码_第1页
验证码识别基础方法及源码_第2页
验证码识别基础方法及源码_第3页
验证码识别基础方法及源码_第4页
验证码识别基础方法及源码_第5页
资源描述:

《验证码识别基础方法及源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、先说说写这个的背景     最近有朋友在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给K.O.了,于是乎就K.O.了这个验证码。达到单个图片识别时间小于200ms,500个样本人工统计正确率为95%。由于本人没有相关经验,是摸着石头过河。本着经验分享的精神,分享一下整个分析的思路。在各位大神面前献丑了。      再看看部分识别结果     是不是看着很眼熟?      处理第一步,去背景噪音和二值化     对于这一块,考虑了几种方法。     方法一,统计图片颜色分布,颜色占有率低的判定为背景噪音。由于背景噪音和前景色区分并不明显,尝试了很多种取景方法都

2、不能很好去除背景噪音,最终放弃了这种方法。     方法二,事后在网上稍微查了下,最近比较流行计算灰度后设定一个阈值进行二值化。其实所谓的灰度图片原理是根据人眼对色彩敏感度取了权值,这个权值对计算机来说没有什么意义。稍微想一下就可以发现,这两个过程完全可以合并。于是乎我一步完成了去背景噪音和二值化。阈值设置为RGB三分量之和到500。结果非常令人满意。      处理第二步,制作字符样本     样本对于计算机来说是非常重要的,因为计算机很难有逻辑思维,就算有逻辑思维也要经过长期训练才能让你满意。所以要用事先制作好的样本进行比较。如果你仔细观察过这些验证码会发现一个bug,几乎大部分的

3、验证码都是使用同样的字体,于是乎就人工制作了一套字体的样本。由于上一步已经有去除背景噪音的结果,可以直接利用。制作样本这一步有点简单枯燥,还需要细心。可能因为你的一个不细心会导致某个符号的识别率偏低。在这500个样本中,只发现了31个字符。幸亏是某部门的某人员还考虑到了易错的字符,例如,1和I,0和O等。要不然这个某部门要背负更多的骂名。      处理第三步,匹配     单个匹配用了最简单最原始的二值比较,不过匹配的是匹配率而不是匹配数。我定义了相关的计分原则。大原则是“该有的有了加分,该有的没了减分,不该有的有了适度减分,可达区域外的不算分”。     由于一些符号的部分区域匹配

4、结果跟另一些符号的完整匹配结果相似,需要把单个匹配在一个扩大的区域内择优。在一定的范围内,找到一个最佳匹配,这个最佳匹配就是当前位置对应的符号。     完成了一次最佳匹配,可以把匹配位置向右推进一大步,若找不到合适的最佳匹配就向右推进一小步。      处理第四步,优化和调整     任何一个算法都是需要优化和调整的。现在要找到最佳参数配置和最佳代码组织。这一步往往是需要花费最多时间和精力的。      处理第五步,验证结果     这一步呢,纯人力验证结果,统计出正确率。      思考     结果是出来了,代码也不多,效果也很理想。搞这一行的,很多时候都想要通用的。能否通用,很

5、大程度上在于抽象层次。本方法只是单纯的匹配,自然不能通用,但是方法和思想却是通用的。具体案例具体分析。至于扭曲文字、空心文字等,处理要复杂的多。网上也有一些使用第三方图像库的方法,也许那些方法会比较通用。等有空了有兴趣了继续搞一下这个主题。      源码     至于这个源码要不要发布,纠结了一段时间。网上已经有类似的商业活动了,而且这个识别本身没有太大难度,再加上某系统天生的bug,此验证码本身就相当于没有设置,因此发布此代码,仅作于学习交流。+ViewCode?12345678910111213141516171819usingSystem.Collections.Generic

6、;usingSystem.Drawing;usingSystem.IO;usingSystem.IO.Compression;  namespaceCrack12306Captcha{    publicclassCracker    {        Listwords_=newList();          publicCracker()        {            varbytes=newbyte[]{                 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0

7、x00,0xc5,0x58,0xd9,0x92,0x13,0x31,                 0x0c,0x94,0x9e,0x93,0x0c,0x61,0x97,0x2f,0xe1,0x58,0xe0,0x91,0x9b,0x82,0x62,0x0b,                 0x58,0xee,0xff,0xff,0x10,0xd8,2021222324252627282930313233343536373839404142

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。