前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自制正方软件系统验证码的识别程序(1/4)

自制正方软件系统验证码的识别程序(1/4)

作者头像
mythsman
发布2022-11-14 14:06:43
5770
发布2022-11-14 14:06:43
举报
文章被收录于专栏:mythsman的个人博客

学了几天机器学习的原理,感觉还是要自己动手写一个像样的程序才行。正好刚研究过deeplearning.net上的那个识别mnist数据库的源码,于是打算利用一下写一个识别验证码的程序。

他提供的代码已经基本实现了利用Logistic Regression 来分类,用的是softmax算法,支持多元分类。然而他只能读入指定的mnist数据集的经过处理后的格式。因此我当前的任务就是将一张实实在在的图片转换成计算机可以识别的格式,并且进行好预处理,选择好特征值,而不用考虑机器学习代码的细节(这个的确有点难)。但是仅仅是处理好这些事情也并不容易。

目标

我的目标是我们学校的选课系统的网站(没错我是苏大的0.0),这里的验证码相对比较规则,而且未来应该有点实用价值吧。

1
1

下载图片

下载这种东西还是用shell脚本方便:

代码语言:javascript
复制
for((i=1;i<=10000;i++))
do
	wget -O './png/'$i 'http://xk.suda.edu.cn/CheckCode.aspx'
done

一不小心下了10000张,先留着再说。

获得训练集

本来想在网上找点靠谱的识别平台,但是不管要不要钱,效果都不好。所以,,甭想了,先人脑识别500张再说。。。。。。

为了方便以后使用,我就用他的文件名来记录实际的值。

分析

自己观察下载的图片,发现他有这么几个特点:

  1. 包含字母数字,但是9、o、z三个字符不存在(估计是因为容易产生混淆,为了方便用户就没提供这些)。这一点很重要,因为在进行训练的时候,如果某个集合是空的,那么就会在执行的过程中出现类似‘除0错误’这样的东西。因此分类的时候需要把这三个字符排除。
  2. 包含四个字符,每一个字符都占据一个相对固定的位置。这一点大大降低了识别的难度,因为这样我们就可以将字符进行分割,从而把问题转化为对单个字符的识别。否则用普通的办法就难以下手了。
  3. 字符的颜色固定,都是蓝色。这样我们就可以非常方便的进行二值化处理而不用考虑反色的问题了。
  4. 图片的噪声只有一些象征性的点点。。。这对我们来说几乎形同虚设,只要稍微对图片进行处理就能消除影响。
  5. 下载了大量的数据之后发现竟然有大量的图片出现重复,于是我猜他的图片并不是动态生成的,而是静态读取的。这么说来就算再不济,我也完全可以把他的图片全部下载,找个验证码平台识别好然后进行hash查找。总共也就167万种,全部下下来就几个G,跑个小半天应该就下的差不多了吧。

根据上面这些特点,我们就能有针对性的设计程序了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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