我与AI的日常:训练与使用百度旋转验证码模型插图

之前在扫百度的熊掌号域名时,出现了百度旋转验证码的问题。当时一脑子的想着处理验证码,国内搜了一大圈发现基本上都是自己写了个OCR接口让别人调用。迫于无奈,最终选择了在「Github」上找一份开源进行二次训练开发。

我与AI的日常:训练与使用百度旋转验证码模型插图1
Solen FeyissaUnsplash 拍摄的照片

什么是百度旋转验证码模型

百度旋转验证码模型是一个用于识别旋转验证码的深度学习模型验证码是用于区分人类和机器人的一种安全措施,在网上注册、登录、发表评论等页面经常使用。

目前比较常见的应该就是长这样的:

我与AI的日常:训练与使用百度旋转验证码模型插图2

前些日子我看百度还增加了点选式的验证码,不过后面全部回调成了旋转验证码。当前的验证形式需要手动旋转验证码,基本是两次以上才能通过。当然,这个是为了应对直接请求非百度官方给出的API地址,如果你是用了「Python selenium」,模拟用户的正常行为还是可以直接操作的。

为什么需要训练自己的验证码模型

目前市面上有很多通用的验证码识别API,但这些API无法适应各种具体的场景,比如可能出现字体变形、干扰线、噪音等问题。如果需要更高的识别准确率,就需要训练自己的验证码模型

当然,目前市面上也是有提供百度这种旋转验证的接口,不过毕竟是需要花费money的,无底洞,所以还是我们自己训练一个比较好。

我与AI的日常:训练与使用百度旋转验证码模型插图3
Andrew NeelUnsplash 拍摄的照片

如何训练百度旋转验证码模型

首先,我们需要收集大量的验证码样本,并将其标记为正确或错误。然后,我们通过数据增强技术来扩充训练集,包括旋转、缩放、加噪声等操作。最后,在深度学习框架中建立模型并进行训练,我们可以选择使用预训练模型作为基础,并针对自己的需求进行微调。

我目前的训练方式是,下载百度安全验证的图片,进行手动还原,然后通过「image_hash」生成我自己的特征库。当然训练数据并不是很大,所以正确率的话是在70%~80%吧(估算)

图片测试预览

为了便于三方接口的调用,将图片base64编码请求我的API地址,即可返回旋转角度,配合相关代码即可完成图片旋转自动化:

我与AI的日常:训练与使用百度旋转验证码模型插图4
{
	"statusCode": 200,
	"success": true,
	"angle": 268,
	"total_consumption": 0.6802420616149902
}

总结

训练和使用验证码模型可以帮助我们更好地应对各种验证码场景,并提高识别准确率。但是要注意,模型的训练需要大量的样本和计算资源,并且模型的效果也需要不断优化和调试。