Instructions to use kranidiotis/ottoman-ocr-qwen2.5-vl-7b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use kranidiotis/ottoman-ocr-qwen2.5-vl-7b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="kranidiotis/ottoman-ocr-qwen2.5-vl-7b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("kranidiotis/ottoman-ocr-qwen2.5-vl-7b") model = AutoModelForMultimodalLM.from_pretrained("kranidiotis/ottoman-ocr-qwen2.5-vl-7b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use kranidiotis/ottoman-ocr-qwen2.5-vl-7b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "kranidiotis/ottoman-ocr-qwen2.5-vl-7b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kranidiotis/ottoman-ocr-qwen2.5-vl-7b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/kranidiotis/ottoman-ocr-qwen2.5-vl-7b
- SGLang
How to use kranidiotis/ottoman-ocr-qwen2.5-vl-7b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "kranidiotis/ottoman-ocr-qwen2.5-vl-7b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kranidiotis/ottoman-ocr-qwen2.5-vl-7b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "kranidiotis/ottoman-ocr-qwen2.5-vl-7b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kranidiotis/ottoman-ocr-qwen2.5-vl-7b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use kranidiotis/ottoman-ocr-qwen2.5-vl-7b with Docker Model Runner:
docker model run hf.co/kranidiotis/ottoman-ocr-qwen2.5-vl-7b
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