验证码识别记录

研究了2天的验证码识别,虽然没有成功,但是从中还是收获了不少,这里记录一下,方便以后继续。

首先看图片:

  我就是被这种“简单”的验证码给欺骗了,没有干扰,不用去噪点,看起来一切是那么的容易,三下五除二的批量下载了验证码,然后将图片切割开,就准备开始进行特征提取、训练及识别了。

最开始采用的方式是直线碰撞法,即随机在图片上生成若干直线,计算直线与字符的碰撞数量,以这个碰撞数量作为特征值,然后才用ANN神经网络进行训练和识别,最终的结果是,90%的字符被识别为了f(这个验证码的f变形太厉害了)。

第二种方式是将每个字符的图片二值化后,计算在垂直和水平线上的像素累计值,形成特征码,然后分别采用了LD(编辑距离),SVM进行训练和识别,结果同样识别率不高,试过了30多张验证码,只成功完全识别出一张(不过数字的识别率很高)。

第三种方式就是采用了Google的TesseractOCR,不过他在切割字符生成box的时候,问题比较大,基本都需要手动去调整每个字符的位置,所以,我写了个程序自动去生成box文件,字符定位的准确率能达到100%。box生成以后,便开始进行训练,采用的3.02版本,一路顺畅,然后进行了识别,结果惨不忍睹。

后来仔细思考了下,问题应该不在训练和识别算法上,常用的验证码识别算法不外乎就ANN,SVM,各种距离算法,这三种我都分别用过了,所以,我开始在特征码上找问题。

前面提取特征码分别用了直线碰撞法,像素累计值,二值序列,效果都不太理想,于是,想从图片本身的一些特征下手,第一个想到的是采用霍夫变换计算直线,用这个做为特征码,然后分别采用上面三种识别算法进行训练和识别,但是最后,都是以失败告终。第二个是计算字符的HU不变距(这个还专门自己做了一系列的图片来做测试,测试的效果都比较好,无论如何移动旋转或缩放,都有较好的识别率),通过这个不变距来进行相似度匹配,效果也是相当不理想。

其实,这个验证码识别率低的原因估计在于他的字符是无规律的随机变形(而不是单纯的旋转或者缩放),这种字符比较难以识别,所以,以后在做网站生成验证码的时候,如何来构建一个比较安全的验证码,就有一定经验了。

时间: 2024-08-10 18:25:29

验证码识别记录的相关文章

常见验证码的弱点与验证码识别

http://drops.wooyun.org/tips/141 常见验证码的弱点与验证码识别 insight-labs · 2013/06/08 11:36 0x00 简介 验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对于Web安全检测有很大的帮助. 全自动区分计算机和人类的图灵测试(英语:Completely Automated Public Turing t

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别 分类: 开放项目2012-07-23 17:28 6712人阅读 评论(0) 收藏 举报 tiffimagecompression引擎pascalcharacter --------------------------------------------------低调的分割线--------------------------------------------------- Linux下有两个重要的编程准则

字符型图片验证码识别完整过程及Python实现

1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义. 2   关键词 关键词:安全,字符图片,验证码识别,OCR,Python,SVM,PIL 3   免责声明 本文研究所用素材来自于某旧Web框架的网站 完全对外公开 的公共图片资源. 本文只做了该网站对外公开的公共图片资源进行了爬取, 并未越权 

验证码识别,发票编号识别(转)

毕业设计做了一个简单的研究下验证码识别的问题,并没有深入的研究,设计图形图像的东西,水很深,神经网络,机器学习,都很难.这次只是在传统的方式下分析了一次. 今年工作之后再也没有整理过,前几天一个家伙要这个demo看下,我把一堆东西收集,打包给他了,他闲太乱了,我就整理记录下.这也是大学最后的一次作业,里面有很多记忆和怀念. 这个demo的初衷不是去识别验证码,是把验证的图像处理方式用到其他方面,车票,票据等. 这里最后做了一个发票编号识别的的案例: 地址:http://v.youku.com/v

转:常见验证码的弱点与验证码识别

常见验证码的弱点与验证码识别 验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对于Web安全检测有很大的帮助. 全自动区分计算机和人类的图灵测试(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机和人的公共全

关于验证码识别 1

第一遍文章可以入门 第一部份 图片的组成及特征码的定义 做为验证码的识别,那我们首先需要了解的就是基本的原理,这里就是先说清楚这个原理,再往后大家看代码就比较容易明白了(其实本来就比较简单,我说这么多就是为了大家看完不说我的水平次罢了.再次爆汗-!)正题了,其实整个验证码的识别的话我们先得分解一个图,每一个图形其实都是由每一个点和每一个点来组成的,说到每个点其实就是一个色块,当每一个色块拼接起来就成了一个图形,这个虽然说有点废话,但我还是提一下.需要更好的理解我们来看图: 图一 图二 通过上面的

简单的验证码识别

https://blog.csdn.net/qq_35923581/article/details/79487579 这是我尝试写的第一篇技术博客,借鉴了很多博客和教程,写出了自己的代码,代码较为冗杂而且程序十分耗时.所以本文主要提供验证码识别的一个简单的思路,代码实现的部分还望各位大佬指点. 看了好几篇验证码图片识别的博文,不难归纳出验证码识别的大概思路是收集训练集-->图像处理-->得到图片特征值-->训练-->识别,其中图像处理部分又包括了灰度化.二值化.去噪.分割等过程.本

基于SVM的字母验证码识别

基于SVM的字母验证码识别 摘要 本文研究的问题是包含数字和字母的字符验证码的识别.我们采用的是传统的字符分割识别方法,首先将图像中的字符分割出来,然后再对单字符进行识别.首先通过图像的初步去噪.滤波.形态学操作等一系列预处理过程,我们能够将图像中的噪点去除掉.为了将字符分割开来,我们利用Kmeans聚类算法对图像中的像素点聚成五类,分别代表五个字符,结果表明Kmeans算法的聚类准确度能够达到99.2%.对字符分割完成之后,我们采用支持向量机的算法对字符进行识别,通过调节参数能够使得准确率达到

(第三章)TF框架之实现验证码识别

这里实现一个用神经网络(卷积神经网络也可以)实现验证码识别的小案例,主要记录本人做这个案例的流程,不会像之前那么详细,主要用作个人记录用... 这里是验证码的四个字母,被one-hot编码后形成的四个一维数组,[1, 26] * 4 ----> 可以转变成[4, 26] ----> [1, 104] 第一个位置:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0] 第二个位置:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0