Image-Text-to-Text
Transformers
Safetensors
GGUF
vision
ocr
text-extraction
document-ai
trl
lora
conversational
Instructions to use kiel2/Kiel-2-OCR with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use kiel2/Kiel-2-OCR with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="kiel2/Kiel-2-OCR") 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)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("kiel2/Kiel-2-OCR", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use kiel2/Kiel-2-OCR with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf kiel2/Kiel-2-OCR:Q4_K_M # Run inference directly in the terminal: llama cli -hf kiel2/Kiel-2-OCR:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf kiel2/Kiel-2-OCR:Q4_K_M # Run inference directly in the terminal: llama cli -hf kiel2/Kiel-2-OCR:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf kiel2/Kiel-2-OCR:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf kiel2/Kiel-2-OCR:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf kiel2/Kiel-2-OCR:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf kiel2/Kiel-2-OCR:Q4_K_M
Use Docker
docker model run hf.co/kiel2/Kiel-2-OCR:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use kiel2/Kiel-2-OCR with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "kiel2/Kiel-2-OCR" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kiel2/Kiel-2-OCR", "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/kiel2/Kiel-2-OCR:Q4_K_M
- SGLang
How to use kiel2/Kiel-2-OCR 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 "kiel2/Kiel-2-OCR" \ --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": "kiel2/Kiel-2-OCR", "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 "kiel2/Kiel-2-OCR" \ --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": "kiel2/Kiel-2-OCR", "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" } } ] } ] }' - Ollama
How to use kiel2/Kiel-2-OCR with Ollama:
ollama run hf.co/kiel2/Kiel-2-OCR:Q4_K_M
- Unsloth Desktop
- Docker Model Runner
How to use kiel2/Kiel-2-OCR with Docker Model Runner:
docker model run hf.co/kiel2/Kiel-2-OCR:Q4_K_M
- Lemonade
How to use kiel2/Kiel-2-OCR with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull kiel2/Kiel-2-OCR:Q4_K_M
Run and chat with the model
lemonade run user.Kiel-2-OCR-Q4_K_M
List all available models
lemonade list
- Atomic Chat
Kiel-2-OCR
Kiel-2-OCR is a fine-tuned Vision-Language Model (VLM) designed for high-precision document parsing, multi-lingual OCR, table extraction, and complex visual text recognition. It is built by fine-tuning the powerhouse vision architecture Qwen/Qwen2.5-VL-3B-Instruct using low-rank adapters (LoRA) via Hugging Face's TRL framework.
Model Details
- Developed by: KielTech
- Model Type: Vision-Language Model (OCR & Document AI)
- Base Model: Qwen/Qwen2.5-VL-3B-Instruct
- Language(s): Multi-lingual (English and supported Qwen languages)
- License: Apache 2.0
- Fine-tuning Method: Parameter-Efficient Fine-Tuning (PEFT) / LoRA
- Hugging Face Hub: kiel2/Kiel-2-OCR
Intended Uses & Limitations
Intended Uses
- Automated text extraction from structured and unstructured documents (PDF screenshots, receipts, invoices, forms).
- Reading complex layout structures, handwritten notes, and dense text blocks.
- Table understanding and key-value data extraction.
Limitations
- The model inherits the native constraints of the Qwen2.5-VL architecture.
- Performance on highly dense technical schematics or low-resolution text depends heavily on the input resolution configured during inference.
How to Get Started with the Model
You can load and run Kiel-2-OCR directly using Hugging Face transformers:
import torch
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
from PIL import Image
import requests
MODEL_ID = "kiel2/Kiel-2-OCR"
print("Loading Kiel-2-OCR processor and model...")
processor = AutoProcessor.from_pretrained(MODEL_ID, trust_remote_code=True)
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
MODEL_ID,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
model.eval()
# Prepare an image containing text
image_url = "[https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg)"
image = Image.open(requests.get(image_url, stream=True).raw)
conversation = [
{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": "Extract all readable text from this image accurately."},
],
}
]
# Apply chat template
text_prompt = processor.apply_chat_template(
conversation, tokenize=False, add_generation_prompt=True
)
# Process inputs
inputs = processor(
text=[text_prompt],
images=[image],
padding=True,
return_tensors="pt"
).to(model.device)
# Generate response
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=512)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)
]
response = processor.batch_decode(
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0]
print("Extracted Text:\n", response)
- Downloads last month
- 57
Hardware compatibility
Log In to add your hardware
4-bit
Model tree for kiel2/Kiel-2-OCR
Base model
Qwen/Qwen2.5-VL-3B-Instruct