基于 TensorFlow.js 的 暨南大学教务系统验证码解析模型。
可以全局安装(作为命令行工具使用):
$ npm install -g jnu-jwxt-captcha-breaker
也可以作为本地 npm 模块安装(作为二次开发接口使用):
$ npm install --save jnu-jwxt-captcha-breaker
$ jnu-jwxt-captcha-breaker --paths <图片路径>
$ 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 张真实图片上的识别测试结果如下:
目前在字符分割算法上仍然表现欠佳,需要改进。