Downloads · 30 days
9
30% of all-time downloads
NeuralMetrics/RolmOCR
RolmOCR is a image-text-to-text model from NeuralMetrics. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
Downloads · 30 days
9
30% of all-time downloads
All-time downloads
30
Public
Parameters
8.3B
16.6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors16.6 GB · 100%
From the Hugging Face model README
Reducto's RolmOCR builds on the olmOCR approach with a Qwen2.5-VL backbone, trading some setup complexity for speed and lower memory use - no PDF metadata prompting required.
We use it for: throughput-sensitive batch OCR - head-to-head comparison against olmOCR on our own document mix.
Attribution
This is an unmodified fork of
reducto/RolmOCR, created by the Qwen team. All weights, files and behaviour are identical to upstream — we rehost it so our experiments stay reproducible and version-pinned. The original license and all credit remain with the Qwen team. If you want the canonical model, please use the original.
Earlier this year, the Allen Institute for AI released olmOCR, an open-source tool that performs document OCR using the Qwen2-VL-7B vision language model (VLM). We were excited to see a high-quality, openly available approach to parsing PDFs and other complex documents — and curious to explore what else might be possible using newer foundation models and some lightweight optimizations.
The result is RolmOCR, a drop-in alternative to olmOCR that’s faster, uses less memory, and still performs well on a variety of document types. We're releasing it under Apache 2.0 for anyone to try out, explore, or build on.
This model is a fine-tuned version of Qwen/Qwen2.5-VL-7B-Instruct on the full allenai/olmOCR-mix-0225 dataset.
We made three notable changes:
New Base Model: We swapped in a more recent version of the existing model (Qwen2.5-VL-7B) as the foundation.
No Metadata inputs: Unlike the original, we don’t use metadata extracted from PDFs. This significantly reduces prompt length, which in turn lowers both processing time and VRAM usage — without hurting accuracy in most cases.
Rotation of training data: About 15% of the training data was rotated to enhance robustness to off-angle documents. We otherwise use the same training set.
Host your model with vLLM:
export VLLM_USE_V1=1
vllm serve reducto/RolmOCR
Call the model via openai compatible server:
# HOST YOUR OPENAI COMPATIBLE API WITH THE FOLLOWING COMMAND in VLLM:
# export VLLM_USE_V1=1
# vllm serve reducto/RolmOCR
from openai import OpenAI
import base64
client = OpenAI(api_key="123", base_url="http://localhost:8000/v1")
model = "reducto/RolmOCR-7b"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def ocr_page_with_rolm(img_base64):
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{img_base64}"},
},
{
"type": "text",
"text": "Return the plain text representation of this document as if you were reading it naturally.\n",
},
],
}
],
temperature=0.2,
max_tokens=4096
)
return response.choices[0].message.content
test_img_path = "path/to/image.png"
img_base64 = encode_image(test_img_path)
print(ocr_page_with_rolm(img_base64))
@misc{RolmOCR,
author = {Reducto AI},
title = {RolmOCR: A Faster, Lighter Open Source OCR Model},
year = {2025},
}
</details>