datalab-to/chandraPublic

OCR model that handles complex tables, forms, handwriting with full layout.

AI summary: A state-of-the-art OCR model designed to handle complex tables, forms, and handwriting with full layout understanding.

Stars
12K
+69 today
Forks
1.2K
Watchers
86
Open issues
44
Open PRs
13
Contributors
~5
Commits
83
Branches
7

PythonApache-2.0Created Oct 8, 2025Last push 1mo agoLatest release v0.2.0+133 stars this week+173 this month

Star history

since Oct 19, 2025
05K10KOct 2025Jan 2026Apr 2026Aug 2026
12K stars as of Aug 7, 2026, tracked back to Oct 19, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 2 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 1 commit2025-10-16: 3 commits2025-10-17: 0 commits2025-10-18: 1 commit2025-10-19: 0 commits2025-10-20: 3 commits2025-10-21: 8 commits2025-10-22: 1 commit2025-10-23: 2 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 2 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 1 commit2025-10-30: 2 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 1 commit2025-11-04: 1 commit2025-11-05: 1 commit2025-11-06: 0 commits2025-11-07: 1 commit2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 1 commit2025-11-11: 0 commits2025-11-12: 5 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 2 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 1 commit2026-01-13: 4 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 1 commit2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 2 commits2026-03-17: 4 commits2026-03-18: 5 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 1 commit2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 1 commit2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
58 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    11,968 stars

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What chandra does

Chandra is an advanced Document Intelligence model focused on extracting structured data from visually complex documents. It excels where traditional OCR fails, specifically in understanding intricate tables, dense forms, and varied handwriting styles. The model not only transcribes text but also predicts the spatial layout and logical relationships between document elements. This holistic approach allows it to reconstruct the document's structure in digital formats like JSON or HTML. It is designed as a foundational model for enterprise-grade document automation tasks.

Enterprise data teams and machine learning engineers requiring high-accuracy document intelligence for complex, unstructured data extraction. Requires Python and deep learning framework expertise.

  • Complex Table Extraction: Accurately identifies rows, columns, and spanning cells in unstructured tabular data.
  • Handwriting Recognition: Robustly transcribes cursive and messy handwritten notes within forms.
  • Full Layout Analysis: Understands the spatial relationship between headers, paragraphs, and images.
  • Form Field Mapping: Automatically pairs form labels with their corresponding handwritten or typed inputs.
  • State-of-the-Art Accuracy: Leverages modern deep learning architectures to surpass traditional OCR baselines.
  • Structured Output Generation: Directly outputs cleanly formatted JSON or HTML representing the document structure.

Where teams use it

Medical Record Digitization

Processes handwritten patient intake forms and complex medical charts into structured database entries.

Financial Table Parsing

Extracts precise figures from dense corporate earnings reports and unstructured invoices.

Historical Archive Transcription

Digitizes legacy documents containing a mix of typed text, handwritten annotations, and stamps.

Automated Data Entry

Replaces manual data entry for complex logistics and shipping manifests.

Getting started: pip install chandra-ocr

README

master branch

Datalab Logo

Datalab

State of the Art models for Document Intelligence

Code License Model License Discord

Homepage Docs Public Playground


Chandra OCR 2

Chandra OCR 2 is a state of the art OCR model that converts images and PDFs into structured HTML/Markdown/JSON while preserving layout information.

Try Chandra on Datalab

Our managed platform runs an improved Chandra with higher accuracy than the open weights, zero data retention by default, SOC 2 Type 2, and custom BAAs.

If you have high volume workloads, we offer a batch processing service that has processed 200M+ pages per week — we manage the infrastructure so your workloads finish on time.

Get started with $5 in free creditssign up — takes under 30 seconds — or try Chandra in our public playground.

Commercial self-hosting requires a license — see Commercial usage. For on-prem licensing, contact us.

News

  • 3/2026 - Chandra 2 is here with significant improvements to math, tables, layout, and multilingual OCR
  • 10/2025 - Chandra 1 launched

