前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow 验证码识别

TensorFlow 验证码识别

作者头像
小歪
发布2019-05-06 17:35:01
1.7K0
发布2019-05-06 17:35:01
举报
文章被收录于专栏:Python爬虫与算法进阶

验证码可以说是爬虫中最常见的,本次介绍的方法可以处理如下简单的验证码:

可以观察到,此类验证码特点明显,4位数字,每个数字所处位置固定。

主要分为四步:

  1. 样本数据
  2. 创建训练数据
  3. 跑模型,现在全是数字
  4. 预测

1. 样本数据

在`src/data/captcha`下存放验证码图片,一般名字就是答案,然后需要在`src/data/captcha.json`中描写对应关系,例如

代码语言:javascript
复制
{

  "3601.jpg": "3601",

  "1651.jpg": "1651",

  "3771.jpg": "3771",

  "6172.jpg": "6172",

  "7104.jpg": "7104",

  "7134.jpg": "7134",

  "8113.jpg": "8113",

  "8395.jpg": "8395"

}

前面是文件名,后面是答案

2.创建训练数据

运行文件`src/create_train_data.py`,这将会创建文件`src/data/captcha.npz`和和图片1~9的数字,数字在`src/data/train`,可以打开看看,切割效果不好的话需要修改,打开文件`src/img.py`,修改如下几个参数

代码语言:javascript
复制
SHIFT_PIXEL = 7  # 将图像从右向左移动

BINARY_THRESH = 30  # 图像二进制阈值

LETTER_SIZE = (20, 23)  # 字母 宽, 高

如果图片位置非常规则,就像这种

只有4个数字,每个数字位置都确定不变,可以直接将位置写死,如

代码语言:javascript
复制
letter_boxs = [[[0, 7], [11, 24]], [[13, 5], [30, 30]], [[30, 5], [45, 29]], [[47, 4], [61, 28]]]

上面的点分别就是下图中的1、2、3、4、5、6、7、8

3.跑模型

这个就比较简单了,直接运行`src/train.py`,会出现模型并保存在`src/checkpoint`目录下

4.预测

运行`src/predict.py`,传入进去的需要是一个图片对象,当然你可以直接传入图片url,但是并不能维持session状态,因为它是直接去下载图片的,`io.imread(argv, as_gray=True)`的源码实现

代码语言:javascript
复制
@contextmanager
def file_or_url_context(resource_name):
    """Yield name of file from the given resource (i.e. file or url)."""
    if is_url(resource_name):
        _, ext = os.path.splitext(resource_name)
        try:
            with tempfile.NamedTemporaryFile(delete=False, suffix=ext) as f:
                u = urlopen(resource_name)
                f.write(u.read())
            # f must be closed before yielding
            yield f.name
        finally:
            os.remove(f.name)
    else:
        yield resource_name

他这里就是先创建了一个临时文件,将图片写进去,再读取图片。如果需要维持session状态,也可以按照他这样,先创建一个临时文件,之后再删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与算法进阶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档