【每周代码】深度学习破解字符验证码

全自动区分计算机和人类的公开图灵测试(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA),俗称验证码,是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。

验证码的作用是验证用户是真人还是机器人;设计理念是对人友好,对机器难。

在这里插入图片描述

如图所示,上图是比较常见的字符验证码,还有一些更加复杂的验证码这里没有讨论(比如图片,或者提问之类的)

破解验证码有几种常见的方式:

  1. 人力打码
  2. 绕过验证码的漏洞
  3. 字符串识别(本文重点

老规矩,参考的文章优先列出来:
http://blog.topspeedsnail.com/archives/10858
https://www.cnblogs.com/beer/p/7392397.html
其中第一个链接提供了主体算法的代码实现
第二个链接对代码进行了模块化优化,对函数功能进行了划分,使得代码更好理解,更清晰明了
本文拟采用第二个链接的代码
如果有优化的部分,会在文章中提到。

在一开始搭建TensorFlow的框架时候,有一个非常经典的demo,叫做OCR手写字符串识别,这个在吴恩达的课程里也有提到。
这个代表了字符串识别的最初发展趋势:将数字分割为单个字符,然后识别单个字符

你可能感兴趣的:(每周代码)