python+tensorflow+captcha库:基于TF快速破解验证码
点击打开链接:文章摘自
https://blog.csdn.net/tengxing007/article/details/78539213
http://www.cnblogs.com/beer/p/7392397.html1、概述
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰像素(防止OCR),由用户肉眼识别其中的验证码信息。输入表单提交网站验证,验证成功后才能使用某项功能。
人人都烦验证码——那些烦人的图片,显示着你在登陆某网站前得输入的文本。而设计验证码的目的正是,通过验证你是真实的人来避免电脑自动填充表格。但是随着深度学习和计算机视觉的兴起,现在验证码常常易被攻破。传统的验证码识别算法一般需要把验证码分割为单个字符,然后逐个识别,如果字符之间相互重叠,传统的算法就然并卵了,本文采用cnn对验证码进行整体识别。
通过本文的学习,大家可以学到几点:
1.captcha库生成验证码;
2.如何将验证码识别问题转化为分类问题;
3.可以训练自己的验证码识别模型。
2、步骤
- prepare_data.py - 验证码生成,使用python库captcha来生成,速度快,数量多
- prepare_model.py - 两层RNN网络模型,采用LSTM模型;
- train.py - 训练CNN模型(3 层隐藏层、2 层全连接层)
- predict.py - 使用图片进行预测
3、安装 captcha 库
captcha 可以生成语音和图片验证码,我们采用生成图片验证码功能,验证码是由数字、大写字母、小写字母组成(当然你也可以根据自己的需求调整,比如添加一些特殊字符),长度为 4,所以总共有 62^4 种组合验证码,
- sudo pip install captcha
2. 机器学习方法
传统的机器学习方法,对于多位字符验证码都是采用的 化整为零 的方法:先分割成最小单位,再分别识别,然后再统一。
卷积神经网络方法,直接采用 端到端不分割 的方法:输入整张图片,输出整个图片的标记结果,具有更强的通用性。
端到端 的识别方法显然更具备优势,因为目前的字符型验证码为了防止被识别,多位字符已经完全融合粘贴在一起了,利用传统的技术基本很难实现分割了。本文重点推荐的就是 端到端 的方法。
免训练的快速通道:
wget http://tensorflow-1253902462.cosgz.myqcloud.com/captcha/capcha_model.zip
unzip capcha_model.zip