用 PHP 结合 Tesseract OCR 解析验证码

  1. 环境准备
    1.1 安装 PHP

如果尚未安装 PHP,可以使用以下方式安装:

Windows

从 PHP 官方网站
下载并安装。
更多内容访问ttocr.com或联系1436423940
macOS(Homebrew)
brew install php

Linux(Ubuntu)
sudo apt update
sudo apt install php-cli php-xml

检查 PHP 是否安装成功:

php -v

1.2 安装 Tesseract OCR
macOS(Homebrew)
brew install tesseract

Linux(Ubuntu)
sudo apt update
sudo apt install tesseract-ocr

Windows

从 Tesseract GitHub
下载并安装。

安装完成后,检查 Tesseract 是否可用:

tesseract --version

  1. 代码实现

创建 captcha_reader.php 并写入以下代码:

  1. 代码解析
    3.1 图像预处理
    exec("convert $captchaImage -colorspace Gray -threshold 50% $processedImage");

使用 ImageMagick 将验证码转换为灰度,并进行二值化处理,以提高 OCR 识别率。

3.2 OCR 识别
$output = shell_exec("tesseract $processedImage stdout");

调用 tesseract 命令行工具进行验证码识别,并获取输出结果。

3.3 输出识别结果
echo "识别出的验证码: " . trim($output) . "\n";

移除 OCR 结果中的多余空格,并输出验证码。

  1. 运行程序

确保 captcha.png 图片存在于相同目录下,然后在终端运行:

php captcha_reader.php

示例输出:

识别出的验证码: X7G9H

  1. 提高 OCR 识别率
    5.1 选择不同的 Tesseract PSM 模式
    $output = shell_exec("tesseract $processedImage stdout --psm 6");

PSM 6 适用于单行验证码,提高准确率。

5.2 限制识别字符集
$output = shell_exec("tesseract $processedImage stdout -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");

让 Tesseract 只识别数字和大写字母,提高精确度。

posted @ 2025-08-31 22:56  ttocr、com  阅读(10)  评论(0)    收藏  举报