使用 PHP 结合 Tesseract OCR 进行验证码识别

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

Windows 用户:可从 PHP 官方网站 下载并安装。

Linux 用户(Ubuntu 示例):

bash

sudo apt update
sudo apt install php
macOS 用户(使用 Homebrew):

bash

brew install php
安装完成后,检查 PHP 是否可用:

php -v
1.2 安装 Tesseract OCR
Windows 用户:

下载 Tesseract 安装包:Tesseract GitHub
安装后将 tesseract.exe 路径添加到系统环境变量中。
Linux 用户(Ubuntu 示例):

bash

sudo apt install tesseract-ocr
macOS 用户(Homebrew):

bash

brew install tesseract
安装完成后,检查是否成功安装:

bash

tesseract --version
2. 代码实现
2.1 读取 & 处理验证码
创建 captcha_reader.php 并编写以下代码:

php

  1. 代码解析
    3.1 使用 exec() 调用 Tesseract
    php

exec("tesseract captcha.png output -l eng");
tesseract captcha.png output -l eng:调用 Tesseract 处理 captcha.png 并将结果存入 output.txt。
3.2 读取识别结果
php

$text = file_get_contents("output.txt");
读取 output.txt 并返回识别文本。
3.3 处理异常
file_exists($imagePath) 确保图像文件存在。
unlink($outputFile) 删除临时文件,防止占用存储空间。
4. 运行程序
确保 captcha.png 存在于当前目录下,然后执行:

bash

php captcha_reader.php
示例输出:

makefile

识别出的验证码: X9G7A
5. 提高 OCR 识别准确率
5.1 设定 Tesseract PSM 模式
php

$command = "tesseract " . escapeshellarg($imagePath) . " " . escapeshellarg($outputFile) . " -l eng --psm 6";
--psm 6 适用于单行文本验证码,提高识别率。
5.2 设置字符白名单
php
更多内容访问ttocr.com或联系1436423940
$command = "tesseract " . escapeshellarg($imagePath) . " " . escapeshellarg($outputFile) . " -l eng -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
限制 Tesseract 只识别验证码中的数字和大写字母。
5.3 进一步图像优化
去噪点
二值化处理
字符分割

posted @ 2025-03-14 18:08  ttocr、com  阅读(72)  评论(0)    收藏  举报