Model reference · open weights

chandra

LLMs datalab-to Vision + text 1 build Open weights 17k dl/mo

chandra is an open-weight language model from datalab-to. chandra (BF16) weighs 17.5 GB; the smallest configuration that runs it is 2× RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • Chandra is an 8.8B parameter image-text-to-text model developed by datalab-to for optical character recognition.
  • It extracts text from images and PDFs into markdown, HTML, or JSON while preserving layout information, with support for over 40 languages.
  • The model features a 262144 token context length and is released under the openrail licence.

Summary of the datalab-to/chandra model card, 2026-10-01

What it is

Released bydatalab-to
Released2025-10-21
Parameters8.8B
VRAM17.5 GB for the weights

What it runs on

Memory and cards for chandra (BF16)

17.5 GBweights, file size
147 MBcache per 1K tokens
2.0 GBruntime overhead, at least
262,144 tokenscontext max
CardRequests at onceContext maxMemory
8K each32K each
RTX 3060 12 GB … RTX 4060 Ti 16 GB
2 smaller cards
RTX 3090 24 GB325K23.4 GB
RTX 4090 24 GB325K23.4 GB
RTX 5090 32 GB9275K31.0 GB
L40S 48 GB205161K44.0 GB
A100 80 GB4812all 256K78.2 GB
H100 80 GB4411all 256K78.1 GB
RTX PRO 6000 Blackwell 96 GB5714all 256K93.8 GB
DGX Spark (GB10) 128 GB unified6917all 256K107 GB
H200 141 GB9423all 256K138 GB
B200 180 GB12531all 256K176 GB
2× RTX 3060 12 GB
tensor parallel
110K11.6 GB a card
2× RTX 4060 Ti 16 GB
tensor parallel
7160K15.4 GB a card
2× RTX 4090 24 GB
tensor parallel
205166K23.4 GB a card
2× RTX 3090 24 GB
tensor parallel
205166K23.4 GB a card
Memory needed at each load
Requests at once8K tokens each32K tokens each
120.8 GB24.4 GB
525.6 GB43.7 GB
829.2 GB58.2 GB
1638.9 GB96.9 GB
3258.2 GB174 GB
6496.9 GB329 GB

One card, with vLLM's small-card settings.

From the model card

What datalab-to says about chandra

Read the model card

Chandra is an OCR model that outputs markdown, HTML, and JSON. It is highly accurate at extracting text from images and PDFs, while preserving layout information.

You can try Chandra in the free playground here, or at a hosted API here.

Features

  • Convert documents to markdown, html, or json with detailed layout information
  • Good handwriting support
  • Reconstructs forms accurately, including checkboxes
  • Good support for tables, math, and complex layouts
  • Extracts images and diagrams, with captions and structured data
  • Support for 40+ languages

Quickstart

The easiest way to start is with the CLI tools:

pip install chandra-ocr

# With VLLM
chandra_vllm
chandra input.pdf ./output

# With HuggingFace
chandra input.pdf ./output --method hf

# Interactive streamlit app
chandra_app

Benchmarks

We used the olmocr benchmark, which seems to be the most reliable current OCR benchmark in our testing.

ModelArXivOld Scans MathTablesOld ScansHeaders and FootersMulti columnLong tiny textBaseOverallSource
Datalab Chandra v0.1.082.280.388.050.490.881.292.399.983.1 ± 0.9Own benchmarks
Datalab Marker v1.10.083.869.774.832.386.679.485.799.676.5 ± 1.0Own benchmarks
Mistral OCR API77.267.560.629.393.671.377.199.472.0 ± 1.1olmocr repo
Deepseek OCR75.272.379.733.396.166.780.199.775.4 ± 1.0Own benchmarks
GPT-4o (Anchored)53.574.570.040.793.869.360.696.869.9 ± 1.1olmocr repo
Gemini Flash 2 (Anchored)54.556.172.134.264.761.571.595.663.8 ± 1.2olmocr repo
Qwen 3 VL70.275.145.637.589.162.143.094.364.6 ± 1.1Own benchmarks
olmOCR v0.3.078.679.972.943.995.177.381.298.978.5 ± 1.1olmocr repo
dots.ocr82.164.288.340.994.182.481.299.579.1 ± 1.0dots.ocr repo

Examples

TypeNameLink
TablesWater Damage FormView
Tables10K FilingView
FormsHandwritten FormView
FormsLease AgreementView
HandwritingDoctor NoteView
HandwritingMath HomeworkView
BooksGeography TextbookView
BooksExercise ProblemsView
MathAttention DiagramView
MathWorksheetView
MathEGA PageView
NewspapersNew York TimesView
NewspapersLA TimesView
OtherTranscriptView
OtherFlowchartView

Usage

Installation

pip install chandra-ocr

From code


from chandra.model import InferenceManager
from chandra.model.schema import BatchInputItem

# Run chandra_vllm to start a vLLM server first if you pass vllm, else pass hf
# you can also start your own vllm server with the datalab-to/chandra model
manager = InferenceManager(method="vllm")
batch = [
    BatchInputItem(
        image=PIL_IMAGE,
        prompt_type="ocr_layout"
    )
]
result = manager.generate(batch)[0]
print(result.markdown)

With transformers

from transformers import AutoModel, AutoProcessor
from chandra.model.hf import generate_hf
from chandra.model.schema import BatchInputItem
from chandra.output import parse_markdown

model = AutoModel.from_pretrained("datalab-to/chandra").cuda()
model.processor = AutoProcessor.from_pretrained("datalab-to/chandra")

batch = [
    BatchInputItem(
        image=PIL_IMAGE,
        prompt_type="ocr_layout"
    )
]

result = generate_hf(batch, model)[0]
markdown = parse_markdown(result.raw)

Credits

Thank you to the following open source projects:

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms