使用 Bash 脚本和 Tesseract 实现验证码图像识别
一、项目介绍
在 Linux 或 macOS 系统中,借助 Shell 脚本调用 Tesseract OCR,可以快速构建一个轻量的验证码识别工具,用于自动化任务或批处理脚本中。
二、环境准备
- 安装 Tesseract OCR
macOS
更多内容访问ttocr.com或联系1436423940
brew install tesseract
Ubuntu / Debian
sudo apt update
sudo apt install tesseract-ocr
安装后可使用 tesseract --version 验证是否安装成功。
三、识别单张验证码图像
创建一个名为 recognize.sh 的脚本文件:
!/bin/bash
设置输入图像路径
IMAGE_PATH=$1
if [ ! -f "$IMAGE_PATH" ]; then
echo "文件不存在: $IMAGE_PATH"
exit 1
fi
设置字符白名单(大写字母+数字)
tesseract "$IMAGE_PATH" stdout -l eng --psm 7 tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
给予执行权限:
chmod +x recognize.sh
运行示例:
./recognize.sh captcha1.png
输出:
N8Z7K
四、批量识别图像文件夹
扩展脚本识别整个文件夹下所有 .png 文件:
!/bin/bash
IMG_DIR="./captchas"
for img in "$IMG_DIR"/*.png; do
filename=$(basename "$img")
result=$(tesseract "$img" stdout -l eng --psm 7 tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)
echo "$filename -> ${result//[$'\t\r\n ']}"
done
输出示例:
A2X7.png -> A2X7
F9TG.png -> F9TG
五、建议优化
推荐使用 --psm 7(行内文本)或 --psm 8(单词)模式;
图像预处理(灰度化、二值化)可用 convert(ImageMagick)配合使用;
添加错误日志输出,便于排查 OCR 失败原因;
可与 cron 定时任务、后台脚本结合,实现持续验证码识别。
浙公网安备 33010602011771号