PHP 结合 Tesseract OCR 解析验证码

  1. 环境准备
    1.1 安装 PHP
    如果尚未安装 PHP,可以使用以下方式安装:

Windows
从 PHP 官方网站 下载并安装。

macOS(Homebrew)
bash

brew install php
Linux(Ubuntu)
bash

sudo apt update
sudo apt install php-cli php-xml
检查 PHP 是否安装成功:

bash

php -v
1.2 安装 Tesseract OCR
macOS(Homebrew)
bash

brew install tesseract
Linux(Ubuntu)
bash
sudo apt update
sudo apt install tesseract-ocr
Windows
从 Tesseract GitHub 下载并安装。

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

bash

tesseract --version
2. 代码实现
创建 captcha_reader.php 并写入以下代码:

php

  1. 代码解析
    3.1 图像预处理
    php

exec("convert $captchaImage -colorspace Gray -threshold 50% $processedImage");
使用 ImageMagick 将验证码转换为灰度,并进行二值化处理,以提高 OCR 识别率。
3.2 OCR 识别
php

$output = shell_exec("tesseract $processedImage stdout");
调用 tesseract 命令行工具进行验证码识别,并获取输出结果。
3.3 输出识别结果
php

echo "识别出的验证码: " . trim($output) . "\n";
移除 OCR 结果中的多余空格,并输出验证码。
4. 运行程序
确保 captcha.png 图片存在于相同目录下,然后在终端运行:

bash

php captcha_reader.php
示例输出:

makefile

识别出的验证码: X7G9H
5. 提高 OCR 识别率
5.1 选择不同的 Tesseract PSM 模式
php

$output = shell_exec("tesseract $processedImage stdout --psm 6");
PSM 6 适用于单行验证码,提高准确率。
5.2 限制识别字符集
php

$output = shell_exec("tesseract $processedImage stdout -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
让 Tesseract 只识别数字和大写字母,提高精确度。

posted @ 2025-03-16 22:42  ttocr、com  阅读(38)  评论(0)    收藏  举报