基于PyWebview与Selenium的智慧树脚本系统踩坑开发日志(五)—— 基于opencv与dddocr的验证码匹配算法
任务要求
在自动刷课或异地登录的过程中,由于系统检测会弹出如上图所示(点击侧向的大写F
)的验证码,需要点击相对应的字母通过检测,因此该任务需要做到如下需求:
1.识别每一个字母
2.对每一个识别出的字母要求做到知道它的位置,大小,方向,颜色等特征
3.识别的模型需要足够小
识别过程
大体流程
1.过滤背景色
2.目标检测
3.识别字母
4.处理结果
5.返回接口,selenium获取坐标点击
踩坑过程
当我在使用了ddddorc直接识别上述验证码时,出现了识别不准确的情况,思考了一下,应该是图片数字不在一个Y轴上,还有侧向的影响识别。因此我就先采用目标检测的方法先把有目标的单个字母的位置识别出来,但是还是有部分字母识别不出来,后面改了一下阈值,增加了框的大小识别就十分精准了。
识别情况
识别的准确的能有个98%以上,但是识别的任务包括但不限于:侧向的大写F、大写A朝向一样的数字8、正向的小写y…为了统一识别增加准确率,我让它统一为大写且没有颜色,位置和大小还是能确定的,那么是不是说这个任务没有完成呢?
验证码可以刷新啊!你可以卡我无数次,但是我只要赢你一次就够了!(不过也是有思路的,侧向的字母明显比正向的字母要小,后面只要比较他们的大小就知道要选哪个了,至于颜色和大小写,我二选一总有一次能选对吧,选不对就刷新呗,测试的时候很少有超过两次的情况,基本上一次就能成功)
至此,验证码识别任务完成,刷课可以完美运行(智慧树,我将亲手操办你的退休仪式)