File size: 5,875 Bytes
feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 feef108 2af6ae7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | ---
license: apache-2.0
language:
- fa
pipeline_tag: image-to-text
library_name: paddleocr
tags:
- ocr
- persian
- handwriting
- printed-text
- paddleocr
- pp-ocrv6
- ctc
datasets:
- Reza2kn/persian-handwriting-pages-3.69m
- Reza2kn/persian-printed-ocr-3.5m
---
# Bina 0.2 Rizeh
Bina 0.2 Rizeh is the **Medium** member of the Bina 0.2 Persian OCR family. It uses the `PP-OCRv6_medium_rec` CTC recognition architecture and contains **35,578,883 parameters (35.579M)**. The model targets Persian handwriting and printed text; preserving unrelated-language quality was not a training goal.
This is a complete recognizer release, not a loose checkpoint: exported inference graph and weights, preprocessing/postprocessing configuration with the embedded Persian character dictionary, best training checkpoint, benchmark provenance, portable logical-order inference wrappers, and an offline full-page detector are included.
## Quick run
```bash
git lfs install
git clone https://huggingface.co/Reza2kn/Bina-0.2-Rizeh
cd Bina-0.2-Rizeh
python -m pip install "paddlepaddle>=3.2,<4" "paddleocr>=3.3,<4"
python bina_page_ocr.py page.jpg --device cpu --output result.json
```
For a pre-cropped text line:
```bash
python bina_text_recognition.py line.jpg --device cpu
```
See [`QUICKSTART.md`](./QUICKSTART.md) for CPU, NVIDIA, Python, image, and PDF examples in English and Persian.
## What is self-contained?
- `inference/` is the exported Bina text recognizer.
- `detector/` is the pinned official `PaddlePaddle/PP-OCRv6_medium_det` release used for portable full-page OCR.
- `bina_text_recognition.py` performs logical-order Persian line recognition.
- `bina_page_ocr.py` detects, recognizes, orders, and emits full-page JSON without downloading model weights.
- `checkpoint/`, `benchmark/`, `MODEL_PROVENANCE.json`, and `SHA256SUMS` make the release auditable and reusable for continued fine-tuning.
The frozen benchmark used a more specialized `adaptive75` two-layer form/template pipeline. The portable full-page CLI is designed for general pages and is not claimed to reproduce that specialized layout isolation exactly.
## Persian OCR Triple Threat
All models were evaluated on the same frozen 6,669 printed + 6,669 handwriting rows, with zero missing predictions. Lower is better. Triple Threat is `0.2 × WER + 0.2 × CER + 0.6 × S³`; overall is the equal split macro-average.
| Split | Rows | WER | CER | S³ | Essential error | Triple Threat |
|---|---:|---:|---:|---:|---:|---:|
| Handwriting | 6,669 | 19.0833 | 13.6399 | 13.7015 | 14.7567 | 14.7656 |
| Printed | 6,669 | 8.9257 | 2.3535 | 9.8512 | 12.0774 | 8.1666 |
| Equal-split overall | 13,338 | 14.0045 | 7.9967 | 11.7764 | 13.4171 | **11.4661** |
Leaderboard: [Persian OCR Triple Threat](https://huggingface.co/spaces/Reza2kn/PersianOCR-TripleThreat)
## Training and provenance
- Architecture: `PP-OCRv6_medium_rec`.
- Public parameter count: `35,578,883`.
- Stage-8 recognition mix: 2,198,483 rows drawn from Persian handwriting, printed OCR, and native/form replay.
- Best held-out normalized edit similarity: handwriting `0.9671727`, printed `0.9071054`.
- Eval-linked checkpoint selection was active. The schedule ended while the selected checkpoint was still improving; no divergence stop fired.
- Medium training used hard-label CTC and serves as the distillation teacher for the smaller siblings.
- Frozen benchmark revision: `fefe25215114da8ac0ea21ff5e8f97204b2762d5`.
- Frozen detection SHA-256: `836044bd3d6dc4c2a66cb8a301e5bf86e48e305a7463ec92eec98f656f46e132`.
- Internal source release: `stage8-gate42-20260726`.
## Input and output contract
The recognizer works best on horizontal, content-tight line crops. Its exported `inference.yml` is authoritative for resize/padding and the 161-symbol dictionary. The wrappers convert PaddleOCR visual-order Arabic output to logical Persian order while preserving Latin/numeric runs.
The full-page CLI emits JSON with assembled text plus every recognized line, box, confidence score, and raw visual-order output. For complex forms, grids, multi-column layouts, or exact benchmark reproduction, use the preserved specialized pipeline and layout stages rather than assuming generic detection has perfect reading order.
## Limitations
- Persian-focused; other languages were not preserved or benchmarked.
- Handwriting remains harder than printed text, especially for the smaller siblings.
- Generic page detection may need layout-specific reading-order logic for forms and multi-column documents.
- Confidence scores are model scores, not calibrated probabilities.
- The benchmark measures the bundled family pipeline and should not be interpreted as universal document accuracy.
## فارسی
Bina 0.2 Rizeh عضو **متوسط** خانواده OCR فارسی Bina 0.2 است و 35.579 میلیون پارامتر دارد. این مخزن فقط یک checkpoint نیست: مدل inference، تنظیمات و واژهنامه کاراکتری، checkpoint آموزش، آشکارساز صفحه، اسکریپت خط و صفحه کامل، نتایج دقیق benchmark و checksumها همگی داخل مخزن هستند.
اجرای سریع CPU:
```bash
python -m pip install "paddlepaddle>=3.2,<4" "paddleocr>=3.3,<4"
python bina_page_ocr.py page.jpg --device cpu --output result.json
```
برای GPU نسخه PaddlePaddle سازگار با CUDA را نصب کنید و `--device gpu:0` بدهید. برای یک خط بریدهشده از `bina_text_recognition.py` استفاده کنید. خروجی فارسی به ترتیب منطقی خواندن برگردانده میشود. جزئیات بیشتر در [`QUICKSTART.md`](./QUICKSTART.md) آمده است.
## License
Apache-2.0. The bundled detector is the official Apache-2.0 `PaddlePaddle/PP-OCRv6_medium_det` artifact pinned in `detector/SOURCE.json`.
|