Features

  • Tops external olmocr benchmark and significant improvement in internal multilingual benchmarks
  • Convert documents to markdown, html, or json with detailed layout information
  • Support for 90+ languages (benchmark below)
  • Excellent handwriting support
  • Reconstructs forms accurately, including checkboxes
  • Strong performance with tables, math, and complex layouts
  • Extracts images and diagrams, and adds captions and structured data
  • Two inference modes: local (HuggingFace) and remote (vLLM server)

Quickstart

The easiest way to start is with the CLI tools:

pip install chandra-ocr

# With vLLM (recommended, lightweight install)
chandra_vllm
chandra input.pdf ./output

# With HuggingFace (requires torch)
pip install chandra-ocr[hf]
chandra input.pdf ./output --method hf

# Interactive streamlit app
pip install chandra-ocr[app]
chandra_app

Benchmarks

Multilingual performance was a focus for us with Chandra 2. There isn't a good public multilingual OCR benchmark, so we made our own. This tests tables, math, ordering, layout, and text accuracy.

See full scores below. We also have a full 90-language benchmark.

We also benchmarked Chandra 2 with the widely accepted olmocr benchmark:

See full scores below.

Examples

Type Name Link
Math CS229 Textbook View
Math Handwritten Math View
Math Chinese Math View
Tables Statistical Distribution View
Tables Financial Table View
Forms Registration Form View
Forms Lease Form View
Handwriting Cursive Writing View
Handwriting Handwritten Notes View
Languages Arabic View
Languages Japanese View
Languages Hindi View
Languages Russian View
Other Charts View
Other Chemistry View

Installation

Package

# Base install (for vLLM backend)
pip install chandra-ocr

# With HuggingFace backend (includes torch, transformers)
pip install chandra-ocr[hf]

# With all extras
pip install chandra-ocr[all]

If you're using the HuggingFace method, we also recommend installing flash attention for better performance.

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: 28 for vllm, 1 for hf)

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.)
  • Extracted images are saved directly in the output directory

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-ocr-2 model.

Configuration

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

# Model settings
MODEL_CHECKPOINT=datalab-to/chandra-ocr-2
MAX_OUTPUT_TOKENS=12384

# 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 API 90.4 90.2 90.7 54.6 91.6 83.7 92.3 99.9 86.7 ± 0.8 Own benchmarks
Chandra 2 86.9 89.1 92.1 51.1 91.4 82.1 93.7 99.9 85.8 ± 0.8 Own benchmarks
dots.ocr 1.5 85.9 85.5 90.7 48.2 94.0 85.3 81.6 99.7 83.9 dots.ocr repo
Chandra 1 82.2 80.3 88.0 50.4 90.8 81.2 92.3 99.9 83.1 ± 0.9 Own benchmarks
olmOCR 2 83.0 82.3 84.9 47.7 96.1 83.7 81.9 99.6 82.4 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
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
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
Deepseek OCR 75.2 72.3 79.7 33.3 96.1 66.7 80.1 99.7 75.4 ± 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
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
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
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

Multilingual benchmark table

The table below covers the 43 most common languages, benchmarked across multiple models. For a comprehensive evaluation across 90 languages (Chandra 2 vs Gemini 2.5 Flash only), see the full 90-language benchmark.

