Ottoman Turkish HTR Leaderboard (OttomanNLP Live Benchmark v1.0)

[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).

Model types
Select columns to show 📊 View Raw Results Repo
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

📜 Osmanlı Türkçesi Transkripsiyon Benchmarkı Hakkında (About the Benchmark)

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 Katmanlar ve Satır Dağılımı (2.075 Satır)

# Paleografik Katman (Yazı Türü × Tür) Test Satır Sayısı
1Divânî × Mühimme250
2Divânî × Ahkâm250
3Divânî × Ruûs250
4Divânî × Nâme-i Hümâyûn28
5Rik'a × Şer'iyye (XVI. yy)181
6Rik'a × Şer'iyye (XX. yy)250
7Ta'lîk × Şer'iyye (XVII. yy)250
8Rik'a × Nüfus250
9Nesih × Yazma116
10Ta'lîk × Yazma (XIX. yy)250
TOPLAM BENCHMARK TEST SETİ (DOĞRULANMIŞ TEKİL SATIRLAR) 2.075

🚀 Step 1: Download the Anonymized Unlabeled Test Images & Template

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.

🖼️ 1. 🖼️ 1. Test Görüntülerini İndir (2.075 .png — 164 MB, No .txt) 📥 2. Download Submission Template (submission_template.jsonl — 2,075 IDs) 📂 View Dataset Repo on Hugging Face

🐍 Step 2: Generate & Submit Your Predictions via Python

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.")