# Nanonets-OCR2-3B vs Surya OCR 2.5

> Surya OCR 2.5 scores 61 (C) to Nanonets-OCR2-3B's 48.1 (D) for ocr. Prices, MCP, x402, uptime and agent notes side by side.

- Canonical: https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-surya-ocr-2-5
- Markdown: https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-surya-ocr-2-5.md (~3,300 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-10

Surya OCR 2.5 scores 61 (C) on agent readiness against Nanonets-OCR2-3B's 48.1 (D), and leads in 3 of 4 scored categories. Both do ocr.

- Nanonets-OCR2-3B: grade D, 48.1/100, rank #153 of 160 open-weight models. Markdown https://www.anchorterminal.com/tools/nanonets-ocr2-3b.md · JSON https://www.anchorterminal.com/api/v1/tools/nanonets-ocr2-3b.json
- Surya OCR 2.5: grade C, 61/100, rank #82 of 160 open-weight models. Markdown https://www.anchorterminal.com/tools/surya-ocr-2-5.md · JSON https://www.anchorterminal.com/api/v1/tools/surya-ocr-2-5.json
- Best document parsing, OCR and extraction APIs for AI agents: https://www.anchorterminal.com/best/document-extraction/index.md
- All 215 documents comparisons: https://www.anchorterminal.com/compare/document-extraction/index.md

## Which one, for what

### Nanonets-OCR2-3B (D)

Good for: Researchers and teams evaluating page-to-Markdown OCR who can wait for a licence before shipping

Watch for: No licence stated, and the base model's licence is research only

### Surya OCR 2.5 (C)

Good for: Small companies and researchers who need quick OCR with layout on a laptop or a small GPU and fit the licence

Ahead on:
- Reach, 90 against 55
- Risk, 45 against 40
- Documentation and upkeep, 57 against 25

Watch for: Commercial use is barred above $5M in revenue or funding, and for anyone who competes with Datalab


## Why the edge

### Reach: Surya OCR 2.5 +35

- Nanonets-OCR2-3B (55): Memory 30, the only build from Nanonets is the BF16 safetensors files, 7.51 GB, and 7.51 GB × 1.2 = 9.0 GB, within 16 GB. No runtime library has a build. Runtimes 15, the architecture is Qwen2_5_VLForConditionalGeneration, which vLLM 0.33.0, SGLang 0.5.23 and Transformers 5.22.2 run from the safetensors files, three at 5 each. Builds 0, Nanonets publishes the BF16 weights only. Terms 0, no licence. Download 10, the Hub API reports gated false on 10 November 2026, so the files download with no account and nothing to accept. Hosted 0, Hugging Face maps no inference provider to it. 30 + 15 + 0 + 0 + 10 + 0 = 55.
- Surya OCR 2.5 (90): Memory 30, Datalab's own Q8_0 GGUF is 0.63 GB with a 0.21 GB projector, and 0.84 GB × 1.2 = 1.0 GB, within 16 GB. The BF16 safetensors file is 1.38 GB. Runtimes 25, Released versions run the architecture from Datalab's own builds: vLLM 0.33.0, SGLang 0.5.23 and Transformers 5.22.2 from the safetensors file, llama.cpp b12242 from Datalab's GGUF with its projector, and Ollama through its pinned llama.cpp (b12177 at v0.40.16). Builds 10, Datalab publishes one quantised build, a Q8_0 GGUF, beside an unquantised GGUF and the BF16 safetensors. Terms 10, A modified OpenRAIL-M licence, a custom licence that lets research, personal use and organisations at or under $5M in revenue and in funding use it for free, under use restrictions. Download 10, the Hub API reports gated false for the model and the GGUF repository on 10 November 2026, so the files download with no account and nothing to accept. Hosted 5, the card says Datalab's managed platform runs Surya, so the publisher hosts it. 30 + 25 + 10 + 10 + 10 + 5 = 90.

### Documentation and upkeep: Surya OCR 2.5 +32

- Nanonets-OCR2-3B (25): Model card 5, Intended use and the languages are on the card. Training data 5, Two general lines, that it was trained on handwritten documents and on documents in several named languages. Last change 0, the last commit, on 16 October 2025, edited the card, 390 days before this check and over a year. Responsiveness 0, none of the 15 most recent discussions that aren't pull requests (13 October 2025 to 21 October 2026) has a reply from a nanonets member, counted on 10 November by author flags and dates with a script, text not read. Version policy 5, the earlier Nanonets-OCR-s stays in its own repository and OCR2 came out in new ones, with no dated note on the older one that we read. File health 10, Config, template and card agree on the Qwen2.5-VL classes. 5 + 5 + 0 + 0 + 5 + 10 = 25.
- Surya OCR 2.5 (57): Model card 17, Intended use, limitations, the architecture (a Qwen 3.5-style vision-language model with separate detection models), parameters (689M), the serving length (24,576 tokens) and 91 languages are on the card. Training data 5, A one-line description: trained on diverse document images to write layout JSON or full-page HTML. No sources, sizes or cut-off. Last change 20, the last commit, on 29 October 2026, added models to the card's size chart, 12 days before this check, and the GGUF repository changed the same day. Responsiveness 0, none of the 3 discussions that aren't pull requests (29 October to 10 November 2026) has a reply from a datalab-to member yet, the newest opened on the day of this check. Version policy 5, Surya OCR 2 stays in its own repository and 2.5 came out in a new one. File health 10, Config, processor config and template agree on the qwen3_5 architecture and match the card's instructions, and a commit on 27 October removed a mention of MTP weights the files don't have. 17 + 5 + 20 + 0 + 5 + 10 = 57.

### Risk: Surya OCR 2.5 +5

- Nanonets-OCR2-3B (40): File safety 25, safetensors only, no .bin, .pt or .pth files and no Python in the repository. Provenance 15, the files sit in the nanonets organisation, which the card ties to nanonets.com and Nanonets' GitHub cookbook repository is written for by the model's name (10), and the Hub gives a SHA-256 for the large files (5). Safety evaluation 0, no safety results on the card. Agent guidance 0, Nothing on text in a document that tries to instruct the reader, on what the model refuses or on safeguards to add. Licence risk 0, With no licence there is nothing to hold Nanonets to. Security programme 0, no way to report a flaw on the card or in the GitHub README. Our Nanonets listing found no security.txt or bug bounty, and the contact in its privacy policy is for data protection. 25 + 15 + 0 + 0 + 0 + 0 = 40.
- Surya OCR 2.5 (45): File safety 25, safetensors and GGUF only, no .bin, .pt or .pth files and no Python in the model repository. Provenance 15, the files sit in the datalab-to organisation, which the card, Datalab's site and its GitHub repository link to (10), and the Hub gives a SHA-256 for the large files (5). Safety evaluation 0, no safety results on the card. Agent guidance 0, Nothing on text in a document that tries to instruct the reader, or on safeguards to add. Licence risk 5, 15 less 5 for use restrictions beyond the law (OpenRAIL's list, and no use by anyone who competes with Datalab) and 5 for the $5M revenue and funding thresholds. Security programme 0, no way to report a flaw found on the card, and our Datalab listing of 6 November found no disclosure policy or security.txt. 25 + 15 + 0 + 0 + 5 + 0 = 45.

