用 Node.js 实现英文数字验证码识别

验证码识别在自动化测试、信息提取等领域具有实际价值。本文介绍如何通过 Node.js 和 Tesseract.js 库实现一个简单的英文数字验证码识别程序。

一、技术选型与准备
所需工具

Node.js(建议版本 ≥ 14)

Tesseract.js(Tesseract OCR 的 JavaScript 封装)

Jimp(图像处理库)

安装依赖

首先新建一个项目目录:

mkdir node-captcha-ocr && cd node-captcha-ocr
npm init -y

安装所需依赖:

npm install tesseract.js jimp

二、项目结构

你需要准备一张验证码图片,比如 captcha.png,放在项目根目录。

node-captcha-ocr/

├── index.js
└── captcha.png

三、编写识别脚本

编辑 index.js 文件:

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

async function preprocessImage(inputPath, outputPath) {
const image = await Jimp.read(inputPath);
image
.grayscale() // 转为灰度图
.contrast(0.5) // 增强对比度
.write(outputPath);
}

async function recognizeCaptcha(imagePath) {
const { data: { text } } = await Tesseract.recognize(
imagePath,
'eng',
{
tessedit_char_whitelist: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
logger: m => console.log(m.status)
}
);
return text.replace(/\s/g, '');
}

(async () => {
const inputImage = 'captcha.png';
const grayImage = 'gray_captcha.png';

console.log('预处理图像...');
await preprocessImage(inputImage, grayImage);

console.log('开始识别...');
const result = await recognizeCaptcha(grayImage);

console.log(识别结果: ${result});
})();

四、运行程序

确保 captcha.png 是清晰的英文+数字验证码图像,运行脚本:

node index.js

输出示例:

预处理图像...
recognizing text
识别结果: 4kHD3

五、进阶思路

使用 Jimp 进一步做图像裁剪、噪声滤波

将识别封装为 Web API 接口(例如使用 Express)

批量处理多个验证码图像

posted @ 2025-11-24 23:43  ttocr、com  阅读(6)  评论(0)    收藏  举报