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

TensorFlow 验证码识别

作者头像
小歪
发布于 2019-05-06 09:35:01
发布于 2019-05-06 09:35:01
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

主要分为四步:

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

1. 样本数据

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{

  "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
代码运行次数:0
运行
AI代码解释
复制
SHIFT_PIXEL = 7  # 将图像从右向左移动

BINARY_THRESH = 30  # 图像二进制阈值

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
@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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Tensorflow实战:Discuz验证码识别
本文将使用深度学习框架 Tensorflow 训练出一个用于破解 Discuz 验证码的模型。
机器学习算法工程师
2018/03/06
9.7K11
Tensorflow实战:Discuz验证码识别
TensorFlow验证码识别
本节我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里我们识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别。 验证码 首先我们来看下验证码是怎样的,这里我们使用 Python 的 captcha 库来生成即可,这个库默认是没有安装的,所以这里我们需要先安装这个库,另外我们还需要安装 pillow 库,使用 pip3 即可: pip3 install captcha pillow 安装好之后,我们就可以用如下代码来生成一个
崔庆才
2018/04/04
3K1
TensorFlow验证码识别
TensorFlow实战:验证码识别
项目地址:https://github.com/kerlomz/captcha_trainer
Coriander
2019/02/03
3.7K0
TensorFlow实战:验证码识别
多任务验证码识别
使用Alexnet网络进行训练,多任务学习:验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。 Tensorflow
瓜大三哥
2018/02/26
1.6K0
多任务验证码识别
写给爬虫工程师的验证码识别教程
但是对于一个爬虫工程师来说,去学习 机器学习相关知识可能成本太高了.(当然有空的话,还是要好好学的)
爬虫
2020/05/20
5470
Tensorflow搭建CNN实现验证码识别
采用三层卷积,filter_size均为5,为避免过拟合,每层卷积后面均接dropout操作,最终将
Awesome_Tang
2019/01/28
8700
Tensorflow搭建CNN实现验证码识别
简单的验证码识别(三)----------------代码实现
此处使用了双层的LSTM作为隐含层,保留最后四个cell的输出结果,加一层full connection,并concat得到最后的输出。
andrew_a
2019/07/30
9050
简单的验证码识别(三)----------------代码实现
python2.7搬运--->TensorFlow - 深度学习破解验证码
谷歌的开源深度学习工具 --py 简介 验证码主要用于防刷,传统的验证码识别算法一般需要把验证码分割为单个字符,然后逐个识别,如果字符之间相互重叠,传统的算法就然并卵了,本文采用cnn对验证码进行整体识别。通过本文的学习,大家可以学到几点:1.captcha库生成验证码;2.如何将验证码识别问题转化为分类问题;3.可以训练自己的验证码识别模型。 安装 captcha 库 sudo pip install captcha 生成验证码训练数据 所有的模型训练,数据是王道,本文采用 captcha 库生成验证码,
98k
2018/04/11
1.2K0
强智教务系统验证码识别 Tensorflow CNN
首先需要手打码,自动获取验证码,并在powershell手动输入验证码,注意目录中的文件夹需要手动建立 引入Convert是为了处理图片,二值化并降噪 手工打200多张验证码,然后开始训练,设置的停止条件低一些,ACC到50%就停止训练 获取一定准确率的模型后再自动获取训练集,再训练,重复过程提高准确率 我重复上述过程三次,最后一次吃了个饭,得到了大约3000张图片的训练集
WindRunnerMax
2020/08/27
5390
强智教务系统验证码识别 Tensorflow CNN
教你使用TensorFlow2对识别验证码
验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。
润森
2022/08/18
4700
教你使用TensorFlow2对识别验证码
基于Tensorflow的验证码识别
最近在入门机器学习,本文作为入门阶段的 "Hello World",旨在学习一些Tensorflow的API和机器学习概念。 步骤 采集验证码图片 处理图片:灰度、去噪、分割 分类图片,准备训练数据:将0-9数字图片放入对应文件夹,转化成数据 编写训练模型 调用模型,形成识别系统 采集验证码图片 随便找一个需要输入图像验证码的网页,最好先简单一点的只有数字的,并且人眼识别也比较容易的。 这步比较简单,关键是去网页上识别验证码接口url,然后按照一些网上教程写个简单的Python程序抓取那些图片。pyt
alexqdjay
2018/05/11
1.2K0
Selenium+dddocr轻松解决Web自动化验证码识别
dddocr是一个基于深度学习的OCR(Optical Character Recognition,光学字符识别)库,用于识别图片中的文字。它可以识别各种类型的文字,包括印刷体、手写体、表格、条形码等。dddocr库使用了深度卷积神经网络(CNN)和循环神经网络(RNN)等先进的模型,具有较高的准确性和稳定性。
测试开发技术
2023/09/12
2K0
Selenium+dddocr轻松解决Web自动化验证码识别
识别旋转验证码图片角度
简单聊聊旋转验证码攻防[1] 中介绍了一些旋转验证码的攻防思路,并提供了 rotate-captcha-crack[2] 实现。
AlphaHinex
2024/05/20
4050
识别旋转验证码图片角度
14、web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
from urllib import request #导入request模块
天降攻城狮
2019/07/11
1.3K0
Python爬虫基础:验证码的爬取和识别详解
今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型。
Python中文社区
2018/12/07
2.3K0
Python爬虫基础:验证码的爬取和识别详解
深度学习_1_神经网络_3_验证码识别
​ N ------>[0.01,0.02,0.03.......] 概率 N------->[0,0,0,0,1.......] one-hot编码
Dean0731
2020/05/08
3170
中文项目:快速识别验证码,CNN也能为爬虫保驾护航
本项目使用卷积神经网络识别字符型图片验证码,其基于 TensorFlow 框架。它封装了非常通用的校验、训练、验证、识别和调用 API,极大地减低了识别字符型验证码花费的时间和精力。
机器之心
2018/12/17
7940
Python爬虫技术系列-05字符验证码识别
OCR(Optical Character Recognition,光学字符识别)是指使用扫描仪或数码相机对文本资料进行扫描成图像文件,然后对图像文件进行分析处理,自动识别获取文字信息及版面信息的软件。一般情况下,对于字符型验证码的识别流程如下:主要过程可以分解为五个步骤:图片清理,字符切分,字符识别,恢复版面、后处理文字几个步骤。通过本章节学习联系搭建OCR环境,使用Tesseract平台对验证码进行识别。
IT从业者张某某
2022/11/12
1.4K0
Python爬虫技术系列-05字符验证码识别
Python:尝试对知乎网验证码进行处理
许多流行的内容管理系统即使加了验证码模块,其众所周知的注册页面也经常会遭到网络 机器人的垃圾注册。
Lansonli
2021/10/09
6880
java验证码识别--2
http://blog.csdn.net/problc/article/details/5794460
井九
2024/10/12
1250
java验证码识别--2
相关推荐
Tensorflow实战:Discuz验证码识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档