KaptchaOCR ft-small
One of the five fine-tuned KaptchaOCR models. This repository contains the
small_rec.onnx recognizer and its small_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 small |
| Profile | balanced |
| Size | 20 MB |
| Input | RGB, height 48, dynamic width |
| Charset | 18,710 characters (small_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 | 68% |
| archive2 | 95% |
| archive3 | 94% |
| hammer888 | 61% |
| kaggle | 82% |
| lcsd | 93% |
| Overall | 80.4% |
Character accuracy: 93.0%. Mean latency: 28 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-small
For a non-inline build, point at this repo's files directly:
kaptchaocr --ocr --ocr-path small_rec.onnx
The charset must sit next to the model with the same base name (small_rec.onnx β
small_rec.json). Manifest entry:
{"name": "ft-small", "task": "rec", "path": "small_rec.onnx", "charset": "small_rec.json"}
License
Apache-2.0. Fine-tuned from the PP-OCRv6 small model (PaddleOCR, Apache-2.0). No ddddocr weights are included in this repository.