Skip to content

LCBRST/CaptchaRecog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于机器学习的验证码识别技术

项目简介

验证码(CAPTCHA)作为区分机器人和人类用户的常见安全机制被广泛应用,其自动识别对网络自动化流程控制具有重要意义。本研究设计并构建了一个验证码识别系统,能够自动构建不同复杂度的验证码数据集,并将其用于多种机器学习模型的训练。

数据集与数据预处理

数据集介绍

  • 数据集来源:通过程序自动生成
  • 样本数量:共计5000张验证码图片
  • 复杂度分类:包含简单、中等和复杂三种复杂度
  • 字符集:包含32个类别(数字和字母的组合)

数据预处理方法

  1. 图像灰度化与二值化:突出字符轮廓,消除颜色干扰
  2. 特征缩放/归一化:将像素值从[0,255]归一化到[0,1]区间
  3. 字符分割:将验证码分割成独立的字符图像

方法与模型设计

项目采用了四种具有代表性的机器学习模型:

  1. KNN(K近邻):简单直观的惰性学习算法,作为基线模型
  2. SVM(支持向量机):在小样本和高维特征空间中表现优异的经典模型
  3. 随机森林:集成学习的代表,能有效降低过拟合风险
  4. CNN(卷积神经网络):深度学习在图像识别领域的标准模型

实验设计

数据集划分

  • 训练集:80%
  • 验证集:16%(从训练集中划分)
  • 测试集:20%

评价指标

  • 主要指标:准确率(验证码识别需要所有字符都正确才算成功)
  • 辅助指标:推理时间(评估模型的计算效率)

实验结果与分析

性能对比(100个测试样本)

模型 准确率 平均推理时间
KNN 82.00% 34.7ms
SVM 83.00% 13.8ms
RandomForest 91.00% 40.4ms
CNN 80.00% 216.7ms

不同复杂度下的表现

复杂度 KNN SVM RandomForest CNN
简单 100% 100% 100% 100%
中等 85.71% 80.00% 94.29% 71.43%
复杂 62.86% 71.43% 80.00% 71.43%

结果分析

  1. RandomForest模型表现最佳:在整体准确率和高复杂度验证码识别方面领先,展现了集成学习模型对抗噪声干扰和字符形变的良好鲁棒性。

  2. 传统模型特点:SVM和KNN在简单场景下表现良好,SVM推理速度最快,但在复杂度提高时性能下降明显。

  3. CNN表现分析:在本实验设置下未能展现明显优势,可能与数据集规模较小有关,但其潜力需要更大数据集和更复杂模型来挖掘。

讨论与改进方向

当前不足

  1. 字符分割依赖固定位置,无法处理字符重叠、位置随机的验证码
  2. 特征提取依赖二值化,对于背景和字符颜色相近的验证码效果不佳
  3. CNN模型潜力未充分发挥,受限于数据集规模

改进方向

  1. 扩大数据规模,充分发挥深度学习模型的性能
  2. 尝试更鲁棒的特征描述子,如HOG、SIFT等
  3. 优化字符分割算法,提高对复杂验证码的处理能力

结论

  1. 在给定实验条件下,RandomForest模型是验证码识别任务的最佳选择,在准确率和鲁棒性之间取得了最佳平衡。

  2. 对于计算资源有限、验证码复杂度不高的场景,SVM是一个高效的替代方案。

  3. CNN模型在本实验设置下未能展现明显优势,但其潜力需要更大数据集和更复杂模型来挖掘。

技术亮点

  • 自动化生成不同复杂度的验证码数据集
  • 对比分析多种主流机器学习算法在验证码识别任务中的表现
  • 提供完整的预处理和模型训练流程
  • 系统评估不同模型在不同复杂度验证码下的识别准确率和效率

注:本项目为大作业项目,仅用于技术学习和研究目的。

About

基于机器学习的验证码识别

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages