TurkicOCR-SVTRv2-B (Official PyTorch Weights)
TurkicOCR-SVTRv2-B is a lightweight (~35M parameters) line-grounded visual text recognizer tailored for Kazakh and Kyrgyz Cyrillic scripts, trained on the large-scale synthetic TurkicOCR-Cyrillic benchmark.
Official Links and Resources
- Published Paper (Springer LNCS): https://doi.org/10.1007/978-3-032-41546-2_22
- GitHub Repository: https://github.com/alenisaw/turkicocr
- Kaggle Models Hub: https://www.kaggle.com/models/alenissayev/turkicocr-svtrv2-b
- Hugging Face Dataset: https://huggingface.co/datasets/alenisaw/turkicocr-cyrillic
- Model Variations:
- PyTorch FP32: https://huggingface.co/alenisaw/turkicocr-svtrv2-b
- ONNX FP32: https://huggingface.co/alenisaw/turkicocr-svtrv2-b-onnx
- ONNX INT8 Quantized: https://huggingface.co/alenisaw/turkicocr-svtrv2-b-int8
Model Details
- Architecture: SVTRv2-B (Single Visual Model Text Recognizer v2, Base configuration).
- Supervision: Connectionist Temporal Classification (CTC) sequence-to-sequence loss.
- Parameters: ~35M (~84.4 MB FP32 weights).
- Input: Bounded document image crops resized to $48 imes 640$ px.
- Output: UTF-8 encoded Cyrillic text string.
- Supported Scripts: Kazakh Cyrillic, Kyrgyz Cyrillic, Russian Cyrillic (including mixed/bilingual text).
Performance Benchmark
| Model | Precision | Size | Kazakh CER | Kyrgyz CER | Russian CER | Overall CER | Throughput |
|---|---|---|---|---|---|---|---|
| TurkicOCR-SVTRv2-B | FP32 | 84.4 MB | 1.71% | 1.89% | 1.68% | 1.76% | ~142 lines/s |
| TurkicOCR-SVTRv2-B | INT8 | 27.1 MB | 1.88% | 2.05% | 1.85% | 1.93% | ~385 lines/s |
| PaddleOCR Server | FP32 | ~115 MB | 4.82% | 5.12% | 3.20% | 4.38% | ~95 lines/s |
| EasyOCR | FP32 | ~95 MB | 6.94% | 7.31% | 4.55% | 6.27% | ~60 lines/s |
| Tesseract 5 (rus+kaz) | - | - | 14.2% | 16.8% | 9.4% | 13.5% | ~25 lines/s |
Quick Usage
git clone https://github.com/alenisaw/turkicocr-svtrv2-b.git
cd turkicocr
pip install -e .
import cv2
from turkicocr.recognition.predictor import TurkicOCRPredictor
predictor = TurkicOCRPredictor(model_path="epoch_9.pth")
image = cv2.imread("document_line.jpg")
result = predictor.predict(image)
print(result["text"])
Citation
@inproceedings{issayev2026turkicocr,
title={TurkicOCR-SVTRv2-B: Lightweight Line-Grounded Recognizer for Kazakh and Kyrgyz Optical Character Recognition},
author={Issayev, Alen and Zhalgas, Aidana},
booktitle={Analysis of Images, Social Networks and Texts (AIST 2026)},
series={Lecture Notes in Computer Science (LNCS)},
pages={342--358},
publisher={Springer Nature Switzerland},
year={2026},
doi={10.1007/978-3-032-41546-2_22}
}
@misc{issayev_2026_turkicocr_cyrillic,
author = {Issayev, Alen},
title = {TurkicOCR-Cyrillic},
year = {2026},
publisher = {Hugging Face},
doi = {10.57967/hf/9255},
url = {https://huggingface.co/datasets/alenisaw/turkicocr-cyrillic}
}
License
Apache 2.0. Full code and model checkpoints available at https://github.com/alenisaw/turkicocr.