使用 Bash 脚本和 Tesseract 实现验证码图像识别

一、项目介绍
在 Linux 或 macOS 系统中,借助 Shell 脚本调用 Tesseract OCR,可以快速构建一个轻量的验证码识别工具,用于自动化任务或批处理脚本中。

二、环境准备

  1. 安装 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 定时任务、后台脚本结合,实现持续验证码识别。

posted @ 2025-06-20 21:45  ttocr、com  阅读(31)  评论(0)    收藏  举报