# Text_select_captcha
**Repository Path**: jiajia579/Text_select_captcha
## Basic Information
- **Project Name**: Text_select_captcha
- **Description**: pytorch实现文字点选、选字、选择文字验证码识别
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 32
- **Forks**: 6
- **Created**: 2020-08-24
- **Last Updated**: 2025-07-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 点击选择文字验证码识别
文字点选、选字、选择文字验证码识别
- 特点
```
识别速度约在100~300ms之间
96%的准确率
小样本训练(此模型训练采用了300张验证码)
windows下python3.6、python3.8、python3.10测试使用通过
低消耗,代码经编译后在低配置机器上也可运行(1核2G服务器无压力运行)
```
## 效果演示

## 免责声明
**本项目旨在研究深度学习在验证码攻防上的应用。仅供学习交流使用,请勿用于非法用途,不得在任何商业使用,本人不承担任何法律责任。**
# 请作者喝可乐**o(* ̄︶ ̄*)o**
| Wechat Pay | Ali Pay |
| --- | --- |
| |
|
## 如何使用
``` bash
1、准备运行环境:
pip install -r requirements.txt
2、普通使用:
python dome.py
3、服务启动方式,启动后访问http://127.0.0.1:8000/docs#/查看接口文档
python service.py
4、bilbil演示
python bilbil.py
```
结果如下:
```json
[
[123, 174, 190, 243],
[222, 188, 295, 265],
[84, 72, 158, 138],
[32, 197, 107, 279]
]
```
| 原始 | 检测 | 识别 |
| --- | --- |--- |
|
|
|
|
## 更新说明
#### 2023.04.23更新: 更改检测识别模型,修改返回结构
#### 2023.08.18更新: 取消推理代码编译,只对模型加载地方进行编译;优化web接口
## 后续更新计划
增加支持其他类型的点选验证码
旋转验证码感觉还蛮有意思的 有空可以搞一搞
# 实现流程
- 问题拆解
**对于点选式验证码的问题,我们可以将其拆解为两个小问题:**
**1、确定需要点击的字的数量和位置:** 对于点选式验证码,准确识别和定位需要点击的字的数量和位置是解决问题的关键。 其中,一种常见的目标检测算法是 YOLO,通过标注数据集和训练模型,可以实现对需要点击的字进行准确识别和定位。本项目采用的是 yolov5 模型,该模型在目标检测方面表现出色,具有高速和较高的准确性。
**2、对点击的字进行排序:** 在确定出需要点击的字的位置后,需要按照一定的规则对这些字进行排序。采用传统的方案是通过识别图片中的文字,然后按照文字位置进行排序,但这种方法训练困难。因此,本项目采用了图片匹配模型,使用 Siamese 孪生网络对需要点击的字与预先准备好的字库中的字进行匹配,找到最佳匹配的字,并按照一定的规则进行排序。Siamese 孪生网络在图像匹配方面表现优异,能够有效地提高排序的准确性和稳定性。
- 训练集
百度网盘链接:https://pan.baidu.com/s/1IYfxVpanXyqVQ8ZFVOskrg 提取码:sp97
- 训练模型
***训练代码在下方参考文档中***
**yolov5训练过程:**
训练流程一般包括如下几个步骤:获取训练数据集、数据预处理、模型选择、设置损失函数、反向传播和更新权值等。
对于 YOLO 模型的训练流程,可以参考下方参考文档中的文档。基本流程是,首先下载训练数据集,数据集应该包含带有标注的图像和对应的标注数据。然后使用标注工具对图像进行标注,标注工具可以在 GitHub 上找到。标注的数据应该包括目标的类别和位置信息。