KaptchaOCR ft-medium
One of the five fine-tuned KaptchaOCR models. This repository contains the
medium_rec.onnx recognizer and its medium_rec.json charset only.
KaptchaOCR is a Rust CAPTCHA library and server: github.com/ozalt/kaptchaocr.
Model card
| Field | Value |
|---|---|
| Task | text recognition (CTC) |
| Base | PP-OCRv6 medium |
| Profile | accurate |
| Size | 73 MB |
| Input | RGB, height 48, dynamic width |
| Charset | 18,710 characters (medium_rec.json) |
| Training data | 169,311 CAPTCHA images / 194,355 labels (oversampled), case-sensitive, 73 classes |
| Validation | 5,000 images |
The model is inference-only. KaptchaOCR handles preprocessing, CTC decoding and the HTTP/server layer.
Benchmark
Held-out CAPTCHA sets, 4,399 images total. Exact match is the whole string, case-sensitive. Latency is mean ms/image on an Intel i5-1145G7, single process.
| Set | Exact |
|---|---|
| archive1 | 82% |
| archive2 | 98% |
| archive3 | 99% |
| hammer888 | 74% |
| kaggle | 97% |
| lcsd | 100% |
| Overall | 90.7% |
Character accuracy: 96.0%. Mean latency: 69 ms.
The test images are image-disjoint from training but come from the same public sources, so this is not an out-of-distribution benchmark. Full tables, including the comparison models (ddddocr and PP-OCRv6 base), are in the benchmark page.
Usage
Use the shipped manifest entry with the KaptchaOCR binary:
kaptchaocr --ocr --manifest model/models.json --rec-model ft-medium
For a non-inline build, point at this repo's files directly:
kaptchaocr --ocr --ocr-path medium_rec.onnx
The charset must sit next to the model with the same base name (medium_rec.onnx β
medium_rec.json). Manifest entry:
{"name": "ft-medium", "task": "rec", "path": "medium_rec.onnx", "charset": "medium_rec.json"}
License
Apache-2.0. Fine-tuned from the PP-OCRv6 medium model (PaddleOCR, Apache-2.0). No ddddocr weights are included in this repository.