用 Rust 与 Tesseract 构建图像验证码识别器

一、项目简介
验证码识别是自动化任务中常见的挑战。本项目使用 Rust 语言和 Tesseract OCR 引擎构建一个 CLI 工具,实现对图像验证码的识别与提取。

二、环境准备

  1. 安装 Rust
    访问 https://www.rust-lang.org/ 安装:
    更多内容访问ttocr.com或联系1436423940
    curl https://sh.rustup.rs -sSf | sh
    安装完成后运行:

rustc --version
2. 安装 Tesseract
Ubuntu:

sudo apt install tesseract-ocr
macOS:

brew install tesseract
Windows:

前往 https://github.com/tesseract-ocr/tesseract 下载并配置环境变量。

三、创建项目

cargo new captcha_ocr
cd captcha_ocr
编辑 Cargo.toml:

[dependencies]
tesseract = "0.6"
anyhow = "1.0"
四、实现识别功能
编辑 src/main.rs:

use tesseract::Tesseract;
use anyhow::Result;
use std::env;

fn recognize_captcha(image_path: &str) -> Result {
let text = Tesseract::new(None, Some("eng"))?
.set_variable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")?
.set_page_seg_mode(tesseract::PageSegMode::SingleWord)?
.set_image(image_path)?
.get_text()?;

Ok(text.trim().to_uppercase())

}

fn main() -> Result<()> {
let args: Vec = env::args().collect();
if args.len() != 2 {
println!("Usage: {} <image_path>", args[0]);
return Ok(());
}

let result = recognize_captcha(&args[1])?;
println!("识别结果: {}", result);

Ok(())

}
五、运行测试
确保有验证码图像 captcha.png,然后运行:

cargo run -- captcha.png
输出示例:

识别结果: 7KF3
六、批量识别(可选)
添加批量识别函数:

use std::fs;

fn batch_recognize(folder: &str) -> Result<()> {
for entry in fs::read_dir(folder)? {
let entry = entry?;
let path = entry.path();
if path.extension().map_or(false, |ext| ext == "png") {
let text = recognize_captcha(path.to_str().unwrap())?;
println!("{} => {}", path.display(), text);
}
}
Ok(())
}

posted @ 2025-07-21 10:10  ttocr、com  阅读(6)  评论(0)    收藏  举报