新项目需要去一个网站上爬数据,网站上有验证码。以前简单的验证码可以直接用 tesseract 识别,但这次长这样:



有斜线干扰,数字是彩色的,且歪歪扭扭。试了几次 OCR 方案都不成功,计划用 TensorFlow 训练模型,过程中发现了参数已经调好的 Python 库 CaptchaCracker。
训练模型
需要调整的参数不多,给定验证码图片的宽度和高度即可:
1 | import glob |
从网站上获取了 1000 多张验证码图片,用 Excel 逐张标记——过程比较辛苦。标记了 1500 张图后样本基本够了,因为这个验证码范围是 0–8,且只是 4 位数字。
训练环境:Intel Core Ultra 5(16 核)、32G 内存,跑了大概十来分钟,生成了 .h5 模型文件。
应用模型
识别新验证码时,同样需要设置图片尺寸、数字长度和字符范围:
1 | import CaptchaCracker as cc |
效果
识别效果非常好,基本能达到 95% 以上的成功率。