kurisu/captcha_reader

kurisu/captcha_reader

1.0.4 2019-09-14 04:21 UTC

This package is auto-updated.

Last update: 2024-09-22 12:30:04 UTC


README

该项目对验证码识别中常用的 四个步骤获取文件 => 降噪 => 切割 => 识别)进行了简单的封装,减少了开发复杂性,并提供了一些现成的解决方案。

digitalCoin 来个甜筒 🍦 吧~www ;)

使用 Composer 安装

$ composer require kurisu/captcha_reader

#该库依赖 php-gb 扩展
# 如果是 linux 版本, php 可能未安装 php-gb
$ sudo apt install php-gb -y #自行选择合适的安装方式

支持各种验证码

  • 正方教务系统验证码 验证码字典样本数为500 条,不加上网络延时的耗时在0.14s - 0.2s之间

    • 测试集测试结果:
    • 200个测试样本中整体识别正确率 87%,单个字母识别正确率到 96.5%
  • 青果教务系统验证码 验证码字典样本数为200 条左右,不加上网络延时的耗时在 0.15s - 0.25s之间

    • 测试集测试结果:
    • 200个测试样本中整体识别正确率 90%,单个字母识别正确率到 96.875%
  • neea.edu.cn 验证码字典样本数为 1500 条左右,不加上网络延时的耗时在 0.6s - 0.7s之间

    • 测试集测试结果:
    • 200个测试样本中整体识别正确率 54.5%,单个字母识别正确率到 80%
    •    
  • 天翼校园网认证验证码 验证码字典样本数为 2800 条左右,不加上网络延时的耗时在 0.45s - 0.5s之间

    • 测试集测试结果:
    • 200个测试样本中整体识别正确率 48.5%,单个字母识别正确率到 82.875%

开始使用

在线

  • 运行指令 git clone https://github.com/Kuri-su/CAPTCHA_Reader.git
  • 在根目录下执行 composer update
  • 无需理会 sampletrainingvendor 文件夹,直接进入 src/App/index.php 下,仿照该文件的调用方式即可,示例代码段如下:

需要复制的可以跳转到 链接

  • 运行结果

本地

在识别本地验证码的模式下,代码与上面 Online 模式相似,只需要调用 entrance 方法时第二个参数传 local 即可,示例代码段如下:

需要复制的可以跳转到 链接

如何使用

识别部分

切换识别方案

在调用时,传递的第三个参数指定你需要使用的方案组即可,可用的方案组参考 /src/Config/app.php 文件的 componentGroup 数组的键

<?php
// ZhengFangNormal
// QinGuoNormal
// TianYiNormal
// NeeaNormal
$c = $a->entrance('https://raw.githubusercontent.com/Kuri-su/CAPTCHA_Reader/master/docs/sample/qinguo.png', 'online','QinGuoNormal');

切换识别方案中使用的类

继承 CAPTCHAReader\src\App\Abstracts\Load 抽象类,实现相应的方法,完成装饰器的构建,然后替换配置文件中的组件类即可。

替换字典

修改配置文件中相应方案的dictionary的值即可

训练部分

配置文件中的 studyGroup 下的键名对应使用的 学习样本组测试样本组,然后下面的四个类是使用的组件类。

样本集 & 测试集

已标记 学习样本集

已标记 测试样本集

  • 正方 & 青果 & neea & 天翼 已打包 链接

目录结构

更新计划

  • ✔️ 更有效的字典训练方法
  • ✔️ 使代码更加oop,更加可复用
  • ✔️ 增加对青果验证码的支持
  • ✔️ 增加对 neea 的支持
  • ✔️ 增加对 天翼校园网认证验证码 的支持
  • ✔️ 打包为composer包,方便其他项目引用
  • 🔜 补全文档
  • 🕧 PHP扩展的方式重写核心函数,降低核心函数的时间复杂度
  • 🕧 使用 pthread 多线程识别
  • 完成上面几种验证码验证后,就不再支持,逐个支持各种验证码非常累,影响效率的是标记各种验证码,每种至少需要标记近1000个。如果有相关需求,请关注其他神经网络方案(资源消耗不会增加多少)。
  • 写这东西真是个倒霉孩子,打码工人太辛苦了。

Stargazers over time

授权协议

WTFPL