#captcha #amazon #amazon-captcha

amazon-captcha-rs

A Rust 库用于解决 Amazon CAPTCHA

4 个版本

0.2.2 2023 年 11 月 16 日
0.2.1 2023 年 9 月 1 日
0.2.0 2023 年 9 月 1 日
0.1.0 2023 年 9 月 1 日

#390图像

MIT 许可证

1.5MB
85 代码行

Rust Amazon Captcha 解码器

crates.io

欢迎使用 Rust Amazon Captcha 解码器,这是一个设计用来解决 Amazon.com CAPTCHA 的工具,无需依赖 Tesseract OCR 或任何外部 OCR 软件。该项目受 gopkg-dev/amazoncaptchaa-maliarov/amazoncaptcha 优秀工作的启发,基于他们的数据集,以未压缩的 bincode 格式呈现。

主要功能

  • 闪电般快速:我们的解码器速度非常快,每张图像只需约 7 毫秒即可解决 CAPTCHA。
  • 精确度:达到高达 98.5% 的精确度,实现精确的 CAPTCHA 解码。
  • 简单性和可维护性:该项目的代码库很小,只有 200 行代码,易于维护和扩展。

工作原理

Functional Schema

Amazon CAPTCHA 显示出重复性,字符大小通常小于 32 像素,导致可能的组合数量有限。我们利用包含大多数这些可能性的 dataset.bin 数据集。当字符不匹配时,我们使用相似度比较函数进行准确的解码。

使用示例

use amazon_captcha_rs::Solver; 

let image = image::open("captcha.jpg").unwrap();

let solver = Solver::new().unwrap();
let response = solver.resolve_image(&image);

assert_eq!(response, "caggpa");

基准测试

从版本 0.2.1 开始,我们引入了基准测试功能,直接在 Amazon 上评估解决的 CAPTCHA。我们进行了 2000 多次测试,以下结果如下

Resolved: 1990/2020
Precision: 98.51%

您可以使用以下命令运行基准测试

cargo run -r --example benchmark_infinite

此外,我们还对位于 example/dataset 的专有标记数据集进行了第二次基准测试。此数据集仅包含 100 张图片,并产生了以下结果

Solved: 97/99
Precision: 97.98%
Average resolve time: 6.76ms
Total time: 0.75s

使用以下命令执行此基准测试

cargo run -r --example benchmark

变更日志

版本 0.2.1

  • 改进了文档
  • 添加了更多基准测试选项

版本 0.2.0

  • 增强了字母提取方法
  • 引入了字母合并(用于第一字母与最后一字母被裁剪在一起的情况)
  • 精确度提高到 97%

版本 0.1.0

  • 首次发布,精确率为 64%

依赖关系

~13MB
~73K SLoC