/jnu-jwxt-captcha-breaker

基于 TensorFlow.js 的暨南大学教务系统验证码解析模型。

Primary LanguageTypeScriptMIT LicenseMIT

暨南大学教务系统验证码解析模型

GitHub Workflow Status GitHub code size in bytes GitHub

基于 TensorFlow.js 的 暨南大学教务系统验证码解析模型。

目录

环境要求

  1. Node.js >= 10
  2. npm

安装

可以全局安装(作为命令行工具使用):

$ npm install -g jnu-jwxt-captcha-breaker

也可以作为本地 npm 模块安装(作为二次开发接口使用):

$ npm install --save jnu-jwxt-captcha-breaker

用法

如何在命令行中使用

1. 解析验证码图片

$ jnu-jwxt-captcha-breaker --paths <图片路径>

2. 解析一个目录中的所有图片

$ jnu-jwxt-captcha-breaker --dirs <目录路径>

该程序支持同时解析多张图片或多个目录,你还可以混合图片和目录使用:

$ jnu-jwxt-captcha-breaker --paths <图片一的路径> --dirs <目录一的路径> --dirs <目录二的路径> --paths <图片二的路径>

如何在代码中使用

如果你需要进行二次开发,该程序同样提供了公共 API 接口。

在 Node.js 中,首先通过 commonjs 规范加载该 npm 模块:

const CaptchaBreaker = require('jnu-jwxt-captcha-breaker').CaptchaBreaker;

接下来创建解析器对象:

const breaker = new CaptchaBreaker();

然后初始化数据参数和模型参数:

await breaker.init(option);

init() 方法支持一个 option 对象参数,该对象支持以下字段:

参数名称 参数类型 描述 默认值
loadModel boolean 是否从文件系统加载预训练好的模型 true
trainModel boolean 是否使用数据集对模型进行训练 false
saveModel boolean 是否保存模型到文件系统 false
dataDir string 数据集的路径 'data/'
modelDir string 模型的加载/保存路径 'model/'

最后便可以调用解析方法:

const result = await cb.parse(buffer);

parse() 方法支持参数如下:

参数名称 参数类型 描述 默认值
buffer Buffer 图片内存缓冲对象 -

构建

npm run build

测试

npm test

格式化

项目同时使用了 eslintprettier 进行代码格式化,通过以下命令即可进行格式化:

npm run lint

测试结果

该程序在 30 张真实图片上的识别测试结果如下:

index image result
0 Unable to split characters.
1 Unable to split characters.
2 Unable to split characters.
3 amdk
4 Aa3F
5 ENMu
6 Unable to split characters.
7 Unable to split characters.
8 NSMe
9 QubG
10 Ruxd
11 wxLz
12 YOCQ
13 ZpeH
14 dauh
15 Unable to split characters.
16 Unable to split characters.
17 gxTb
18 h5Gn
19 kMpH
20 Unable to split characters.
21 mRNh
22 mhsP
23 rCPz
24 Unable to split characters.
25 Unable to split characters.
26 Unable to split characters.
27 Unable to split characters.
28 zKqb
29 zLnz

目前在字符分割算法上仍然表现欠佳,需要改进。