一、场景和目的 在大数据时代,如何借助互联网获得最大数据是很多TOB公司追求的资源。通过这些数据我们能够获得很多有效的智能推荐。 然而在网上进行爬虫数据的过程中会出现验证码的输入,导致爬数据的中断,影响工作进度。如果专职聘请一位员工输入验证码会费钱费力。因此需要机器自动识别和破解出现验证码。例如知道了第一张图,我就能得到28。自动输入数字(这一部分我们不探究),完成数据的持续爬。 二、算法分析 大家可能像我一样开始就会有一些思虑,但是不知道采用那个更有效。针对这种情况,不同的应用场景是有不一样的解决方案的。针对这个问题我们的思虑有下面这些: 1、切割+识别:该方法是大家最常用的方法,他有优点是,算法基础完善,我们只需要完成验证码的切割,就可以进行下一步的深度学习模型训练。但是缺点是,深度学习需要大量的数据,我们还要对切割的数据进行标注,这个过程中需要很大的经理。大家像了解这种方法网上大把,我就不介绍了。 2、CNN和CTC的方法,这个方法有一个场景是上一个方法不能做到的就是可以对缠连的数据进行识别,其中CTC这个方法来源于语音识别里面的**。该方法能够对缠连数据进行一个合理的分离,能够达到很好的效果。但是缺点是不适合大图的分离,应用也是有局限,不过对长条验证码有很好的效果。另外就是需要大量的标注。 三、本文算法 我今天分享的算法,理论会听起来很简单,不多这个想法不太容易想到,我采用的是结合传统opencv的方法。该方法的想起,还是结合了对数据的分析。前面我们能够看到验证码的形式是一样的。包括 形状位置大小等信息。从而也体现出某局的技术含量有点低,给了我一个走捷径的方法。 数据分析,经过自己的二值化处理和灰度读取的方法对数据进行分析,发现验证码中的字符的像素位置和高度,完全相同。因此,我采用了创建PKL文件,来对每个位置的字符进行保存,从而进行检索匹配。这种方法不用训练,准确率高,效果快。但是有一个缺点,值能应用到该场景或者同等场景的情况。 --------------------- 作者:machine-lv 来源:CSDN 博客链接原文:https://blog.csdn.net/qq_37100442/article/details/84024484