- 环境准备
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
- 代码解析
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 进一步图像优化
去噪点
二值化处理
字符分割