Karez's picture
Upload folder using huggingface_hub
960dd1b verified
|
Raw
History Blame Contribute Delete
2.29 kB
metadata
language:
  - ar
license: cc-by-nc-4.0
tags:
  - handwritten-text-recognition
  - paragraph-recognition
  - ar
  - densenet
  - transformer
  - pytorch
  - safetensors
datasets:
  - KHATT
metrics:
  - cer
  - wer
pipeline_tag: image-to-text

KHATT-Arabic: DenseNet121-Transformer Paragraph HTR

Model Description

Arabic handwritten paragraph recognition model evaluated on the KHATT dataset for cross-script generalisation accessed through: https://www.kaggle.com/datasets/iraqyomar/khatt-arabic-hand-written-lines/code. Pre-trained on 12,000 synthetic paragraphs combining KHATT Arabic lines with Kurdish lines from DASTNUS, then fine-tuned on 1,193 reconstructed KHATT paragraphs. Achieves CER of 0.1394, surpassing a reimplemented state-of-the-art baseline under identical conditions.

Architecture

  • CNN Backbone: DenseNet-121 (pretrained on ImageNet)
  • Horizontal Upsample: Yes
  • Encoder: 3 Transformer encoder layers
  • Decoder: 6 Transformer decoder layers
  • Attention Heads: 8
  • Hidden Size: 256
  • Feed-Forward Dim: 2048
  • Vocabulary Size: 143
  • Parameters: 22,760,778

Performance on KHATT

Metric Value
CER (greedy) 0.1394
WER (greedy) 0.5075

Input Format

  • Image size: 600 x 1235 pixels
  • Preprocessing: Aspect-ratio-preserving resize, right-aligned on white canvas (RTL)
  • Normalization: ImageNet mean/std

Training

  • Pre-training: 12,000 synthetic paragraph images with curriculum learning
  • Fine-tuning: Real handwritten paragraphs from KHATT
  • Two-stage strategy: Encoder frozen for first 10 epochs during fine-tuning

Usage

from safetensors.torch import load_file
import json

# Load model weights
state_dict = load_file("model.safetensors")

# Load config
with open("config.json", "r") as f:
    config = json.load(f)

# Load vocabulary
with open("vocab.json", "r") as f:
    vocab = json.load(f)

# Load reverse mapping
with open("idx_to_char.json", "r") as f:
    idx_to_char = json.load(f)

Citation

[Citation to be added upon publication]

License

This model is released under CC-BY-NC-4.0 for non-commercial research purposes only.