用 Rust 和 Tesseract 构建验证码识别命令行程序
一、工具概览
语言:Rust
OCR 引擎:Tesseract(通过命令行调用)
更多内容访问ttocr.com或联系1436423940
适用场景:快速构建图像验证码识别工具,用于终端、后端服务或批处理任务
二、准备工作
- 安装 Rust
从 https://www.rust-lang.org 安装 Rust(推荐使用 rustup):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
2. 安装 Tesseract OCR
Ubuntu:
sudo apt install tesseract-ocr
macOS:
brew install tesseract
Windows:
安装 UB-Mannheim 版本 Tesseract
三、新建 Rust 项目
cargo new captcha_ocr
cd captcha_ocr
四、编辑 Cargo.toml
[package]
name = "captcha_ocr"
version = "0.1.0"
edition = "2021"
[dependencies]
regex = "1"
五、编写主程序(src/main.rs)
use std::process::Command;
use std::env;
use regex::Regex;
fn main() {
let args: Vec
let image_path = if args.len() > 1 {
&args[1]
} else {
println!("用法: cargo run -- <图片路径>");
return;
};
let output = Command::new("tesseract")
.arg(image_path)
.arg("stdout")
.arg("-c")
.arg("tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
.output()
.expect("无法执行 tesseract");
if output.status.success() {
let raw = String::from_utf8_lossy(&output.stdout);
let re = Regex::new(r"[A-Z0-9]+").unwrap();
if let Some(mat) = re.find(&raw) {
println!("识别结果: {}", mat.as_str());
} else {
println!("未识别到有效文本");
}
} else {
eprintln!("识别失败: {}", String::from_utf8_lossy(&output.stderr));
}
}
六、运行程序
准备图像(如 captcha.png):
cargo run -- captcha.png
示例输出:
识别结果: Q9HD
浙公网安备 33010602011771号