Image-Text-to-Text
Transformers
Safetensors
PEFT
Polish
vision-encoder-decoder
trocr
ocr
polish
historical
typewriter
qlora
mixed-data
Instructions to use PiotrSty/trocr-pl-mixed-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use PiotrSty/trocr-pl-mixed-v1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="PiotrSty/trocr-pl-mixed-v1")# Load model directly from transformers import AutoTokenizer, AutoModelForMultimodalLM tokenizer = AutoTokenizer.from_pretrained("PiotrSty/trocr-pl-mixed-v1") model = AutoModelForMultimodalLM.from_pretrained("PiotrSty/trocr-pl-mixed-v1", device_map="auto") - PEFT
How to use PiotrSty/trocr-pl-mixed-v1 with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use PiotrSty/trocr-pl-mixed-v1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "PiotrSty/trocr-pl-mixed-v1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PiotrSty/trocr-pl-mixed-v1", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/PiotrSty/trocr-pl-mixed-v1
- SGLang
How to use PiotrSty/trocr-pl-mixed-v1 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 "PiotrSty/trocr-pl-mixed-v1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PiotrSty/trocr-pl-mixed-v1", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'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 "PiotrSty/trocr-pl-mixed-v1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PiotrSty/trocr-pl-mixed-v1", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use PiotrSty/trocr-pl-mixed-v1 with Docker Model Runner:
docker model run hf.co/PiotrSty/trocr-pl-mixed-v1
PiotrSty/trocr-pl-mixed-v1 (experimental)
Fine-tune of PiotrSty/trocr-pl-base on synthetic Polish print + real EHRI typewritten Polish lines (CC-BY 4.0, ehri-pl-lines).
Training
- Base: PiotrSty/trocr-pl-base
- Method: QLoRA, decoder attn q/k/v/out_proj, rank 16, alpha 32
- Train: 2000 synthetic + 349 real EHRI lines (3 docs)
- Val: 38 EHRI lines (held-out doc ZIH3010905)
- Epochs: 5, batch 8, lr 2e-4, T4 x2
- Best checkpoint: checkpoint-735 (val CER 0.3351)
- Document-level split, no line leakage.
Evaluation on frozen held-out sets
| Model | EHRI test (81, typewriter) | real-lines-v1 (75, print) |
|---|---|---|
| trocr-pl-base (run2) | CER 47.30% / WER 90.82% | CER 11.11% / WER 35.84% |
| trocr-pl-mixed-v1 (run3) | CER 33.95% / WER 85.69% | CER 7.09% / WER 29.44% |
Mixed fine-tuning improved BOTH domains (typewriter -28% CER, print -36% CER).
Limitations
- Typewriter WER still ~86%; word-level weak.
- Only 349 real typewritten lines; more data should help.
- Page segmentation on faded typewriter is unreliable; this is a line recognizer.
- Do NOT use as drop-in replacement for trocr-pl-base without your own eval.
Provenance
See run.json, selection.json, best_metrics.json in this repo. Source: https://github.com/PiotrStyla/OCR_engine (commit 7065e6a) EHRI dataset: https://huggingface.co/datasets/PiotrSty/ehri-pl-lines
- Downloads last month
- 27