CHURRO is an OCR toolkit for historical document transcription, built to make handwritten and printed sources readable at high accuracy and lower cost.
74
stars
139
commits
Python
primary language
Apr 18, 2026
updated
🤗 Model •
🗂️ Dataset •
📄 Paper
📚 Docs •
🏆 Leaderboard •
Churro is the fastest way to turn hard-to-read historical scans into reliable text. It gives researchers, libraries, archives, and product teams a unified OCR toolkit for handwritten and printed sources, combining high accuracy, low operating cost, and a clean Python API and CLI workflow.
We provide first-party support for Churro VLM, the best OCR model for historical documents.
Churro also includes built-in profiles, templates, and post-processing for many other models and integrations, including:
Chandra OCRDeepSeek OCRDots OCRMinerUInfinity ParserPaddleOCR VLLFM VLPython 3.12+ and uv are required.
uv tool install churro-ocr
churro-ocr install hf
churro-ocr transcribe --image scan.png --backend hf --model stanford-oval/churro-3B
For more in-depth information, see the Getting Started guide.
Cost vs. accuracy: Churro (3B) achieves higher accuracy than much larger commercial and open-weight VLMs while being substantially cheaper.
The following are pages from the CHURRO dev set, randomly picked from the subset where Churro outperforms Gemini 2.5 Pro on the main metric, Normalized Levenshtein Similarity (NLS).
Arabic handwriting Churro 93.9 vs Gemini 92.3 NLS |
Bangla Churro 91.4 vs Gemini 84.3 NLS |
Bulgarian Churro 99.8 vs Gemini 99.2 NLS |
Catalan handwriting Churro 95.2 vs Gemini 94.1 NLS |
Chinese handwriting Churro 100.0 vs Gemini 95.0 NLS |
Czech Churro 95.9 vs Gemini 95.3 NLS |
Dutch Churro 98.7 vs Gemini 98.0 NLS |
English handwriting Churro 99.8 vs Gemini 99.4 NLS |
Finnish Churro 99.6 vs Gemini 99.5 NLS |
French handwriting Churro 92.6 vs Gemini 90.6 NLS |
German handwriting Churro 81.4 vs Gemini 45.6 NLS |
Greek handwriting Churro 81.2 vs Gemini 71.2 NLS |
Hebrew handwriting Churro 90.0 vs Gemini 21.6 NLS |
Hindi Churro 98.1 vs Gemini 88.0 NLS |
Italian handwriting Churro 93.3 vs Gemini 88.3 NLS |
Japanese handwriting Churro 68.9 vs Gemini 13.8 NLS |
Khmer handwriting Churro 27.7 vs Gemini 23.3 NLS |
Latin handwriting Churro 75.1 vs Gemini 58.3 NLS |
Norwegian handwriting Churro 69.7 vs Gemini 65.3 NLS |
Persian handwriting Churro 77.6 vs Gemini 74.6 NLS |
Polish Churro 84.4 vs Gemini 0.0 NLS |
Portuguese handwriting Churro 52.0 vs Gemini 51.6 NLS |
Romanian Churro 90.9 vs Gemini 45.7 NLS |
Sanskrit Churro 97.5 vs Gemini 97.0 NLS |
Slovenian Churro 98.7 vs Gemini 98.5 NLS |
Spanish Churro 97.9 vs Gemini 78.5 NLS |
Swedish handwriting Churro 87.1 vs Gemini 85.1 NLS |
Turkish handwriting Churro 74.1 vs Gemini 42.9 NLS |
Vietnamese handwriting Churro 87.6 vs Gemini 86.0 NLS |
If you use CHURRO or CHURRO-DS, please cite:
@inproceedings{semnani2025churro,
title = {{CHURRO}: Making History Readable with an Open-Weight Large Vision-Language Model for High-Accuracy, Low-Cost Historical Text Recognition},
author = {Semnani, Sina J. and Zhang, Han and He, Xinyan and Tekg{"u}rler, Merve and Lam, Monica S.},
booktitle = {Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing (EMNLP 2025)},
year = {2025}
}
139 commits
Python
100.0%
CHURRO is an OCR toolkit for historical document transcription, built to make handwritten and printed sources readable at high accuracy and lower cost.
74
stars
139
commits
Python
primary language
Apr 18, 2026
updated
🤗 Model •
🗂️ Dataset •
📄 Paper
📚 Docs •
🏆 Leaderboard •
Churro is the fastest way to turn hard-to-read historical scans into reliable text. It gives researchers, libraries, archives, and product teams a unified OCR toolkit for handwritten and printed sources, combining high accuracy, low operating cost, and a clean Python API and CLI workflow.
We provide first-party support for Churro VLM, the best OCR model for historical documents.
Churro also includes built-in profiles, templates, and post-processing for many other models and integrations, including:
Chandra OCRDeepSeek OCRDots OCRMinerUInfinity ParserPaddleOCR VLLFM VLPython 3.12+ and uv are required.
uv tool install churro-ocr
churro-ocr install hf
churro-ocr transcribe --image scan.png --backend hf --model stanford-oval/churro-3B
For more in-depth information, see the Getting Started guide.
Cost vs. accuracy: Churro (3B) achieves higher accuracy than much larger commercial and open-weight VLMs while being substantially cheaper.
The following are pages from the CHURRO dev set, randomly picked from the subset where Churro outperforms Gemini 2.5 Pro on the main metric, Normalized Levenshtein Similarity (NLS).
Arabic handwriting Churro 93.9 vs Gemini 92.3 NLS |
Bangla Churro 91.4 vs Gemini 84.3 NLS |
Bulgarian Churro 99.8 vs Gemini 99.2 NLS |
Catalan handwriting Churro 95.2 vs Gemini 94.1 NLS |
Chinese handwriting Churro 100.0 vs Gemini 95.0 NLS |
Czech Churro 95.9 vs Gemini 95.3 NLS |
Dutch Churro 98.7 vs Gemini 98.0 NLS |
English handwriting Churro 99.8 vs Gemini 99.4 NLS |
Finnish Churro 99.6 vs Gemini 99.5 NLS |
French handwriting Churro 92.6 vs Gemini 90.6 NLS |
German handwriting Churro 81.4 vs Gemini 45.6 NLS |
Greek handwriting Churro 81.2 vs Gemini 71.2 NLS |
Hebrew handwriting Churro 90.0 vs Gemini 21.6 NLS |
Hindi Churro 98.1 vs Gemini 88.0 NLS |
Italian handwriting Churro 93.3 vs Gemini 88.3 NLS |
Japanese handwriting Churro 68.9 vs Gemini 13.8 NLS |
Khmer handwriting Churro 27.7 vs Gemini 23.3 NLS |
Latin handwriting Churro 75.1 vs Gemini 58.3 NLS |
Norwegian handwriting Churro 69.7 vs Gemini 65.3 NLS |
Persian handwriting Churro 77.6 vs Gemini 74.6 NLS |
Polish Churro 84.4 vs Gemini 0.0 NLS |
Portuguese handwriting Churro 52.0 vs Gemini 51.6 NLS |
Romanian Churro 90.9 vs Gemini 45.7 NLS |
Sanskrit Churro 97.5 vs Gemini 97.0 NLS |
Slovenian Churro 98.7 vs Gemini 98.5 NLS |
Spanish Churro 97.9 vs Gemini 78.5 NLS |
Swedish handwriting Churro 87.1 vs Gemini 85.1 NLS |
Turkish handwriting Churro 74.1 vs Gemini 42.9 NLS |
Vietnamese handwriting Churro 87.6 vs Gemini 86.0 NLS |
If you use CHURRO or CHURRO-DS, please cite:
@inproceedings{semnani2025churro,
title = {{CHURRO}: Making History Readable with an Open-Weight Large Vision-Language Model for High-Accuracy, Low-Cost Historical Text Recognition},
author = {Semnani, Sina J. and Zhang, Han and He, Xinyan and Tekg{"u}rler, Merve and Lam, Monica S.},
booktitle = {Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing (EMNLP 2025)},
year = {2025}
}
139 commits
Python
100.0%