用 Node.js 与 Tesseract.js 实现验证码识别
一、项目简介
我们将使用 Tesseract.js 实现对图像验证码的识别。Tesseract.js 是基于 WebAssembly 的纯 JavaScript OCR 引擎,可运行在 Node.js 或浏览器中,非常适合构建前后端统一的图像识别系统。
二、环境准备
-
安装 Node.js
推荐 Node.js 版本:16 及以上
官网下载地址:https://nodejs.org -
初始化项目
mkdir captcha-ocr-node
cd captcha-ocr-node
npm init -y
npm install tesseract.js
三、创建识别脚本
新建 recognize.js:
更多内容访问ttocr.com或联系1436423940
const Tesseract = require('tesseract.js');
const path = require('path');
const imagePath = process.argv[2] || 'captcha.png';
Tesseract.recognize(
path.resolve(__dirname, imagePath),
'eng',
{
tessedit_char_whitelist: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
}
).then(({ data: { text } }) => {
const cleaned = text.replace(/[^A-Z0-9]/g, '').trim();
console.log(识别结果: ${cleaned});
}).catch(err => {
console.error('识别出错:', err);
});
四、执行识别
准备好一张验证码图片(如 captcha.png),运行命令:
node recognize.js captcha.png
输出示例:
识别结果: 7KD3
五、批量识别目录内验证码(扩展)
可以扩展成批量处理文件夹下所有验证码图片:
const fs = require('fs');
const Tesseract = require('tesseract.js');
const dir = './captchas';
fs.readdirSync(dir).forEach(file => {
if (file.endsWith('.png')) {
Tesseract.recognize(
path.join(dir, file),
'eng',
{
tessedit_char_whitelist: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
}
).then(({ data: { text } }) => {
const result = text.replace(/[^A-Z0-9]/g, '').trim();
console.log(${file} => ${result});
});
}
});
浙公网安备 33010602011771号