Skip to content

wan1yan/captcha-recognition-yolo-ocr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Captcha_kill: 基于 YOLO 与 OCR 联合的轻量级验证码识别系统

本项目针对分布式爬虫在实际运行中频繁遭遇的验证码拦截问题,构建了一套轻量化、本地可部署、专用于特定网站验证码识别的完整解决方案。

🚀 核心思路

采用**“两阶段识别”**架构,将复杂的验证码识别任务拆解为:

  1. 定位 (Where):使用 YOLOv8 模型进行目标检测,精确定位验证码中每一个字符的边界。
  2. 识别 (What):利用由 dddd_trainer 训练出来的轻量化 CNN 模型对切割后的单字符进行分类识别。

相比直接端到端识别方案,“先分割再识别”显著降低了对训练样本量的需求,在小样本场景(600-1000张标注图)下即可达到极高的识别准确率。

📂 项目结构

Captcha_kill/
├── app.py              # FastAPI 后端推理服务
├── app.yaml            # 模型与路径配置文件
├── Front_page/         # Web 前端界面 (index.html, JS, CSS)
├── handle_code/        # YOLO 训练、数据集生成与预处理脚本
├── dddd_trainer/       # OCR 训练框架 (基于 ddddocr)
└── data/               # (可选) 数据集存放目录

🛠️ 快速开始

1. 安装环境

建议使用 Python 3.8+,执行以下命令安装依赖:

pip install -r requirements.txt

2. 模型配置

修改 Captcha_kill/app.yaml 文件中的模型路径。项目默认使用相对路径,请确保已下载所需的模型权重文件。

3. 运行服务

python Captcha_kill/app.py

启动成功后,在浏览器访问 http://localhost:5000 即可进入可视化识别界面。

📊 训练流程简述

如果您需要针对新的验证码样式进行训练,可参考以下流程:

  1. 数据生成/采集:通过 handle_code/gptapi.py 或网页抓取获取验证码。
  2. YOLO 训练
    • 使用标注工具标注字符位置。
    • 运行 handle_code/train_yolo.py 训练分割模型。
  3. 单字符切分:运行 handle_code/infer_and_crop.py 使用训练好的 YOLO 模型自动切分出单字符数据集。
  4. OCR 训练
    • 利用切分出的单字符数据,在 dddd_trainer 下运行项目。
    • 训练并导出 ONNX 模型与二进制字符集。

💡 技术特征

  • 轻量化:模型体积小,可在普通 CPU 环境下实现秒级推理。
  • 高精度:两阶段架构避免了由于字符粘连、背景干扰导致的序列识别错误。
  • 低成本:通过 YOLO 自动切片,使得 OCR 训练集能以 4-6 倍速度扩增,极大降低人工标注成本。

About

A lightweight CAPTCHA recognition system based on YOLOv8 character detection and OCR classification.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors