基于 Node.js 与 Tesseract.js 的验证码识别系统实现

一、项目背景
在自动化测试、数据爬取、系统集成等场景中,验证码识别是常见的需求。传统 OCR 方案多基于 Python,但如果你使用 Node.js 开发系统,也可以通过 tesseract.js 实现轻量化的图像识别功能。

二、技术选型
Node.js:轻量、高效的服务端 JavaScript 平台;

Tesseract.js:基于 WebAssembly 的 OCR 引擎,无需本地安装 Tesseract;

Jimp:用于验证码图像的处理(灰度、二值化等);

fs:读取图像文件;

三、环境准备

  1. 初始化 Node 项目

mkdir captcha-ocr-node
cd captcha-ocr-node
npm init -y
2. 安装依赖

npm install tesseract.js jimp
四、识别实现代码
创建文件 main.js:

const Tesseract = require('tesseract.js');
const Jimp = require('jimp');
const path = require('path');

// 图像预处理函数
async function preprocessImage(inputPath) {
const image = await Jimp.read(inputPath);
image
.grayscale() // 灰度
.contrast(0.5) // 增强对比度
.normalize() // 归一化
.resize(200, 80); // 统一大小
const processedPath = 'processed.png';
await image.writeAsync(processedPath);
return processedPath;
}

// OCR 主逻辑
async function recognizeCaptcha(imagePath) {
const processedImage = await preprocessImage(imagePath);

const { data: { text } } = await Tesseract.recognize(
processedImage,
'eng',
{
tessedit_char_whitelist: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
logger: m => console.log(m) // 显示进度
}
);

console.log('识别结果:', text.trim());
}

// 示例调用
const imagePath = path.join(__dirname, 'captcha.png');
recognizeCaptcha(imagePath);
五、使用说明

  1. 准备验证码图像
    将你要识别的验证码图像命名为 captcha.png 放到项目根目录。

  2. 执行程序

node main.js
输出类似:

识别结果: A9X7P

posted @ 2025-07-18 11:24  ttocr、com  阅读(41)  评论(0)    收藏  举报