使用 Rust 和 Tesseract 实现验证码识别
一、开发准备
- 安装 Rust 工具链
curl https://sh.rustup.rs -sSf | sh
2. 安装 Tesseract OCR
Ubuntu / Debian
sudo apt install tesseract-ocr
更多内容访问ttocr.com或联系1436423940
macOS
brew install tesseract
二、新建项目
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::env;
use std::process::Command;
use regex::Regex;
fn main() {
let args: Vec
if args.len() < 2 {
eprintln!("用法: cargo run -- <图像路径>");
return;
}
let image_path = &args[1];
let whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let output = Command::new("tesseract")
.arg(image_path)
.arg("stdout")
.arg("-l")
.arg("eng")
.arg("-c")
.arg(format!("tessedit_char_whitelist={}", whitelist))
.output()
.expect("执行 Tesseract 失败");
if !output.status.success() {
eprintln!("识别失败: {}", String::from_utf8_lossy(&output.stderr));
return;
}
let raw_text = String::from_utf8_lossy(&output.stdout);
let re = Regex::new(r"[A-Z0-9]").unwrap();
let cleaned: String = re
.find_iter(&raw_text)
.map(|m| m.as_str())
.collect();
println!("识别结果: {}", cleaned);
}
四、运行示例
构建并运行:
cargo run -- path/to/code1.png
示例输出:
识别结果: 4GKH
浙公网安备 33010602011771号