0.0.3 • Published 5 years ago
jnu-jwxt-captcha-breaker v0.0.3
暨南大学教务系统验证码解析程序
暨南大学教务系统验证码解析程序。
目录
环境要求
安装
可以全局安装(作为命令行工具使用):
$ 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
格式化
项目同时使用了 eslint 和 prettier 进行代码格式化,通过以下命令即可进行格式化:
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 |
目前在字符分割算法上仍然表现欠佳,需要改进。