python验证码识别实战

陆陆续续的学习了验证码的灰度、二值化、分割等方法,还了解了机器学习中最基本的3个分类方式——KNN、决策树、朴素贝叶斯。基于这些,今天结合这些工具来写一个简单的验证码识别程序,本来想使用现有的库来生成验证码,但无意间发现了之前写某个程序时下载的200个验证码,正好可以拿来练手。另外,虽然之前已经实现了上面3种算法,但这里还是会使用 这个强大的三方库,学习原理是为了知其所以然,有现成工具还是要拿来用的。

原始验证码如图所示:

可以看出,字符红色,干扰线绿色,字符之间没有粘连扭曲,只包含数字和大写英文,经过查看后每个字符宽30像素,可以说是一种很简单的验证码。

首先去掉绿色的干扰线:

使用函数把符合判断条件的元素改成白色,接下来就是分割、二值化等操作,之前有记录过不再赘述:

处理后,手动分类到不同的文件夹中(使用实际验证码就是坑在这点,需要手动打码,所以数据集较小),总共200个验证码切分出800个字符:

然后就是加载数据进行训练了:

输出如下:

没想到决策树在这个情况中成功率可以达到0.79,最看好的贝叶斯居然是最低的。当然,这里仅仅演示都使用了默认参数进行训练,实际使用中还需要更多的进行调参。

虽然这个程序还很low,但总算把之前学习的各个知识点结合来起来。另外关于阈值的选取,有一个叫做大津算法(OTSU),以后有机会可以试试看:

最后把手工标记好的数据传到githubhttps://github.com/shenyushun/data_captchar上,有兴趣的可以拿去玩。

本文来自企鹅号 - Python热爱着媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

学习笔记 | Fast.ai深度学习实战课程Lesson2——带你深入了解CNN

Fast.ai 深度学习是我们此前推出的系列课程,共9节课,并且已经进行了汉化。课程主讲人是资深深度学习研究者Jeremy Howard 教授,他本人连续两年在...

6598
来自专栏机器学习实践二三事

验证码破解之一:定长文本验证码

之前写过一篇验证码的破解,地址在这,其实效果不好,有很多朋友来问,其实我已经说了只是个demo;既然如此,就写下文本验证码的破解;本次的主题是定长的,就是验证码...

2409
来自专栏信数据得永生

《Scikit-Learn与TensorFlow机器学习实用指南》第2章 一个完整的机器学习项目

1.1K20
来自专栏jeremy的技术点滴

tensorflow学习笔记_01

3077
来自专栏ml

faster-rcnn中ROI_POOIING层的解读

在没有出现sppnet之前,RCNN使用corp和warp来对图片进行大小调整,这种操作会造成图片信息失真和信息丢失。sppnet这个模型推出来之后(关于这个网...

4809
来自专栏大数据文摘

一行R代码实现繁琐的可视化

21911
来自专栏ATYUN订阅号

Python中4种更快速,更轻松的数据可视化方法(含代码)

数据可视化是任何数据科学或机器学习项目的重要组成部分。我们通常会从探索性数据分析(EDA)开始,以获得对数据的一些见解,然后创建可视化,这确实有助于使事情更清晰...

1242
来自专栏深度学习入门与实践

【原】KMeans与深度学习自编码AutoEncoder结合提高聚类效果

这几天在做用户画像,特征是用户的消费商品的消费金额,原始数据(部分)是这样的: 1 id goods_name goods_amount 2 1 ...

4867
来自专栏机器之心

「史上最强GAN图像生成器」BigGAN的demo出了!

ICLR 2019 大会将在明年 5 月 6 日于美国举行,9 月 27 日论文提交截止后很多论文引起了大家的关注,其中就有一篇 GAN 生成图像的论文。该研究...

1522
来自专栏编程

Python那些事——15分钟用Python破解验证码系统!

让我们一起攻破世界上最流行的WordPress的验证码插件 每个人都讨厌验证码——在你被允许访问一个网站之前,你总被要求输入那些烦人的图像中所包含的文本。 验证...

3099

扫码关注云+社区