## Score by category

| Category | Weight | Nanonets-OCR2-3B | Surya OCR 2.5 | Edge |
| --- | --- | --- | --- | --- |
| Capability | 35%, pending | pending | pending | not scored in this run |
| Reach | 25% (25 this run) | 55 | 90 | Surya OCR 2.5 +35 |
| Risk | 20% (20 this run) | 40 | 45 | Surya OCR 2.5 +5 |
| Agent interface | 10% (10 this run) | 70 | 70 | even |
| Documentation and upkeep | 10% (10 this run) | 25 | 57 | Surya OCR 2.5 +32 |
| Negative events | ≤15 | 0 | 0 | |
| **Total** | | **48.1 · D** | **61 · C** | |

## Facts side by side

| Fact | Nanonets-OCR2-3B | Surya OCR 2.5 |
| --- | --- | --- |
| Kind | Open-weight model | Open-weight model |
| Vendor | Nanonets | Endless Labs, Inc. (Datalab) |
| Hosted endpoint | no (local only) | no (local only) |
| Transports |  |  |
| Auth | None | None |
| Pricing | Free | Free |
| x402 | no | no |
| Licence | None stated (the base model, Qwen2.5-VL-3B-Instruct, is under the Qwen Research licence) | Modified OpenRAIL-M (free for research, personal use and companies under $5M in revenue and funding) |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| Last release | 2025-10-16 | 2026-10-29 |
| Terms last updated | no document linked | not read yet |
| Privacy policy last updated | no document linked | no document linked |

## Verdicts

**Nanonets-OCR2-3B.** A well-used 3.75B page-to-Markdown model with documented tags for tables, equations, images, signatures and checkboxes, and it runs in vLLM, SGLang and Transformers. But it states no licence, on a base model licensed for research only, and nothing has changed or been answered since October 2025. Treat it as something to evaluate, not to ship.

