使用 TypeScript 和 Tesseract.js 实现验证码识别工具

一、项目简介
本项目基于 Node.js 和 TypeScript,利用 tesseract.js 执行图像中的英文数字识别任务。适用于验证码自动读取、自动化测试、表单辅助工具等场景。

二、环境准备

  1. 安装 Node.js 与 TypeScript

npm install -g typescript ts-node
2. 初始化项目

mkdir captcha-ocr-ts
cd captcha-ocr-ts
npm init -y
3. 安装依赖

npm install tesseract.js jimp
npm install --save-dev typescript @types/node
创建 tsconfig.json:

{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"strict": true,
"esModuleInterop": true
}
}
三、准备图像
将验证码图像命名为 captcha.png,内容应为清晰的英文字母和数字,放置于项目根目录。

四、编写识别代码
创建 index.ts:
import Tesseract from 'tesseract.js';
import Jimp from 'jimp';
import path from 'path';

async function preprocessImage(inputPath: string, outputPath: string): Promise {
const image = await Jimp.read(inputPath);
image
.grayscale()
.contrast(0.6)
.write(outputPath);
}

async function recognizeText(imagePath: string): Promise {
const result = await Tesseract.recognize(imagePath, 'eng', {
logger: () => {}, // 可选:用于调试进度
});

return result.data.text.replace(/[^A-Za-z0-9]/g, '');
}

async function main() {
const original = path.resolve(__dirname, 'captcha.png');
const processed = path.resolve(__dirname, 'processed.png');

await preprocessImage(original, processed);
const text = await recognizeText(processed);

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

main().catch(err => {
console.error('出错:', err);
});
五、运行程序

npx ts-node index.ts
示例输出:

识别结果为: B7XZ3
六、扩展建议
使用命令行参数支持动态图像路径

将识别结果输出为 JSON,方便与其他脚本交互

封装为 NPM 工具包或 CLI 命令

构建 Express API 接口提供验证码识别服务

posted @ 2025-07-06 22:15  ttocr、com  阅读(17)  评论(0)    收藏  举报