Python 机器学习 识别验证码 来个'沃贝'自动签到(1: 图像处理)

声明:沃贝签到网站已经在10月初归西, 但技术是不过时的哦。

前言叨B叨

我不知道有多少同学知道沃贝,用联通的同学也不见得都知道, 因为我也是后来别人科普给我才知道联通旗下有这么个网站, 每天签到,一个月到头可以得950M流量. 对于我这种14块月租套餐的用户来说,还是很不错的福利. 但是, 问题来了, 每天签到, 很烦躁的说, 于是就想着做个自动签到, 顺便以 python 机器学习 的名义, 废话路上说, 来不及了, 快上车!

如下图所示, 验证码识别一般分为如下几个步骤, 今天我们主要说下红框部分, 图像采集和处理.

一. 采集图像

先去到网站上的登录窗口, 找到二维码的地址, 然后写个循环把图片下载下来做样本, 多多益善,我这只下了50张.

在截图中可以看到, 这个验证码还不是个一般的验证码, 是个二般的. 特征为: 纯数字, 字体有旋转, 背景有杂色, 还有干扰线. 所有这些特征, 除了纯数字以外, 全部是来阻止程序自动识别的绊脚石. 接下来, 我们就来一步一步地扫清障碍, 还我4个清纯的数字s.

二.图像处理

处理图像之前, 先把pillow装上:

pip install pillow

2. 首先来灰度化,二值化, 就是把背景杂色过滤掉变得非黑即白.这里的阈值设置的是170, 可根据不同的验证码设置不同的值.

然后图像会变成这样:

3. 接下来去噪. 这个去噪不比ps里, 用橡皮擦擦就没了, 里面还是有些门道(算法)的. 比如[邻域像素算法]:

即对于像素值>245的邻域像素,判别为属于背景色,如果一个像素上下左右4各像素值有超过2个像素属于背景色,那么该像素就是噪声。这里还需要考虑到边界问题.

去噪后, 效果如下图. 对于以上邻域算法仅仅是针对像素为1的干扰线, 对于像素大于一的干扰线没做处理. 不过这个对于机器学习的话问题不大, 因为我们最后生成的样本会有很多种类, 然后让程序去推测当前识别的对象的可信度.

4. 接下来应该是切割验证码(开始那个流程图感觉不太对, 应该是先分割后再校正倾斜度)

切割验证码用的是投影算法, 即坐标从上到下, 从左到右遍历, 如果发现是空白,就跳过,直到扫描到像素值为255的点,开始输出, 输出到纵坐标上没有像素值为255的点,如下图所示:

相关代码呢, 太长了, 贴上来估计你也不愿意看. 我在后面把所有代码上传到GitHub(地址附在文章底部), 大家有兴趣就down下来研究研究.

5. 校正倾斜度, 然后重新调整大小. 校正倾斜度这里用的是旋转卡壳算法, 如下图所示, 当两条平行线之间的举例最短的时候, 就认为是字符正确的方向.

代码如下:

这里在旋转的时候是从-60度到60度, 是依据当前验证码倾斜规律设定的. 调整完后效果如图. 可以发现有些字符并不是很正, 但是将就吧

其实如果是用机器学习的去识别字符的话, 校正倾斜度可做可不做, 因为机器学习是靠大量样本来对比识别的, 如果你的歪歪扭扭的样本足够多, 一样可以识别.

6. 归一化. 把以上的几个步骤写到一个循环里, 跑他个N遍, 这时候, 我们就有了好多好多的数字图片, 这时苦力活来了...我们需要将每张数字图片归类, 在本地创建0-9十个文件夹, 将数字图片按显示值放入相应的文件夹里.

其实这里在我们校正倾斜度的时候可以先使用tesseract先识别一下数字, 然后将其存放在相应文件夹里, 这样可以减轻一部分工作量, 但是有时候识别的不准确,或者是无法识别, 所以还得我们手工去检查一下.

pip install pytessearct

Pytessearct说明:

a、Python-tesseract是一个基于google's Tesseract-OCR的独立封装包;

b、Python-tesseract功能是识别图片文件中文字,并作为返回参数返回识别结果;

c、Python-tesseract默认支持tiff、bmp格式图片,只有在安装PIL之后,才能支持jpeg、gif、png等其他图片格式;

使用如下python 语句识别字符后,存入对应文件夹

recNum = pytesseract.image_to_string(cur_img,config='-psm 10 outputbase digits')

最后整理完揍是这个样子

结语

至此, 识别验证码的第一部分港完了, 得到了一堆小小的数字图片.

后面将会进一步讲讲验证码识别部分. 敬请期待.

说好的GitHub链接

https://github.com/shark526/WowSign

参考链接:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容