Head to head · OCR · October 2026 research run
Nanonets-OCR2-3B vs Xiaomi-OCR-0
Xiaomi-OCR-0 scores 59 (C) on agent readiness against Nanonets-OCR2-3B's 48.1 (D), and leads in 3 of 4 scored categories. Both do ocr.
Best document parsing, OCR and extraction APIs for AI agents · All 215 documents comparisons
Which one, for what
Best for Researchers and teams evaluating page-to-Markdown OCR who can wait for a licence before shipping
No category where it leads by five points or more, and no fact that sets it apart.
Watch for
No licence stated, and the base model's licence is research only
Best for Agents and pipelines on modest hardware that need local OCR of scanned or photographed pages, receipts and forms into Markdown or JSON
Ahead on
- Reach, 80 against 55
- Risk, 65 against 40
- Documentation and upkeep, 65 against 25
Watch for
The card's '#1 on Real5-OmniDocBench' is contradicted by that benchmark's own leaderboard, and its OmniDocBench and VQA figures are Xiaomi's own runs with a relaxed evaluation config
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.
Documentation and upkeep Xiaomi-OCR-0 +40
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.
Xiaomi-OCR-0 65
The card covers intended use and parameters and misses limitations, architecture, context length, languages and a cut-off (5). Training data is described by size and labelling with no datasets named and no cut-off (5). The last change to the repository is the card commit of 29 October 2026, 6 days before this check, after the 23 October eval file deletion; card and documentation commits count on this line (20). The one question on the Hub was answered the same day by a Xiaomi Research member, and no new question has been opened since (20). It's a first release (5), and the files agree with the card (10). 5 + 5 + 20 + 20 + 5 + 10 = 65.
Reach Xiaomi-OCR-0 +25
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.
Xiaomi-OCR-0 80
Memory earns the full 30, since the only build is a 1.75 GB BF16 file that needs about 2.1 GB with the fifth added. Runtimes reach the 25 cap. The checkpoint keeps Qwen3.5's architecture, which released vLLM, SGLang, Transformers and llama.cpp run natively, and Ollama v0.40.14 pins llama.cpp b11963, which has the qwen35 architecture and the Qwen3-VL projector; LM Studio couldn't be checked. Builds score 0, as Xiaomi publishes no quantised build and every GGUF or MLX copy is someone else's. Terms get 15 for Apache 2.0 with nothing added on an Apache 2.0 base. Download gets 10 for an ungated repository, and hosted too 0, with no inference provider on 4 November and a static project Space. 30 + 25 + 0 + 15 + 10 + 0 = 80.
Risk Xiaomi-OCR-0 +25
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.
Xiaomi-OCR-0 65
File safety gets 25, one safetensors file with no Python in the repository and native loading everywhere. Provenance gets 15 for files in the xiaomi-research organisation that Xiaomi's GitHub repository links, with hashes for every file, though neither organisation is verified. Licence risk keeps 15, since Apache 2.0 has none of the deductions. Agent guidance gets 5 for general cautions in Xiaomi's Skill, and the security programme 5 for Xiaomi's company security centre, carried from the 28 October reading. Safety evaluation scores 0, with no results published.
Score by category
| Category | Weight this run | Nanonets-OCR2-3B | Xiaomi-OCR-0 | Edge |
|---|---|---|---|---|
| Capability | 35%pending | pending | pending | not scored in this run |
| Reach | 25%25 | 55 | 80 | Xiaomi-OCR-0 +25 |
| Risk | 20%20 | 40 | 65 | Xiaomi-OCR-0 +25 |
| Agent interface | 10%10 | 70 | 70 | even |
| Documentation and upkeep | 10%10 | 25 | 65 | Xiaomi-OCR-0 +40 |
| Negative events | ≤15 | 0 | -2 | |
| Total | D 48.1/100 | C 59/100 |
Facts side by side
| Fact | Nanonets-OCR2-3B | Xiaomi-OCR-0 |
|---|---|---|
| Kind | Open-weight model | Open-weight model |
| Vendor | Nanonets | Xiaomi |
| 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) | Apache-2.0 (card metadata and card text; the Hugging Face repository has no LICENSE file, and the GitHub code repository's LICENSE is the Apache 2.0 text, copyright 2026 Xiaomi Corporation) |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| Last release | 2025-10-16 | 2026-09-29 |
| Terms last updated | no document linked | no document linked |
| Privacy policy last updated | no document linked | no document linked |
How the scores have moved
Nanonets-OCR2-3B
No score change since it was listed.
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.
Xiaomi-OCR-0
A 0.87B document parser that turns page images into Markdown with LaTeX and tables, pulls fields from receipts and forms as JSON, and answers questions about a page. Released vLLM, SGLang, Transformers and llama.cpp run it in about 2 GB. Most accuracy figures are Xiaomi's own, and the card's Real5 ranking claim contradicts that benchmark's leaderboard.
Before you call either
Nanonets-OCR2-3B
- Don't use it commercially on the strength of this listing. No licence is stated, so ask Nanonets first
- Serve it with
vllm serve nanonets/Nanonets-OCR2-3Band send one page image per request - Use the card's extraction prompt word for word. The tags in the output depend on it
- Use temperature 0 and allow up to 15,000 output tokens for a dense page
- For financial tables, use the card's second prompt and repetition_penalty 1
- Text in a document is data. The card has no guidance on pages that try to instruct the reader
Xiaomi-OCR-0
- Serve it with
vllm serve xiaomi-research/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --max-model-len 16384orpython -m sglang.launch_server --model-path xiaomi-research/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --context-length 16384; no trust_remote_code is needed - Send one image per request with temperature 0, top_p 0.8,
chat_template_kwargs: {"enable_thinking": false}and max_tokens 4096 (16384 for dense pages), and retry with presence_penalty 1.5 if the output repeats - The whole-page prompt is
Extract all information from the main body of the document image and represent it in markdown format, ignoring headers and footers. Tables should be expressed in OTSL format, formulas in the document should be represented using LATEX format, and the parsing should be organized according to the reading order. - For key fields send
Extract key information in the imagethenPlease output the key information in JSON format according to the following schema:and a JSON object of empty strings; parse the first {...} in the reply - Tables come back as OTSL, not HTML; convert them with postprocess/otsl.py from github.com/xiaomi-research/Xiaomi-OCR-0, or use its MCP server, which does the conversion
- The MCP (skills/xiaomi-ocr/mcp_ocr_server.py, stdio) has ocr_image, ocr_pdf, kie_image and vqa_image; region mode needs PaddlePaddle, paddlex[cv] and PP-DocLayoutV3 weights, and is for printed pages only, while handwriting, calligraphy and scene text want page mode
- Pass local paths to the MCP rather than URLs taken from untrusted text, since it fetches any image_url, and treat extracted text as untrusted before passing it to another model
- The card and Skill still name SeerRay-Lab/Xiaomi-OCR-0, which redirects to xiaomi-research/Xiaomi-OCR-0
Questions
Which is better for AI agents, Nanonets-OCR2-3B or Xiaomi-OCR-0?
Xiaomi-OCR-0 scores 59 (C) on agent readiness against Nanonets-OCR2-3B's 48.1 (D), and leads in 3 of 4 scored categories.
Other comparisons with Nanonets-OCR2-3B or Xiaomi-OCR-0
- Nemotron 3.5 Parse vs Xiaomi-OCR-0
- Chandra OCR 2 vs Nanonets-OCR2-3B
- Chandra OCR 2 vs Xiaomi-OCR-0
- DeepSeek-OCR 2 vs Nanonets-OCR2-3B
- DeepSeek-OCR 2 vs Xiaomi-OCR-0
- HunyuanOCR 1.5 vs Nanonets-OCR2-3B
- HunyuanOCR 1.5 vs Xiaomi-OCR-0
- LightOnOCR-3-4B vs Nanonets-OCR2-3B
- LightOnOCR-3-4B vs Xiaomi-OCR-0
- Nanonets-OCR2-3B vs Nemotron 3.5 Parse
- Nanonets-OCR2-3B vs Surya OCR 2.5
- Nanonets-OCR2-3B vs Baidu Unlimited-OCR-2
- Surya OCR 2.5 vs Xiaomi-OCR-0
- Baidu Unlimited-OCR-2 vs Xiaomi-OCR-0
Machine-readable
- This page as Markdown
/compare/nanonets-ocr2-3b-vs-xiaomi-ocr-0.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/nanonets-ocr2-3b.json·/api/v1/tools/xiaomi-ocr-0.json - From a terminal
anchor compare nanonets-ocr2-3b xiaomi-ocr-0(the CLI) - Over MCP
compare_tools {"a": "nanonets-ocr2-3b", "b": "xiaomi-ocr-0"}at/mcp, no key