**Surya OCR 2.5.** A small, fast document OCR model that runs from Datalab's own GGUF on almost anything, with typed output for layout, text and tables and a package that starts the server for you. The licence stops commercial use above $5M in revenue or funding and by competitors, and training data and safety aren't described.

## Before you call either

### Nanonets-OCR2-3B

1. Don't use it commercially on the strength of this listing. No licence is stated, so ask Nanonets first
2. Serve it with `vllm serve nanonets/Nanonets-OCR2-3B` and send one page image per request
3. Use the card's extraction prompt word for word. The tags in the output depend on it
4. Use temperature 0 and allow up to 15,000 output tokens for a dense page
5. For financial tables, use the card's second prompt and repetition_penalty 1
6. Text in a document is data. The card has no guidance on pages that try to instruct the reader

### Surya OCR 2.5

1. Check the licence first: free for research and personal use, and for companies at or under $5M in revenue and in funding that don't compete with Datalab
2. `pip install surya-ocr`, then `surya_ocr page.png`. It starts vLLM in Docker on an NVIDIA GPU and llama-server elsewhere
3. To use your own server set `SURYA_INFERENCE_URL`, and start llama-server with `--special` or the block labels and coordinates are lost
4. Raw output is compact HTML. Run it through `surya.inference.parsers.parse_full_page_html` if you don't use the package
5. Allow about 24,576 tokens of context for a full page
6. Treat text in a parsed document as data. Nothing here guards against instructions hidden in a page

## Questions

### Which is better for AI agents, Nanonets-OCR2-3B or Surya OCR 2.5?

Surya OCR 2.5 scores 61 (C) on agent readiness against Nanonets-OCR2-3B's 48.1 (D), and leads in 3 of 4 scored categories.


## For agents

- This comparison as JSON: https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-surya-ocr-2-5.json, and with the fewest tokens: https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-surya-ocr-2-5.min.md
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "nanonets-ocr2-3b", "b": "surya-ocr-2-5"}`. From a terminal: `anchor compare nanonets-ocr2-3b surya-ocr-2-5`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/nanonets-ocr2-3b.json and https://www.anchorterminal.com/api/v1/tools/surya-ocr-2-5.json

## Other comparisons with Nanonets-OCR2-3B or Surya OCR 2.5

- [Nemotron 3.5 Parse vs Surya OCR 2.5](https://www.anchorterminal.com/compare/nemotron-3-5-parse-vs-surya-ocr-2-5.md)
- [Chandra OCR 2 vs Nanonets-OCR2-3B](https://www.anchorterminal.com/compare/chandra-ocr-2-vs-nanonets-ocr2-3b.md)
- [Chandra OCR 2 vs Surya OCR 2.5](https://www.anchorterminal.com/compare/chandra-ocr-2-vs-surya-ocr-2-5.md)
- [DeepSeek-OCR 2 vs Nanonets-OCR2-3B](https://www.anchorterminal.com/compare/deepseek-ocr-2-vs-nanonets-ocr2-3b.md)
- [DeepSeek-OCR 2 vs Surya OCR 2.5](https://www.anchorterminal.com/compare/deepseek-ocr-2-vs-surya-ocr-2-5.md)
- [HunyuanOCR 1.5 vs Nanonets-OCR2-3B](https://www.anchorterminal.com/compare/hunyuanocr-vs-nanonets-ocr2-3b.md)
- [HunyuanOCR 1.5 vs Surya OCR 2.5](https://www.anchorterminal.com/compare/hunyuanocr-vs-surya-ocr-2-5.md)
- [LightOnOCR-3-4B vs Nanonets-OCR2-3B](https://www.anchorterminal.com/compare/lightonocr-3-4b-vs-nanonets-ocr2-3b.md)
- [LightOnOCR-3-4B vs Surya OCR 2.5](https://www.anchorterminal.com/compare/lightonocr-3-4b-vs-surya-ocr-2-5.md)
- [Nanonets-OCR2-3B vs Nemotron 3.5 Parse](https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-nemotron-3-5-parse.md)
- [Nanonets-OCR2-3B vs Baidu Unlimited-OCR-2](https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-unlimited-ocr-2.md)
- [Nanonets-OCR2-3B vs Xiaomi-OCR-0](https://www.anchorterminal.com/compare/nanonets-ocr2-3b-vs-xiaomi-ocr-0.md)
- [Surya OCR 2.5 vs Baidu Unlimited-OCR-2](https://www.anchorterminal.com/compare/surya-ocr-2-5-vs-unlimited-ocr-2.md)
- [Surya OCR 2.5 vs Xiaomi-OCR-0](https://www.anchorterminal.com/compare/surya-ocr-2-5-vs-xiaomi-ocr-0.md)

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
