TensorFlow新手实战破验证码
稍稍学了些tensorflow,就忍不住想实战练练手,就拿某学校的选课系统开刀吧。(最终识别成功率100%)
不要了解tensorflow的,可以先看基础教程
本文完整代码已上传。破验证码完整代码下载
本博文不会公布用来练手的网站的链接,不过不影响看这篇博文。你可以一边看本博文一边自己随便找个网站练手,也可以直接使用本博文提供的验证码模拟生成工具。
第一步 挑选目标
作为一个新手,选择合适的练手目标可以说是很重要的,一上来就想破那种拖动拼图或回答问题类型的验证码对我来说很不现实。
首先让我们来看一下我选择的target:
仔细看一下验证码的大图:
为啥要选这个网站,因为它“好欺负”。下面简述一下原因:
1.均匀分布
通过观察可以轻易发现,这个网站的验证码的四个数字在图片中的位置大致是均匀分布的,这样一来,我们就可以通过分割图片来把问题从一开始的识别四个数字简化为识别单个数字。
2.颜色单一
整个验证码只有黑白两色,识别时不需要多通道。
3.字体规则
字体形变不大,大小几乎一直没变。
4.干扰少
只有两条干扰线,识别简单。
5.易于推测出生成该验证码的代码
其实这点才是最重要的(捂脸笑),因为验证码的训练集实在不好找啊,你基本不太可能搞到网站生成验证码的完整源码。碰到这种情况,我的解决方案就是自己推测出网站验证码生成的规则,然后自己写了一个生成验证码的程序。
第二步 生成训练集
这一步就是通过观察网站的验证码,推测其验证码生成规律,然后自己写个生成器。
最后的效果大概是这样: