[TR] Canlı Osmanlı Türkçesi Transkripsiyon Liderlik Tablosu'na hoş geldiniz! Açık ağırlıklı görsel dil modellerini (VLM) ve ticari yapay zeka modellerini, 15-20. yüzyıllar arasındaki el yazması arşiv defterleri üzerinde tarafsız biçimde karşılaştırır.
[EN] Welcome to the Ottoman Turkish HTR Benchmark. Benchmark your open-weight or commercial Vision-Language Models across unseen archival registers across historical registers.
Önemli Kapsam / Benchmark Scope:
[TR] Bu benchmark, Arap alfabeli el yazısı metinleri dijital Arap harflerine döken standart bir OCR testi değildir. Arap harfli el yazması Osmanlı Türkçesi belgeleri doğrudan Latin harfli bilimsel transkripsiyonlu Osmanlı Türkçesi'ne (Eski Türkçe) çevirme kalitesini ve başarısını ölçen tarafsız bir değerlendirme platformudur.
[EN] This benchmark is not an Arabic OCR task. It evaluates the direct transcription of historical Arabic-script Ottoman Turkish manuscripts into scholarly Latin-script Ottoman Turkish across 9 paleographic layers (2,075 lines).
| Rank | T | Model | Organization | Overall CER (%) ↓ | Overall WER (%) ↓ | Exact Match (%) ↑ | ChrF++ ↑ | Divânî × Mühimme | Divânî × Ahkâm | Divânî × Ruûs | Divânî × Nâme | Rik'a × Şer'iyye (XVI) | Rik'a × Şer'iyye (XX) | Ta'lik × Şer'iyye (XVII) | Rik'a × Nüfus | Nesih × Yazma | Ta'lik × Yazma (XIX) | Submitted |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | kranidiotis/ottoman-ocr-qwen2.5-vl-7b (8-bit) | kranidiotis | 90.15 | 101.19 | 0.00 | 7.46 | 87.95 | 87.91 | 87.95 | 93.73 | 91.20 | 93.61 | 85.89 | 96.48 | 97.96 | 86.49 | 2026-11-07 |
Benchmark, eğitim setlerine hiç girmemiş 10 farklı arşiv defterinden seçilen, vLLM GPTQ Master Modeli ile tek tek doğrulanmış 2.075 adet tekil satır görüntüsünden oluşur (defter başına azami 250 satır).
Önemli Kapsam / Benchmark Scope:
[TR] Bu benchmark, Arap alfabeli el yazısı metinleri dijital Arap harflerine döken standart bir OCR testi değildir. Arap harfli el yazması Osmanlı Türkçesi belgeleri doğrudan Latin harfli bilimsel transkripsiyonlu Osmanlı Türkçesi'ne (Eski Türkçe) çevirme kalitesini ve başarısını ölçen tarafsız bir değerlendirme platformudur.
[EN] This benchmark is not an Arabic OCR task. It evaluates the direct transcription of historical Arabic-script Ottoman Turkish manuscripts into scholarly Latin-script Ottoman Turkish across 9 paleographic layers.
| # | Paleografik Katman (Yazı Türü × Tür) | Test Satır Sayısı |
|---|---|---|
| 1 | Divânî × Mühimme | 250 |
| 2 | Divânî × Ahkâm | 250 |
| 3 | Divânî × Ruûs | 250 |
| 4 | Divânî × Nâme-i Hümâyûn | 28 |
| 5 | Rik'a × Şer'iyye (XVI. yy) | 181 |
| 6 | Rik'a × Şer'iyye (XX. yy) | 250 |
| 7 | Ta'lîk × Şer'iyye (XVII. yy) | 250 |
| 8 | Rik'a × Nüfus | 250 |
| 9 | Nesih × Yazma | 116 |
| 10 | Ta'lîk × Yazma (XIX. yy) | 250 |
| TOPLAM BENCHMARK TEST SETİ (DOĞRULANMIŞ TEKİL SATIRLAR) | 2.075 | |
Both open-weight academic models and closed-weight commercial APIs can be evaluated without sharing model weights. Download the 2,075 anonymized single-line images (images/ott_<hash>.png) and fill in the "prediction" field for each item in submission_template.jsonl.
Run your model on the 2,075 images to produce my_predictions.jsonl, then upload it directly to the evaluation queue using huggingface_hub:
import json, tarfile, uuid
from datetime import datetime, timezone
from huggingface_hub import hf_hub_download, HfApi
# 1. Download & extract the 2,075 anonymized single-line test images
tar_path = hf_hub_download("OttomanNLP/benchmark-test-images", "benchmark_test_images_unlabeled.tar.gz", repo_type="dataset")
tpl_path = hf_hub_download("OttomanNLP/benchmark-test-images", "submission_template.jsonl", repo_type="dataset")
with tarfile.open(tar_path, "r:gz") as tar:
tar.extractall("test_images")
# 2. Run your model (open-weight VLM/HTR or commercial API) on each image
with open(tpl_path, "r", encoding="utf-8") as fin, open("my_predictions.jsonl", "w", encoding="utf-8") as fout:
for line in fin:
item = json.loads(line)
img_file = f"test_images/{item['image_path']}"
item["prediction"] = run_my_model(img_file) # <-- Your model's transcription output
fout.write(json.dumps(item, ensure_ascii=False) + "\n")
# 3. Submit predictions & metadata to the Private Evaluator queue
api = HfApi(token="hf_YOUR_TOKEN")
sub_id = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") + "_" + uuid.uuid4().hex[:6]
meta = {
"submission_id": sub_id,
"model": "YourOrg/Your-Model-Name",
"organization": "Your Organization",
"model_type": "fine-tuned", # "pretrained", "fine-tuned", "instruction-tuned", or "commercial"
"submitted_by": "your_hf_username",
"submitted_at": datetime.now(timezone.utc).isoformat()
}
api.upload_file(path_or_fileobj="my_predictions.jsonl", path_in_repo=f"predictions/{sub_id}.jsonl", repo_id="OttomanNLP/benchmark-submissions", repo_type="dataset")
api.upload_file(path_or_fileobj=json.dumps(meta, indent=2).encode(), path_in_repo=f"metadata/{sub_id}.json", repo_id="OttomanNLP/benchmark-submissions", repo_type="dataset")
print(f"Submitted {sub_id}! Your score will appear on the Leaderboard within ~60 seconds.")