Qwen3.5 with a two-layer MLP-Mixer decision head. Supports text, images and videos, and returns Choice, Noul and Score decisions. Multiple questions can share one state encoding with execution="sharedstate". Trained on millions of samples. Install Python 3.10+, PyTorch, Transformers 5.4.0, torchvision, Pillow and av. Flash Attention 2 is optional with a compatible CUDA build. The model contains its tokenizer, processor and custom inference code; a separate base-model download is unnecessary. Use attnimplementation="flashattention2" for Flash Attention, or execution="question" for independent questions. Video defaults to 16 frames. Image/video request examples and training instructions are…
surya-ocr-2 is an open-weight model for image and text to text from Datalab, released under Open RAIL License. It has 686M parameters and a 262,144-token context. At 16-bit it needs about 1.6 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index. It draws 1.4M downloads a month.
Surya is a 650M param OCR model with these features: - Accuracy - scores 83.3% on olmOCR-bench (top under 3B params) - Multilingual - scores 87.2% on an internal benchmark set of 91 languages (more here) - Layout analysis (table, image, header, etc.) with…
Runs On
What it takes to serve surya-ocr-2 (686M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.
| Precision | Weights | Memory needed | Cheapest setup | Per hour | Also fits |
|---|---|---|---|---|---|
| 16-bit | 1.4 GB | 1.6 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 8-bit | 0.7 GB | 0.8 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 4-bit | 0.3 GB | 0.4 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 16, 2026.
surya-ocr-2 on every accelerator the SAVRN Index prices, at every precision
SAVRN's Notes on surya-ocr-2
A context window of 262,144 tokens on a 686M parameter OCR model tells you what Datalab built it for: whole documents, with layout, reading order and table rows and columns alongside the text. The 16-bit weights are 1.4 GB and need 1.6 GB; 8-bit needs 0.8 GB, 4-bit 0.4 GB. The cheapest setup in our data is one MI300X with 192 GB at $1.85 per hour, so one card runs many instances side by side and the buying question is pages per hour per dollar.
Open RAIL permits commercial use subject to use-based restrictions you must pass on to anyone who receives the model or a derivative, so read that list before it goes into a product. Then check the model card's own olmOCR-bench numbers, 83.3 overall but 41.8 on old scans, against your scanned backfile. The publisher calls it 650M parameters while the configuration counts 686M.
Model Card
By Datalab, published under openrail, revision 3b3d4cdf88d6.
Datalab
State of the Art models for Document Intelligence
Surya
Surya is a 650M param OCR model with these features:
- Accuracy - scores 83.3% on olmOCR-bench (top under 3B params)
- Speed - throughput of 5 pages/s on an RTX 5090
- Multilingual - scores 87.2% on an internal benchmark set of 91 languages (more here)
- Layout analysis (table, image, header, etc.) with reading order
- Table recognition (rows + columns)
It works on a range of documents (see usage and benchmarks).
Try Datalab's Managed Platform
Our managed platform runs both Surya, and variants of our highest accuracy model, Chandra.
Get started with $5 in free credits — sign up (takes under 30 seconds) or try our free public playground.
Model Information
| Detection | OCR |
|---|---|
| Layout | Table Recognition |
|---|---|
Surya is named for the Hindu sun god, who has universal vision.
Examples
Configuration
- Architecture
- Qwen3_5ForConditionalGeneration
- Context length (tokens)
- 262,144
- Layers
- 24
- Hidden size
- 1,024
- Feed-forward size
- 3,584
- Attention heads
- 8
- Key/value heads
- 2
- Head dimension
- 256
- Vocabulary size
- 65,425
- Model type
- qwen3_5
Identity and Version
- Repository
- datalab-to/surya-ocr-2
- Publisher
- Datalab
- Task
- Image and text to text
- Modality
- Image and text
- Library
- transformers
- Parameters
- 686M parameters
- Languages
- ocr, pdf
- Revision
- 3b3d4cdf88d6928b0acdc75181b13206ea67c4a3
- First published
- 2026-05-14
- Last updated
- 2026-05-27
Files and Weights
42 files, 1.4 GB in total. The weights are 1 file totalling 1.4 GB in safetensors.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| model.safetensors | Weights | 1.4 GB | 5755f82a997d |
| .eval_results/olmocrbench.yaml | Configuration | 1.7 KB | — |
| config.json | Configuration | 2.6 KB | — |
| generation_config.json | Configuration | 131 B | — |
| preprocessor_config.json | Configuration | 482 B | — |
| processor_config.json | Configuration | 1.3 KB | — |
| video_preprocessor_config.json | Configuration | 615 B | — |
| LICENSE | Documentation | 14.7 KB | — |
| README.md | Documentation | 22.5 KB | — |
| assets/corporate.png | Other | 168.2 KB | 03e5004c5ee8 |
| assets/corporate_layout.png | Other | 167.4 KB | c472d16817b8 |
| assets/corporate_reading.png | Other | 168.2 KB | fa9471e99827 |
| assets/corporate_tablerec.png | Other | 163.1 KB | c1861b87e15f |
| assets/corporate_text.png | Other | 166.2 KB | 893c5924fe66 |
| assets/excerpt.png | Other | 338.8 KB | 9d1913fc79fb |
| assets/excerpt_layout.png | Other | 345.4 KB | 924b81dba774 |
| assets/excerpt_text.png | Other | 542.6 KB | baddec3a08b6 |
| assets/form.png | Other | 513.3 KB | 60fb6bfde4d7 |
| assets/form_layout.png | Other | 508.0 KB | 631c09dc21bd |
| assets/form_reading.png | Other | 518.7 KB | e88bac7fb15d |
| assets/form_tablerec.png | Other | 511.5 KB | d799c78d495c |
| assets/form_text.png | Other | 329.5 KB | 7c40b7233926 |
| assets/handwritten.png | Other | 178.5 KB | 3c7623a26db0 |
| assets/handwritten_layout.png | Other | 184.7 KB | ad0e4ae387b8 |
| assets/handwritten_reading.png | Other | 185.4 KB | 5cc6662224ca |
| assets/handwritten_tablerec.png | Other | 171.2 KB | 5e3f7820dc76 |
| assets/handwritten_text.png | Other | 298.5 KB | 9686cfab491a |
| assets/newspaper.png | Other | 5.6 MB | 1a07a43797b7 |
| assets/newspaper_layout.png | Other | 5.6 MB | 139c8fd41152 |
| assets/newspaper_reading.png | Other | 5.6 MB | c18c2eb0c39d |
| assets/newspaper_text.png | Other | 1.9 MB | 364de91c602c |
| assets/olmocr_size_chart.png | Other | 82.5 KB | 34addebba231 |
| assets/scanned_tablerec.png | Other | 345.5 KB | 86091b59d376 |
| assets/textbook.png | Other | 193.1 KB | 0070c7f61aae |
| assets/textbook_layout.png | Other | 194.9 KB | 2711fcd2183f |
| assets/textbook_reading.png | Other | 200.8 KB | 81d14c7a6d77 |
| assets/textbook_text.png | Other | 225.7 KB | 7950d981fdf9 |
| chat_template.jinja | Other | 2.9 KB | — |
| datalab-logo.png | Other | 6.2 KB | — |
| .gitattributes | Repository | 3.0 KB | — |
| tokenizer.json | Tokenizer | 1.7 MB | — |
| tokenizer_config.json | Tokenizer | 571 B | — |
License and Download
- License
- openrail
- Access
- Open weights, no gate
- Download size
- 1.4 GB
Released by Datalab through its official repository on Hugging Face. Read the license.
Built From
- Described by arXiv:2105.15203
Evaluations
Each result is shown as reported, with the conditions its reporter stated. None is a SAVRN measurement. A comparison lines two results up only when their configuration, unit and setup are all stated and identical.
| Benchmark | Conditions | Result | Reported by | Revision | Date |
|---|---|---|---|---|---|
| allenai/olmOCR-bench | Task arxiv_mathMetric arxiv_mathComparison conditions not established | 88.3 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task baselineMetric baselineComparison conditions not established | 99.7 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task headers_footersMetric headers_footersComparison conditions not established | 92.5 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task long_tiny_textMetric long_tiny_textComparison conditions not established | 93.7 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task multi_columnMetric multi_columnComparison conditions not established | 82.4 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task old_scansMetric old_scansComparison conditions not established | 41.8 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task old_scans_mathMetric old_scans_mathComparison conditions not established | 81.4 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task overallMetric overallComparison conditions not established | 83.3 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| allenai/olmOCR-bench | Task table_testsMetric table_testsComparison conditions not established | 86.6 | Surya OCR 2 Model Card Reported by a third party |
Evaluated revision not stated | 2026-05-27 |
| llamaindex/ParseBench | Task chartMetric chartSetup Pipeline name: surya2_sdkComparison conditions not established | 21.95 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
| llamaindex/ParseBench | Task layoutMetric layoutSetup Pipeline name: surya2_sdkComparison conditions not established | 71.59 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
| llamaindex/ParseBench | Task meanMetric meanSetup Pipeline name: surya2_sdkComparison conditions not established | 64.83 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
| llamaindex/ParseBench | Task tableMetric tableSetup Pipeline name: surya2_sdkComparison conditions not established | 82.68 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
| llamaindex/ParseBench | Task text_contentMetric text_contentSetup Pipeline name: surya2_sdkComparison conditions not established | 86.57 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
| llamaindex/ParseBench | Task text_formattingMetric text_formattingSetup Pipeline name: surya2_sdkComparison conditions not established | 61.36 | ParseBench Reported by a third party |
Evaluated revision not stated | 2026-06-01 |
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 1.4 GB |
| 16-bit | 1.4 GB |
| 8-bit | 0.7 GB |
| 4-bit | 0.3 GB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Compare surya-ocr-2
Questions About surya-ocr-2
How much GPU memory does surya-ocr-2 need?
About 1.6 GB at 16-bit and 0.4 GB at 4-bit: the weights (686M parameters) plus a working margin. A long context needs more.
What is the cheapest GPU to run surya-ocr-2 on?
At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.
Can I use surya-ocr-2 commercially?
Yes, with conditions. surya-ocr-2 is released under Open RAIL License. Open RAIL licenses permit use, including commercial use, subject to the use-based restrictions listed in the license, which must be passed on to anyone who receives the model or a derivative.
What is surya-ocr-2's context length?
262,144 tokens, from the maximum position embeddings in its published configuration.
Similar Models
SmolVLM2-500M-Video is a lightweight multimodal model designed to analyze video content. The model processes videos, images, and text inputs to generate text outputs - whether answering questions about media files, comparing visual content, or transcribing text from images. Despite its compact size, requiring only 1.8GB of GPU RAM for video inference, it delivers robust performance on complex multimodal tasks. This efficiency makes it particularly well-suited for on-device applications where computational resources may be limited. SmolVLM2 can be used for inference on multimodal (video / image / text) tasks where the input consists of text queries along with video or one or more images.…
Over recent months, we have intensified our focus on developing foundation models that deliver exceptional utility and performance. Qwen3.5 represents a significant leap forward, integrating breakthroughs in multimodal learning, architectural efficiency, reinforcement learning scale, and global accessibility to empower developers and enterprises with unprecedented capability and efficiency. For more details, please refer to our blog post Qwen3.5. WMT24++: a harder subset of WMT24 after difficulty labeling and rebalancing; we report the averaged scores on 55 languages using XCOMET-XXL. Empty cells (--) indicate scores not yet available or not applicable. Scores of Qwen3.5 models are reported…
On-policy distillation. The weight delta learned by the teacher was merged into the SFT base with an extra scale of 0.5, the best point of an alpha sweep (0.25 -> +0.32, 0.5 -> +0.44, 0.75 -> -0.29, 1.5 -> -3.01 with t = -12.42). Fine-tuned from CheneyWong/povl-sft-2d-merge, which is NOT the RL checkpoint -- the teacher delta was merged into the SFT base, which is why it neither clearly beats nor clearly follows round 2. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly…
Reinforcement learning round 2, GSAPO, 200 steps. The delivered model of that round. Equal-weight TEDS 0.8473 / TEDS-Struct 0.9078 over 33,545 samples. Fine-tuned from CheneyWong/povl-rl-dapo-400, which is RL round 1 -- the stages form a single linear chain. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. Rejected at the gate. The one substantive gap: every…
Reinforcement learning round 1, DAPO algorithm, 400 steps. Fine-tuned from CheneyWong/povl-dpo-2ep, which is its own immediate predecessor in the same run. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. Only works with DAPO's dynamic sampling. The first attempt with GSAPO had 78% of groups contributing zero gradient (49.0% saturated, 16.5% identical rewards, 12.6%…