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

python验证码识别实战

作者头像
企鹅号小编
发布2018-01-15 11:32:26
1.6K0
发布2018-01-15 11:32:26
举报
文章被收录于专栏:编程

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

原始验证码如图所示:

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

首先去掉绿色的干扰线:

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

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

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

输出如下:

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

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档