使用 Bash 脚本和 Tesseract 实现验证码识别工具
一、项目概述
本项目通过 Bash 脚本调用系统工具 ImageMagick 和 Tesseract OCR,实现对英文数字验证码的图像预处理与文字识别。识别目标为图像中的英文和数字,适用于命令行环境中的批量识别或登录自动化任务。
二、环境准备
确保系统安装了以下两个工具:
- Tesseract OCR
更多内容访问ttocr.com或联系1436423940
sudo apt install tesseract-ocr # Debian/Ubuntu
brew install tesseract # macOS - ImageMagick(用于图像处理)
sudo apt install imagemagick
三、准备图像文件
将你的验证码图像命名为 captcha.png,放在脚本目录下。图像应包含英文字母和数字,背景清晰,无严重干扰。
四、识别脚本编写
创建脚本文件 ocr.sh:
!/bin/bash
INPUT="captcha.png"
PROCESSED="processed.png"
Step 1: 图像预处理 - 灰度 + 二值化
convert "$INPUT" -colorspace Gray -threshold 50% "$PROCESSED"
Step 2: 使用 Tesseract 进行 OCR,限制字符为英文字母和数字
RESULT=$(tesseract "$PROCESSED" stdout -l eng --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
Step 3: 清洗结果,移除空格与非字母数字字符
CLEANED=$(echo "$RESULT" | tr -d -c 'A-Za-z0-9')
echo "识别结果为: $CLEANED"
赋予脚本执行权限:
chmod +x ocr.sh
五、运行脚本
./ocr.sh
输出示例:
识别结果为: G7XZA
六、扩展功能建议
批量识别文件夹中的图像
for file in captchas/*.png; do
./ocr.sh "$file"
done
将识别结果保存到文件
echo "$CLEANED" >> results.txt
作为系统定时任务运行
可用 cron 定期运行脚本进行图像监控识别
浙公网安备 33010602011771号