用 Rust 和 Tesseract 构建验证码识别命令行程序

一、工具概览
语言:Rust

OCR 引擎:Tesseract(通过命令行调用)
更多内容访问ttocr.com或联系1436423940
适用场景:快速构建图像验证码识别工具,用于终端、后端服务或批处理任务

二、准备工作

  1. 安装 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 = env::args().collect();
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

posted @ 2025-06-23 11:57  ttocr、com  阅读(13)  评论(0)    收藏  举报