有兴趣的朋友:
有两种方法可以实现:
方法#1:如果您有可用的验证码来源
如果您已经有可用的源,您可以查看源使用的字体。
在这种方法中,由于我们有源代码,我们可以尝试修改它以保存最多(可能超过 10,000 个)验证码图像以及每张图像的预期答案。
您可以使用一个简单的“for”循环并将所有正确答案的图片保存为文件名。
这将是您的训练数据。
然后从这里开始,将图像拆分为每个字母,并将其引用回文件名中的字母,这样您将拥有多个以不同角度和形状创建的相同字母图像。您可以在这里使用 OpenCV Blob,然后对其进行阈值化,然后进行轮廓查找。
您可能会在这里遇到一个问题是字母重叠,因为这里的一个简单技巧是说,如果单个轮廓区域比它高很多,这意味着我们可能有两个字母被压扁一起。在这种情况下,我们可以将连体字母从中间分成两半,并将其视为两个单独的字母。
现在我们有了提取单个字母的方法,您可以在所有 CAPTCHA 图像上运行它。目标是收集每个字母的不同变体。我们可以将每个字母保存在它自己的文件夹中,以使事情井井有条。
最后,您可以使用具有两个卷积层和两个全连接层的简单卷积神经网络架构。
这样您将有 100% 的成功率来识别验证码字母/数字。
方法#2:如果你没有来源
差不多,你现在要做很多工作,首先,确保你有以下背景:
1) 蟒蛇
2) 喀拉斯
3)张量流
4)OpenCV
如果你这样做了,那么第一步就是下载尽可能多的验证码图像。我通常在谷歌浏览器开发者选项中寻找网络选项卡,然后找到验证码的路径,然后将其放入循环以开始下载它们。
然后,使用 OpenCV 通过创建 blob、阈值和轮廓定义来提取您下载的图像
最后是训练部分,然后是测试和验证。
欲了解更多信息:https://mathematica.stackexchange.com/questions/143691/crack-captcha-using-deep-learning?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa