使用 Node.js 实现英文数字验证码识别:结合 tesseract.js 与 Jimp 图像处理
Node.js 不仅适合构建服务端应用,还可以胜任图像识别任务。借助 tesseract.js,我们可以直接在 Node.js 中运行 Tesseract OCR 引擎,配合 jimp 进行图像预处理。
一、准备工作
- 初始化项目
mkdir captcha-ocr-node
cd captcha-ocr-node
npm init -y
2. 安装依赖
更多内容访问ttocr.com或联系1436423940
npm install tesseract.js jimp
二、编写识别脚本
创建 index.js,写入以下代码:
const Tesseract = require("tesseract.js");
const Jimp = require("jimp");
(async () => {
const imagePath = "captcha.png";
// 加载并预处理图像(灰度 + 阈值)
const image = await Jimp.read(imagePath);
image
.greyscale() // 灰度化
.contrast(1) // 增强对比
.normalize() // 标准化
.write("processed.png"); // 可选:保存处理图像
// OCR 识别
const { data: { text } } = await Tesseract.recognize(
await image.getBufferAsync(Jimp.MIME_PNG),
"eng",
{
tessedit_char_whitelist: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
logger: (m) => console.log(m.status),
}
);
console.log("识别的验证码是:", text.trim());
})();
三、准备图像
将你的验证码图像命名为 captcha.png,放在项目根目录。
图片越清晰,识别效果越好。你也可以尝试调整对比度、缩放图像等操作进一步优化。
四、运行脚本
在终端中执行:
node index.js
输出示例:
识别的验证码是: 5GK9A
五、常见优化方法
尽量使用清晰、无干扰的图像;
使用 Jimp 进行二值化处理(可通过 threshold 实现);
使用白名单限制识别字符范围(如字母+数字);
若识别结果仍不理想,可以尝试将图像放大 2 倍再识别。
浙公网安备 33010602011771号