Language Datalab API Chandra 2 Chandra 1 Gemini 2.5 Flash GPT-5 Mini
ar 67.6% 68.4% 34.0% 84.4% 55.6%
bn 85.1% 72.8% 45.6% 55.3% 23.3%
ca 88.7% 85.1% 84.2% 88.0% 78.5%
cs 88.2% 85.3% 84.7% 79.1% 78.8%
da 90.1% 91.1% 88.4% 86.0% 87.7%
de 93.8% 94.8% 83.0% 88.3% 93.8%
el 89.9% 85.6% 85.5% 83.5% 82.4%
es 91.8% 89.3% 88.7% 86.8% 97.1%
fa 82.2% 75.1% 69.6% 61.8% 56.4%
fi 85.7% 83.4% 78.4% 86.0% 84.7%
fr 93.3% 93.7% 89.6% 86.1% 91.1%
gu 73.8% 70.8% 44.6% 47.6% 11.5%
he 76.4% 70.4% 38.9% 50.9% 22.3%
hi 80.5% 78.4% 70.2% 82.7% 41.0%
hr 93.4% 90.1% 85.9% 88.2% 81.3%
hu 88.1% 82.1% 82.5% 84.5% 84.8%
id 91.3% 91.6% 86.7% 88.3% 89.7%
it 94.4% 94.1% 89.1% 85.7% 91.6%
ja 87.3% 86.9% 85.4% 80.0% 76.1%
jv 87.5% 73.2% 85.1% 80.4% 69.6%
kn 70.0% 63.2% 20.6% 24.5% 10.1%
ko 89.1% 81.5% 82.3% 84.8% 78.4%
la 78.0% 73.8% 55.9% 70.5% 54.6%
ml 72.4% 64.3% 18.1% 23.8% 11.9%
mr 80.8% 75.0% 57.0% 69.7% 20.9%
nl 90.0% 88.6% 85.3% 87.5% 83.8%
no 89.2% 90.3% 85.5% 87.8% 87.4%
pl 93.8% 91.5% 83.9% 89.7% 90.4%
pt 97.0% 95.2% 84.3% 89.4% 90.8%
ro 86.2% 84.5% 82.1% 76.1% 77.3%
ru 88.8% 85.5% 88.7% 82.8% 72.2%
sa 57.5% 51.1% 33.6% 44.6% 12.5%
sr 95.3% 90.3% 82.3% 89.7% 83.0%
sv 91.9% 92.8% 82.1% 91.1% 92.1%
ta 82.9% 77.7% 50.8% 53.9% 8.1%
te 69.4% 58.6% 19.5% 33.3% 9.9%
th 71.6% 62.6% 47.0% 66.7% 53.8%
tr 88.9% 84.1% 68.1% 84.1% 78.2%
uk 93.1% 91.0% 88.5% 87.9% 81.9%
ur 54.1% 43.2% 28.1% 57.6% 16.9%
vi 85.0% 80.4% 81.6% 89.5% 83.6%
zh 87.8% 88.7% 88.3% 70.0% 70.4%
Average 80.4% 77.8% 69.4% 67.6% 60.5%

Full 90-language benchmark table

We also have a more comprehensive evaluation covering 90 languages, comparing Chandra 2 against Gemini 2.5 Flash. The average scores are lower than the 43-language table above because this includes many lower-resource languages. Chandra 2 averages 72.7% vs Gemini 2.5 Flash at 60.8%.

See the full 90-language results.

Throughput

Benchmarked with vLLM on a single NVIDIA H100 80GB GPU using a diverse mix of documents (math, tables, scans, multi-column layouts) from the olmOCR benchmark set. This set is significantly slower than real-world usage - we estimate 2 pages/s in real-world usage.

Configuration Pages/sec Avg Latency P95 Latency Failure Rate
vLLM, 96 concurrent sequences 1.44 60s 156s 0%

Credits

Thank you to the following open source projects:

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

8 total
  1. Chandra OCR 2v0.2.0Mar 18, 2026

    Announcing Chandra OCR 2 - a 4B parameter OCR model that scores 85.9% on the olmOCR benchmark (state of the art) and 77.8% on our internal 43-language multilingual benchmark. It is smaller and more accurate than Chandra 1 (9B) across every category. ## Highlights - **4B parameters** (down from 9B), 2x throughput improvement - **85.9% olmOCR overall** (up from 83.1%) - **77.8% multilingual average** across 43 languages (up from 69.4%), 72.7% across 90 languages - **2 pages/sec** on H100 with 96 concurrent requests - **15+ layout block types** with bounding boxes - **Structured output** for diagrams (Mermaid), charts, and images ## olmOCR Benchmark | Category | Chandra 1 | Chandra 2 | Change | | -------------- | :-------: | :-------: | :----: | | ArXiv | 82.2% | 90.2% | +8.0 | | Old Scans Math | 80.3% | 89.3% | +9.0 | | Tables | 88.0% | 89.9% | +1.9 | | Multi column | 81.2% | 83.5% | +2.3 | | **Overall** | **83.1%** | **85.9%** | **+2.8** | ## Multilingual 43-language averages: Chandra 2 **77.8%**, Chandra 1 69.4%, Gemini 2.5 Flash 67.6%, GPT-5 Mini 60.5%. 90-language averages: Chandra

  2. Render pdf images properlyv0.1.7Oct 22, 2025
  3. Additional fixesv0.1.6Oct 21, 2025
  4. VLLM fixesv0.1.4Oct 21, 2025
  5. Fix attention settingv0.1.3Oct 21, 2025

