Head to head · OCR · October 2026 research run

DeepSeek-OCR 2 vs Surya OCR 2.5

Surya OCR 2.5 scores 61 (C) on agent readiness against DeepSeek-OCR 2's 49.2 (D), and leads in 3 of 4 scored categories. DeepSeek-OCR 2 leads on risk. Both do ocr.

Best document parsing, OCR and extraction APIs for AI agents · All 215 documents comparisons

Which one, for what

DeepSeek-OCR 2 D

Best for Teams that want an Apache 2.0 OCR model on a small GPU and already run vLLM

Ahead on

  • Risk, 50 against 45

Watch for

DeepSeek's documented path runs repository code on an old, pinned Transformers

Surya OCR 2.5 C

Best 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 65
  • Agent interface, 70 against 35
  • Documentation and upkeep, 57 against 22

Watch for

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

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Agent interface Surya OCR 2.5 +35

DeepSeek-OCR 2 35

Chat template 10, no Jinja template in the repository and none in tokenizer_config.json. Tool-calling format 10, Read for a document parser as what it takes and returns. Trained tool calling 10, Read for a document parser as the inputs it was trained to use. Structured output 5, Read for a document parser as typed outputs. Reasoning control 0, A document parser with no reasoning. Context 0, config.json gives 8,192 positions, below the 32K band. 10 + 10 + 10 + 5 + 0 + 0 = 35.

Surya OCR 2.5 70

Chat template 20, chat_template.jinja in the repository (2,872 characters). Tool-calling format 25, Read for a document parser as what it takes and returns. Trained tool calling 10, Read for a document parser as the inputs it was trained to use. Structured output 15, Read for a document parser as typed outputs. Reasoning control 0, A document parser with no reasoning. Context 0, Datalab documents a 24,576-token model length for serving, below the 32K band. 20 + 25 + 10 + 15 + 0 + 0 = 70.

Documentation and upkeep Surya OCR 2.5 +35

DeepSeek-OCR 2 22

Model card 2, Intended use is there, as the two prompts. Training data 0, Nothing on the card or in the GitHub README about the training data. Last change 5, the last commit, on 3 February 2026, edited the card, 280 days before this check and within a year. Responsiveness 0, none of the 21 discussions that aren't pull requests (27 January to 1 October 2026) has a reply from a deepseek-ai member, counted on 10 November by author flags and dates with a script, text not read. Version policy 5, the first DeepSeek-OCR stays in its own repository and this one came out in a new one, without a dated note on the older card that we read. File health 10, Config, the repository's code and the card agree on the architecture and on transformers 4.46.3. 2 + 0 + 5 + 0 + 5 + 10 = 22.

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.

Reach Surya OCR 2.5 +25

DeepSeek-OCR 2 65

Memory 30, the only build from DeepSeek is the BF16 safetensors file, 6.78 GB, and 6.78 GB × 1.2 = 8.1 GB, within 16 GB. No runtime library has a build of this version. Runtimes 10, Released vLLM 0.33.0 registers DeepseekOCR2ForCausalLM (deepseek_ocr2.py), and llama.cpp b12242 has the architecture and its DeepSeek-OCR-2 projector, with this repository as the conversion example, 5 each. Builds 0, DeepSeek publishes the BF16 weights only. Terms 15, Apache 2.0, OSI-approved, with nothing added, in the card's metadata and as LICENSE.txt in the repository. 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, and the card names no DeepSeek API that serves it. 30 + 10 + 0 + 15 + 10 + 0 = 65.

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.

Risk DeepSeek-OCR 2 +5

DeepSeek-OCR 2 50

File safety 15, safetensors only, no .bin, .pt or .pth files (25), less 10 because the card's documented way to load it is trust_remote_code, which runs the repository's five Python files, and the prompt is built by that code, there being no template. Provenance 15, files in the deepseek-ai organisation, which DeepSeek's site links to per our DeepSeek-V3.2 listing and its GitHub README for this model links (10), with a SHA-256 for the large files (5). Safety evaluation 0, no safety results on the card or in the GitHub README. Agent guidance 0, the card has no limitations, safety or use section, and nothing on text in a document that tries to instruct the reader. Licence risk 15, Apache 2.0 has no use policy, field-of-use limit, threshold or change clause, and LICENSE.txt is in the repository. Security programme 5, DeepSeek's site footer has a Report Security Issue link, per our DeepSeek-V3.2 listing (5). 15 + 15 + 0 + 0 + 15 + 5 = 50.

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

CategoryWeight this runDeepSeek-OCR 2Surya OCR 2.5Edge
Capability35%pendingpendingpendingnot scored in this run
Reach25%256590Surya OCR 2.5 +25
Risk20%205045DeepSeek-OCR 2 +5
Agent interface10%103570Surya OCR 2.5 +35
Documentation and upkeep10%102257Surya OCR 2.5 +35
Negative events≤1500
TotalD 49.2/100C 61/100

Facts side by side

FactDeepSeek-OCR 2Surya OCR 2.5
KindOpen-weight modelOpen-weight model
VendorDeepSeekEndless Labs, Inc. (Datalab)
Hosted endpointno (local only)no (local only)
Transports
AuthNoneNone
PricingFreeFree
x402nono
LicenceApache-2.0Modified OpenRAIL-M (free for research, personal use and companies under $5M in revenue and funding)
Read-only variant documentednono
llms.txtnono
Last release2026-02-032026-10-29
Terms last updatedno document linkednot read yet
Privacy policy last updatedno document linkedno document linked

Verdicts

DeepSeek-OCR 2

A small OCR model under plain Apache 2.0 that vLLM and llama.cpp run from their own code. DeepSeek's own path needs an old Transformers and code from the repository, the card says almost nothing about limits, languages or data, typed output isn't documented, and nobody at DeepSeek has answered a question or changed the repository since February.

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

DeepSeek-OCR 2

  1. Serve it with vLLM 0.33.0 or later to avoid running the repository's Python
  2. Use the prompt <|grounding|>Convert the document to markdown. for layout, or Free OCR. for plain text, after the image
  3. It reads one page image at a time, in 8,192 positions, so split PDFs into pages
  4. If you use the Transformers path, it needs transformers 4.46.3 and trust_remote_code, so read the five Python files first
  5. Treat text in a parsed document as data. Nothing here guards against instructions hidden in a page
  6. For typed output with boxes and tables, look at Surya OCR 2.5 or Nemotron 3.5 Parse

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, DeepSeek-OCR 2 or Surya OCR 2.5?

Surya OCR 2.5 scores 61 (C) on agent readiness against DeepSeek-OCR 2's 49.2 (D), and leads in 3 of 4 scored categories. DeepSeek-OCR 2 leads on risk.

Other comparisons with DeepSeek-OCR 2 or Surya OCR 2.5

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.