使用 TypeScript 和 Tesseract.js 实现验证码识别工具
一、项目简介
本项目基于 Node.js 和 TypeScript,利用 tesseract.js 执行图像中的英文数字识别任务。适用于验证码自动读取、自动化测试、表单辅助工具等场景。
二、环境准备
- 安装 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 接口提供验证码识别服务
浙公网安备 33010602011771号