Code frequency

additions and deletions
+3.2K-3.2KWeek of 2025-10-05: +2,203 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +1,708 linesWeek of 2025-10-12: -424 linesWeek of 2025-10-19: +3,198 linesWeek of 2025-10-19: -1,632 linesWeek of 2025-10-26: +183 linesWeek of 2025-10-26: -58 linesWeek of 2025-11-02: +18 linesWeek of 2025-11-02: -12 linesWeek of 2025-11-09: +99 linesWeek of 2025-11-09: -52 linesWeek of 2025-11-16: +7 linesWeek of 2025-11-16: -45 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +0 linesWeek of 2025-11-30: -0 linesWeek of 2025-12-07: +0 linesWeek of 2025-12-07: -0 linesWeek of 2025-12-14: +0 linesWeek of 2025-12-14: -0 linesWeek of 2025-12-21: +0 linesWeek of 2025-12-21: -0 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +0 linesWeek of 2026-01-04: -0 linesWeek of 2026-01-11: +93 linesWeek of 2026-01-11: -88 linesWeek of 2026-01-18: +0 linesWeek of 2026-01-18: -0 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +0 linesWeek of 2026-02-01: -0 linesWeek of 2026-02-08: +0 linesWeek of 2026-02-08: -0 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +0 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +156 linesWeek of 2026-03-08: -50 linesWeek of 2026-03-15: +469 linesWeek of 2026-03-15: -206 linesWeek of 2026-03-22: +0 linesWeek of 2026-03-22: -0 linesWeek of 2026-03-29: +0 linesWeek of 2026-03-29: -0 linesWeek of 2026-04-05: +5 linesWeek of 2026-04-05: -0 linesWeek of 2026-04-12: +0 linesWeek of 2026-04-12: -0 linesWeek of 2026-04-19: +15 linesWeek of 2026-04-19: -5 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +328 linesWeek of 2026-06-21: -15 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesOct 5, 2025Aug 2, 2026
+8.5K lines added, -2.6K removed over the last year.

Commits per week

last 52 weeks
140Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 2 commitsWeek of 2025-10-12: 5 commitsWeek of 2025-10-19: 14 commitsWeek of 2025-10-26: 5 commitsWeek of 2025-11-02: 4 commitsWeek of 2025-11-09: 6 commitsWeek of 2025-11-16: 2 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 5 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 1 commitsWeek of 2026-03-15: 11 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 1 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 10, 2025Aug 2, 2026
58 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 2 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 1 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 1 commitsMon 16:00 — 2 commitsMon 17:00 — 3 commitsMon 18:00 — 1 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 6 commitsTue 11:00 — 4 commitsTue 12:00 — 1 commitsTue 13:00 — 2 commitsTue 14:00 — 0 commitsTue 15:00 — 2 commitsTue 16:00 — 1 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 2 commitsWed 9:00 — 1 commitsWed 10:00 — 0 commitsWed 11:00 — 4 commitsWed 12:00 — 2 commitsWed 13:00 — 1 commitsWed 14:00 — 0 commitsWed 15:00 — 1 commitsWed 16:00 — 4 commitsWed 17:00 — 4 commitsWed 18:00 — 2 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 1 commitsThu 11:00 — 0 commitsThu 12:00 — 2 commitsThu 13:00 — 1 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 1 commitsThu 17:00 — 0 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 2 commitsThu 21:00 — 0 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 1 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 0 commitsFri 18:00 — 0 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 1 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Mar 27, 2026daily#24+80
  • public-apis/public-apis

    A collective list of free APIs

    454.9K stars · Python

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    362.2K stars · Python