Skip to main content

Chandra

Chandra is a highly accurate OCR model that converts images and PDFs into structured HTML/Markdown/JSON while preserving layout information.

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
  • Two inference modes: local (HuggingFace) and remote (vLLM server)

Hosted API

  • We have a hosted API for Chandra here, which also includes other accuracy improvements and document workflows.
  • There is a free playground here if you want to try it out without installing.

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

These are overall scores on the olmocr bench.

See full scores below.

Examples

Type Name Link
Tables Water Damage Form View
Tables 10K Filing View
Forms Handwritten Form View
Forms Lease Agreement View
Handwriting Doctor Note View
Handwriting Math Homework View
Books Geography Textbook View
Books Exercise Problems View
Math Attention Diagram View
Math Worksheet View
Math EGA Page View
Newspapers New York Times View
Newspapers LA Times View
Other Transcript View
Other Flowchart View

Community

Discord is where we discuss future development.

Installation

Package

pip install chandra-ocr

If you're going to use the huggingface method, we also recommend installing flash attention.

From Source

git clone https://github.com/datalab-to/chandra.git
cd chandra
uv sync
source .venv/bin/activate

Usage

CLI

Process single files or entire directories:

# Single file, with vllm server (see below for how to launch vllm)
chandra input.pdf ./output --method vllm

# Process all files in a directory with local model
chandra ./documents ./output --method hf

CLI Options:

  • --method [hf|vllm]: Inference method (default: vllm)
  • --page-range TEXT: Page range for PDFs (e.g., "1-5,7,9-12")
  • --max-output-tokens INTEGER: Max tokens per page
  • --max-workers INTEGER: Parallel workers for vLLM
  • --include-images/--no-images: Extract and save images (default: include)
  • --include-headers-footers/--no-headers-footers: Include page headers/footers (default: exclude)
  • --batch-size INTEGER: Pages per batch (default: 1)

Output Structure:

Each processed file creates a subdirectory with:

  • <filename>.md - Markdown output
  • <filename>.html - HTML output
  • <filename>_metadata.json - Metadata (page info, token count, etc.)
  • images/ - Extracted images from the document

Streamlit Web App

Launch the interactive demo for single-page processing:

chandra_app

vLLM Server (Optional)

For production deployments or batch processing, use the vLLM server:

chandra_vllm

This launches a Docker container with optimized inference settings. Configure via environment variables:

  • VLLM_API_BASE: Server URL (default: http://localhost:8000/v1)
  • VLLM_MODEL_NAME: Model name for the server (default: chandra)
  • VLLM_GPUS: GPU device IDs (default: 0)

You can also start your own vllm server with the datalab-to/chandra model.

Configuration

Settings can be configured via environment variables or a local.env file:

# Model settings
MODEL_CHECKPOINT=datalab-to/chandra
MAX_OUTPUT_TOKENS=8192

# vLLM settings
VLLM_API_BASE=http://localhost:8000/v1
VLLM_MODEL_NAME=chandra
VLLM_GPUS=0

Commercial usage

This code is Apache 2.0, and our model weights use a modified OpenRAIL-M license (free for research, personal use, and startups under $2M funding/revenue, cannot be used competitively with our API). To remove the OpenRAIL license requirements, or for broader commercial licensing, visit our pricing page here.

Benchmark table

Model ArXiv Old Scans Math Tables Old Scans Headers and Footers Multi column Long tiny text Base Overall Source
Datalab Chandra v0.1.0 82.2 80.3 88.0 50.4 90.8 81.2 92.3 99.9 83.1 ± 0.9 Own benchmarks
Datalab Marker v1.10.0 83.8 69.7 74.8 32.3 86.6 79.4 85.7 99.6 76.5 ± 1.0 Own benchmarks
Mistral OCR API 77.2 67.5 60.6 29.3 93.6 71.3 77.1 99.4 72.0 ± 1.1 olmocr repo
Deepseek OCR 75.2 72.3 79.7 33.3 96.1 66.7 80.1 99.7 75.4 ± 1.0 Own benchmarks
GPT-4o (Anchored) 53.5 74.5 70.0 40.7 93.8 69.3 60.6 96.8 69.9 ± 1.1 olmocr repo
Gemini Flash 2 (Anchored) 54.5 56.1 72.1 34.2 64.7 61.5 71.5 95.6 63.8 ± 1.2 olmocr repo
Qwen 3 VL 8B 70.2 75.1 45.6 37.5 89.1 62.1 43.0 94.3 64.6 ± 1.1 Own benchmarks
olmOCR v0.3.0 78.6 79.9 72.9 43.9 95.1 77.3 81.2 98.9 78.5 ± 1.1 olmocr repo
dots.ocr 82.1 64.2 88.3 40.9 94.1 82.4 81.2 99.5 79.1 ± 1.0 dots.ocr repo

Credits

Thank you to the following open source projects:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chandra_ocr-0.1.7.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chandra_ocr-0.1.7-py3-none-any.whl (27.1 kB view details)

Uploaded Python 3

File details

Details for the file chandra_ocr-0.1.7.tar.gz.

File metadata

  • Download URL: chandra_ocr-0.1.7.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.22

File hashes

Hashes for chandra_ocr-0.1.7.tar.gz
Algorithm Hash digest
SHA256 2b10de3d1c72cd27a95efb4940f11004626629aec7fde3835e7fe7821829ea86
MD5 7d99c166691456a17941904eec984125
BLAKE2b-256 443d6af101ab75e602cb4a6b38a83766b25a4c363aae798bd0eb25d5434b29ad

See more details on using hashes here.

File details

Details for the file chandra_ocr-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for chandra_ocr-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0d48b4da3ad1dffd386d9c1c837f1cc43f55d3c32b2556d2c9ac2ef468941062
MD5 71f5e6ccc3eda91dabadbccb36a80ae4
BLAKE2b-256 df83480a43f4840567fe3e0bd357562e75714e1d8f62e788ed03cb72862645eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page