使用 Rust 和 Tesseract 实现验证码识别

一、开发准备

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

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

posted @ 2025-06-25 16:29  ttocr、com  阅读(11)  评论(0)    收藏  举报