Python识别验证码----谷歌reCapture 3*3验证码
- 写在前面
- 数据特点
- 识别思路
- 识别结果
- 改进点
写在前面
近日某众打码平台被跑路的消息一出,脚本圈中一片哗然(我并不是脚本圈的,只是喜欢看群里人吹逼而已 ),仿佛再也听不到那句熟悉的广告语了。这也预示着,第三方打码平台不靠谱了。但打码功能有时候又必不可少,这时候怎么办呢?当然是自己自己动手丰衣足食啦!最近工作不是很忙,准备撸一个用Python识别验证码的系列文章,该系列计划囊括各种时下比较流行的验证码形式,如滑块、四则运算、点选、手势、空间推理、谷歌等。已经跑通了的所有代码都放在了我的知识星球上,需要的话请自取。话不多说,开撸!
数据特点
这类验证码估计大家都碰到过,体验反正有点恶心。
识别思路
1.训练一个yolo模型来定位九宫格上所有物体的位置。像酱紫:
2.根据检测出来的物体的信息,以及验证码所需要的寻找的物体类别,来过滤出应该点击九宫格里的哪些格子。
识别结果
大概标注了2000张图的样子,做了个demo(支持的物体有:公交车、小汽车、桥、停车计价器、棕榈树、人行横道、摩托车、消防栓、红绿灯、出租车、自行车、拖拉机、楼梯、烟囱、船、山、),效果还凑合。数据越多,泛化性会越强。
原图(找哪里有烟囱):
结果(result里的数字代表九宫格的序号,1表示第1行第1列,2表示第1行第2列,以此类推):
原图(找哪里有摩托车):
结果(result里的数字代表九宫格的序号,1表示第1行第1列,2表示第1行第2列,以此类推):
改进点
1.数据太少,因为打标签是真的累。。。如果不怕累就多打标签,或者花钱雇人打标签。毕竟没有人工就没有智能。
2.图片中的小目标的mAP不是很高,这应该是yolo的硬伤。如果对这个比较在意,可以尝试替换成对小目标比较敏感的目标检测模型来做目标检测。不过实际上,这个吊验证码并不是每次都要完全点对格子才算过,有一定的容错率,允许你犯错。再加上经常出现的目标物体也就是小汽车、棕榈树、红绿灯、烟囱、消防栓这些,所以只要数据量上来了,模型就不会太差。