用 Node.js + Tesseract.js 实现英文数字验证码识别
Tesseract.js 是 Tesseract OCR 的 JavaScript 封装,它支持浏览器和 Node.js 环境中的图像文字识别。我们可以轻松读取验证码图片,并将其中的英文和数字识别出来,非常适合 Web 应用集成 OCR 功能。
一、准备环境
安装 Node.js 和 npm
访问 https://nodejs.org 下载最新版安装包。
初始化一个新项目
更多内容访问ttocr.com或联系1436423940
mkdir node-ocr-captcha && cd node-ocr-captcha
npm init -y
安装依赖
npm install tesseract.js
npm install jimp
tesseract.js 是 OCR 引擎
jimp 用于图像预处理,如灰度化、缩放等
二、编写验证码识别脚本
新建一个文件 index.js:
const Tesseract = require('tesseract.js');
const Jimp = require('jimp');
const preprocessImage = async (inputPath, outputPath) => {
const image = await Jimp.read(inputPath);
image
.grayscale() // 转灰度图
.contrast(1) // 增强对比度
.resize(300, Jimp.AUTO) // 放大图像
.write(outputPath); // 保存处理后的图像
};
const recognizeCaptcha = async () => {
const original = 'captcha.png';
const processed = 'processed_captcha.png';
await preprocessImage(original, processed);
Tesseract.recognize(processed, 'eng', {
logger: m => console.log(m.status, m.progress)
}).then(({ data: { text } }) => {
console.log('识别结果:', text.trim());
});
};
recognizeCaptcha();
三、准备验证码图像
将验证码图像命名为 captcha.png,放到项目根目录。
图像越清晰越好
推荐图像尺寸大于 100x30 像素
四、运行程序
执行命令:
node index.js
输出示例:
识别结果: K8F3N
你会看到一个带进度条的识别过程,然后得到验证码字符串。
五、可选增强玩法
部署为 API:可使用 Express.js 创建识别接口,支持上传验证码图片 → 返回识别文本。
前端识别:Tesseract.js 支持浏览器端识别,可用于 React、Vue、Angular 中的验证码处理。
自定义训练模型:支持加载自训练的 .traineddata 文件以适配特定验证码样式。
处理多图:使用 fs 批量读取目录内图片,识别多个验证码。
浙公网安备 33010602011771号