验证码识别问题

2019-11-23 21:08:09 +08:00
 42alex

验证码有干扰线,先用了 8 邻域降噪的方法,没有效果,各位有什么好的方法吗?样例图片地址: https://s2.ax1x.com/2019/11/23/Mqdla6.jpg

3817 次点击
所在节点    Python
8 条回复
dearmymy
2019-11-24 01:11:54 +08:00
如果单纯为了识别。
1,找个打码网站充值 50 块
2,收集几千个样本
3,随便找个机器学习框架学习下。
Marsss
2019-11-24 11:08:56 +08:00
cnn 之类的分类算法是挺简单粗暴的,但是如果是之前没有了解过,对于这种简单的验证码,学习成本略高了点,不如自己写算法分割,用 sklearn 这种会轻松很多。先多观察样本规律,根据规律来写算法。比如你这里颜色都一样,先统计像素的直方图,调试选取目标像素,分分钟去除干扰线。然后又没有粘连,就比较好切。一旦好切,也就意味着这验证码废了。最后建议,注意合规。
42alex
2019-11-24 13:22:08 +08:00
@Marsss 这个验证码位置不规律,没法切割,用机器学习的方法的话,成本有点大,我现在换了个思路,就是验证码与干扰线的颜色不同,然后对这两种颜色进行区分,然后将非验证码的的点都重置为背景色,效果会好一些,再使用 pytesseract 进行识别,识别率比之前高一些,效果: https://s2.ax1x.com/2019/11/24/MLhva8.jpg
42alex
2019-11-24 13:23:40 +08:00
@dearmymy 自己写的练习程序用这个方法成本略高,不过可以试试,谢谢指导!
heyhumor
2019-11-24 20:20:35 +08:00
用 opencv 可以提取水平线过滤掉,具体方法不太记得了。。。
42alex
2019-11-24 20:57:22 +08:00
@heyhumor 干扰线还有斜的,也能过滤吗?
aaronhua
2019-11-28 10:02:45 +08:00
试过跟着这个博客做,可以过滤干扰线。https://www.cnblogs.com/qqandfqr/p/7866650.html
42alex
2019-11-30 21:29:53 +08:00
@aaronhua 我来学习一下,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/622485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX