使用 TensorFlow 识别简单图像验证码

使用 TensorFlow 识别简单图像验证码 使用 pipenv install # 安装环境依赖 pipenv run prepare # 生成测试数据标签 pipenv run train # 训练模型 pipenv run work < test.jpg # 识别 test.jpg

应用介绍

公司有一个业务需要抓取某网站数据,登录需要识别验证码,类似下面这种,这应该是很多网站使用的验证码类型。

首先由于验证码比较简单,图像不复杂,而且全部是数字。于是试着采用传统方式,按照网上教程自己简单改了一个,使用 PHP 识别。大概流程就是切割二值化去噪等预处理,然后用字符串数组形式保存起来,识别传来的图片同样预处理后比较字符串的相似度,选出一个相识度最高的分类。识别率不是很理想(验证码比较简单,应该能优化得更好),隐约记得只能超过60%。

因为识别效果不理想,目标网站登录状态还是能保持很久,没必要花太多精力在这上面,于是找了一个人工打码服务。简直太便宜了,一个月花不了多少钱,效果还好,只是有时候延迟比较高。反正对于我们的业务来说是足够用了。

机器学习大潮来临,我寻思着能不能用在这上面,于是参考 TensorFlow 识别手写数字教程,开始照猫画虎。

本文描述的只是作为一个普通开发者的一些粗浅理解,所有的代码和数据均在文后的 GitHub 有存留,建议结合代码阅读本文。如果有什么理解错误或 Bug 欢迎留言交流 ^_^

#TensorFlow 是什么

TensorFlow 是谷歌出的一款机器学习框架。看名字,TensorFlow 就是“张量流”。呃。。什么是张量呢?张量我的理解就是数据。张量有自己的形状,比如 0 阶张量是标量,1 阶是向量,2 阶是矩阵。。。所以在后文我们会看到在 TensorFlow 里面使用的量几乎都要定义其形状,因为它们都是张量。

我们可以把 TensorFlow 看作一个黑盒子,里面有一些架好的管道,喂给他一些“张量”,他吐出一些“张量”,吐出的东西就是我们需要的结果。

所以我们需要确定喂进去的是什么,吐出来的是什么,管道如何搭建。

更多的入门概念可以查看这个 keras新手指南 » 一些基本概念

#为什么使用 TensorFlow

没别的什么原因,只是因为谷歌大名,也没想更多。先撸起袖子干起来。如果为了快速成型,我建议可以看一下 Keras,号称为人类设计的机器学习框架,也就是用户体验友好,提供好几个机器学习框架更高层的接口。

#大体流程

  1. 抓取验证码
  2. 给验证码打标签
  3. 图片预处理
  4. 保存数据集
  5. 构建模型训练
  6. 提取模型使用

#抓取验证码

这个简单,随便什么方式,循环下载一大堆,这里不再赘述。我这里下载了 750 张验证码,用 500 张做训练,剩下 250 张验证模型效果。

文件列表(部分)

名称 大小 修改日期
.gitignore0.01 KB2020-05-17
.gitignore0.01 KB2020-05-17
Pipfile0.20 KB2020-05-17
Pipfile.lock8.81 KB2020-05-17
prepare.py0.77 KB2020-05-17
1.jpg1.48 KB2020-05-17
10.jpg1.47 KB2020-05-17
100.jpg1.42 KB2020-05-17
101.jpg1.42 KB2020-05-17
102.jpg1.42 KB2020-05-17
103.jpg1.45 KB2020-05-17
104.jpg1.48 KB2020-05-17
105.jpg1.42 KB2020-05-17
106.jpg1.50 KB2020-05-17
107.jpg1.46 KB2020-05-17
108.jpg1.41 KB2020-05-17
109.jpg1.42 KB2020-05-17
11.jpg1.44 KB2020-05-17
110.jpg1.49 KB2020-05-17
111.jpg1.47 KB2020-05-17
112.jpg1.44 KB2020-05-17
113.jpg1.46 KB2020-05-17
114.jpg1.44 KB2020-05-17
115.jpg1.43 KB2020-05-17
116.jpg1.41 KB2020-05-17
117.jpg1.47 KB2020-05-17
118.jpg1.43 KB2020-05-17
119.jpg1.39 KB2020-05-17
12.jpg1.47 KB2020-05-17
120.jpg1.48 KB2020-05-17

立即下载

相关下载

[基于机器学习的混合光伏和风能(负荷)管理系统] 基于机器学习的混合光伏和风能(负荷)管理系统,机器学习应用在新能源,是当前和未来的研究热点。
[基于深度学习的MPPT光伏系统] 这是基于深度学习的MPPT光伏系统,实现功功率200W ,深度学习控制器具有2个输入,4个隐藏层和1个输出
[机器学习和编程面试题笔试题] 用均值填充; > 均值填充可能需要取条件均值,例如某训练集中患癌症和不患癌症的数据中,该值的差距很大,那么就应当填充label相同的数据的均值。 ```python data_train.fillna(data_train.mean()) 。。。。。。想了解更多请下载附件
[深度学习课件] 该课程为浙江大学罗浩博士于2018年10月录制的《基于深度学习和行人重识别》网课视频,该课程首发于AI300学院。为了让更多人学习该课程,现免费在B站公开。由于该网课录制于2018年末,所以知识点已经有些陈旧,因此主要适合深度学习和行人重识别领域无基础的入门者学习,有基础者无需学习此课程。课程主要包括深度学习基础、行人重识别理论基础和行人重识别代码实践三个篇章。考虑到该课程免费开放以及作者工作较忙,所以日后很难有精力进行答疑和维护
[基于深度学习的人脸识别签到系统的设计与实现] 基于深度学习的人脸识别签到系统的设计与实现,基于深度学习的人脸识别签到系统的设计与实现
[用于量子电路和控制的量子几何机器学习] 量子电路,量子几何机器学习,我们的结果表明,如何使用几何控制技术来(a)验证几何合成的量子电路沿着测地线分布的范围,从而验证时间最优路径的路线,以及(b)合成这些电路。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部