Ottoman OCR - Qwen2.5-VL-7B Fine-tuned

This model is a fine-tuned version of Qwen/Qwen2.5-VL-7B-Instruct for Ottoman Turkish document OCR and transcription.

Model Description

The model was fine-tuned using LoRA (Low-Rank Adaptation) on a dataset of Ottoman Turkish document images with their Modern Turkish transcriptions. It can transcribe Ottoman Turkish text (written in Arabic script) into Modern Turkish (Latin alphabet).

Training Details

  • Base Model: Qwen2.5-VL-7B-Instruct
  • Training Method: LoRA (r=16, alpha=32)
  • Target Modules: gate_proj, up_proj, q_proj, v_proj, o_proj, down_proj, k_proj
  • Training Data: ~6,871 OCR samples with document images
  • Epochs: 3
  • Learning Rate: 2e-5 (cosine schedule)

Usage

from transformers import AutoProcessor, Qwen2VLForConditionalGeneration
from PIL import Image

# Load model and processor
model = Qwen2VLForConditionalGeneration.from_pretrained(
    "cavos/ottoman-ocr-qwen2.5-vl-7b",
    torch_dtype=torch.bfloat16,
    device_map="auto"
)
processor = AutoProcessor.from_pretrained("cavos/ottoman-ocr-qwen2.5-vl-7b")

# Prepare messages
messages = [
    {
        "role": "system",
        "content": "You are an expert paleographer specializing in Ottoman Turkish documents written in Arabic script. Your task is to transcribe Ottoman Turkish handwritten or printed text lines into Modern Turkish.",
    },
    {
        "role": "user",
        "content": [
            {"type": "image", "image": "path/to/image.png"},
            {"type": "text", "text": "Bu Osmanli Turkcesi metin satirini Modern Turkceye transkribe et."},
        ],
    }
]

# Process and generate
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
from qwen_vl_utils import process_vision_info
image_inputs, _ = process_vision_info(messages)
inputs = processor(text=[text], images=image_inputs, padding=True, return_tensors="pt").to(model.device)

output_ids = model.generate(**inputs, max_new_tokens=512)
output = processor.tokenizer.batch_decode(output_ids[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0]
print(output.strip())

Limitations

This model was trained on a limited dataset and may not generalize well to all types of Ottoman Turkish documents. The training loss plateaued around 5.31, suggesting the model may need additional training or data for better performance.

License

Apache 2.0

Downloads last month
65
Safetensors
Model size
8B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kranidiotis/ottoman-ocr-qwen2.5-vl-7b

Finetuned
(1105)
this model
Quantizations
1 model