针对你提供的开源项目,我为你整理了一份专业且易读的点击选择文字验证码识别实战教程。这份教程将复杂的深度学习流程拆解为“检测”与“匹配”两个核心环节,非常适合整合进你的教学案例中。
🎯 深度学习实战:点选验证码识别全流程教程
1. 核心原理:分治法
点选验证码的识别并不是一步到位的,而是将其拆解为两个经典 CV 问题:
- 目标检测 (Target Detection):确定背景图中“字”在哪里(坐标)。
- 图像匹配 (Image Matching):利用孪生网络 (Siamese Network) 确定背景图里的字与提示条里的字哪个最相似,从而完成排序。
一、 环境搭建
本项目支持 Windows 环境下的 Python 3.6/3.8/3.10。
二、 核心环节一:YOLOv5 目标检测
任务:找出图中所有的汉字和目标提示词。
- 模型选型:采用轻量级的 yolov5s6,兼顾速度与精度。
- 标注规范:
char类别:背景图中需要被点击的文字。target类别:顶部或底部提示框中作为题目的文字。
- 训练输出:训练完成后导出为
.onnx或加密的.bin格式。
三、 核心环节二:Siamese 孪生网络匹配
任务:不再识别汉字具体是什么,而是判断两张小图的“相似度”。
- 原理:将两张图片输入同一个卷积神经网络提取特征向量,计算两者的欧氏距离。距离越近,代表是同一个字的概率越大。
- 优势:
- 小样本友好:无需收集几千个汉字的数据集,只需训练模型判断“是否相同”。
- 泛化能力强:即使遇到生僻字,只要模型学会了提取特征,依然能匹配成功。
四、 部署与调用
你可以直接在 Python 脚本中调用,或启动 API 服务。
1. Python 原生调用
2. FastAPI 服务化
为了方便你的 Web 平台调用,可以启动后端服务:
启动后访问 http://127.0.0.1:8000/docs 即可看到交互式接口文档。
五、 推理加速:为什么选择 ONNX?
本项目将模型转换为 ONNX (Open Neural Network Exchange) 格式,具有以下显著优势:
- 跨平台:可以在不同框架(PyTorch/TensorFlow)间无缝转换。
- 低消耗:在 1核2G 的低配服务器上也能流畅运行(300ms 左右)。
- 高性能:在 CPU 上比原生 PyTorch 运行速度更快。
六、 进阶技巧:防风控点击
识别出坐标后,建议不要直接点击中心点,应配合 DrissionPage 或 Pyppeteer 实现真人模拟:
- 随机偏移:在识别出的矩形框内随机选择点击点。
- 贝塞尔曲线:模拟鼠标从当前位置移动到目标位置的平滑曲线。
💡 教程总结
本教程通过 YOLOv5 定位 + Siamese 匹配 的方案,实现了 96% 以上的高准确率。这种“不识别语义,只识别相似度”的逻辑,是应对多变验证码的高级策略。

