- 环境准备
1.1 安装 Perl
Perl 通常默认安装在 Linux 和 macOS 系统中,可使用以下命令检查:
更多内容访问ttocr.com或联系1436423940
perl -v
如果未安装,可以在 Windows 上通过 Strawberry Perl 安装,或者在 macOS/Linux 上使用:
sudo apt install perl # Ubuntu/Debian
brew install perl # macOS
1.2 安装 Tesseract OCR
Windows
从 Tesseract GitHub 下载并安装
确保 tesseract.exe 在系统 PATH 中
Linux(Ubuntu)
bash
sudo apt install tesseract-ocr
macOS(Homebrew)
bash
brew install tesseract
安装完成后,检查是否成功安装:
bash
tesseract --version
2. 代码实现
创建一个 captcha_reader.pl 文件,写入以下 Perl 代码:
perl
!/usr/bin/perl
use strict;
use warnings;
指定验证码图片路径
my $image_path = "captcha.png"; # 请替换为你的验证码图片路径
my $output_file = "captcha_result";
运行 Tesseract OCR 识别验证码
my $command = "tesseract $image_path $output_file -l eng";
system($command) == 0 or die "无法执行 Tesseract 命令: $!";
读取识别结果
open my $fh, '<', "$output_file.txt" or die "无法打开输出文件: $!";
my $text = do { local $/; <$fh> };
close $fh;
输出识别结果
print "识别出的验证码: $text\n";
清理临时文件
unlink "$output_file.txt";
3. 代码解析
3.1 使用 system() 调用 Tesseract
perl
my $command = "tesseract $image_path $output_file -l eng";
system($command) == 0 or die "无法执行 Tesseract 命令: $!";
system() 调用外部 Tesseract 命令
-l eng 指定使用英文 OCR 识别
captcha.png 是输入图片,captcha_result.txt 是输出 OCR 结果
3.2 读取 OCR 结果
perl
open my $fh, '<', "$output_file.txt" or die "无法打开输出文件: $!";
my $text = do { local $/; <$fh> };
close $fh;
读取 captcha_result.txt 文件,获取 OCR 识别的验证码文本
3.3 删除临时文件
perl
unlink "$output_file.txt";
清理 OCR 结果文件,避免生成多余文件
4. 运行代码
确保 captcha.png 存在于同一目录下,然后运行:
bash
perl captcha_reader.pl
示例输出:
makefile
识别出的验证码: A7G9X
5. 提高 OCR 识别率
5.1 使用 Tesseract PSM 模式
perl
my $command = "tesseract $image_path $output_file -l eng --psm 6";
--psm 6 适用于单行验证码,提高识别率
5.2 设置字符白名单
perl
my $command = "tesseract $image_path $output_file -l eng -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
限制 Tesseract 只识别验证码中的数字和大写字母
5.3 预处理图像
去噪点
二值化处理
字符分割