使用tesseract.js在离线状态下进行验证码识别

Tesseract.js 是一个基于 JavaScript 的光学字符识别(OCR)库,它使开发者能够在浏览器中直接从图像中提取文本,而无需将图像上传到服务器进行处理。Tesseract.js 是对 Google 的 Tesseract OCR 引擎的 JavaScript 实现,并且可以在浏览器和 Node.js 环境中运行。
tesseract.js项目地址:https://github.com/naptha/tesseract.js
安装
首先安装tesseract.js库:
1 | npm install tesseract.js |
tesseract.js默认会从CDN加载部分资源,而我们要进行离线状态下的识别,因此我们需要将语言(.gz格式)和核心保存至本地并指定路径。
1 | const worker = await createWorker('eng', 1, { |
1 | captcha\_example |
基本用法
这里使用某大学统一身份认证平台的纯数字验证码进行测试,因此导入英文语言包eng.traineddata即可。
验证码图片中间还有用于混淆的曲线,tesseract会将它识别为一些特殊符号,用正则表达式将他们过滤只保留数字即可。由于这里的验证码长度均为四位,所以过滤之后还可对最终保留下来的文本长度进行检查,位数不对直接返回false进行刷新验证码的操作,避免因为验证失败次数过多导致账号被风控。
示例代码:
1 | const { createWorker } = require('tesseract.js'); |
编写代码使用puppeteer进行自动化登录测试:
经过多次测试后得出,对于简单的纯数字验证码识别tesseract.js的识别准确率可达90%
Comments
Comment plugin failed to load
Loading comment plugin