# Xiaomi-OCR-0

> Xiaomi-OCR-0 is Xiaomi's open-weight OCR model, 0.87B parameters on Qwen3.5-0.8B-Base, that turns document images into Markdown with LaTeX formulas and tables, extracts fields as JSON and answers questions about documents, under Apache 2.0.

- Canonical: https://www.anchorterminal.com/tools/xiaomi-ocr-0
- Pricing: https://www.anchorterminal.com/tools/xiaomi-ocr-0#pricing
- Reviews: https://www.anchorterminal.com/tools/xiaomi-ocr-0#reviews
- Markdown: https://www.anchorterminal.com/tools/xiaomi-ocr-0.md (~8,950 tokens)
- Slim: https://www.anchorterminal.com/tools/xiaomi-ocr-0.min.md (~3,430 tokens, same facts, less prose, for token-sensitive contexts)
- JSON: https://www.anchorterminal.com/tools/xiaomi-ocr-0.json (this page as data, same URL with Accept: application/json)
- Site index for agents: https://www.anchorterminal.com/llms.txt (full text: 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)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-10-30

## Overview

**Grade C · 59/100 · rank #72 of 120 open-weight models · #11 in Document parsing & extraction · not agent-ready · confidence low**


Trained by Xiaomi (MiMo), in the Xiaomi-OCR family. Every model from this lab and its older versions: https://www.anchorterminal.com/open-weights/#xiaomi.

## Assessment

A small document-reading cousin that turns page images into Markdown with LaTeX and tables, pulls fields from receipts and forms as JSON, and answers questions about a page. It runs natively in vLLM, SGLang, Transformers and llama.cpp in about 2 GB, even on a CPU. The risks are accuracy figures that are mostly Xiaomi's own and an inflated ranking claim.

## Facts

| Field | Value |
| --- | --- |
| Vendor | Xiaomi (https://huggingface.co/xiaomi-research) |
| Kind | Open-weight model |
| Category | Document parsing & extraction (https://www.anchorterminal.com/categories/document-extraction) |
| Auth | None · The weights download from Hugging Face with no account, token or terms to accept. The repository isn't gated (checked 2026-10-30). It moved from SeerRay-Lab/Xiaomi-OCR-0, which the card and the GitHub README still link and which now redirects here. |
| Pricing | Free (Free) · Free to download and use, commercial use included, under Apache 2.0, the same licence as the base Qwen3.5-0.8B-Base. Xiaomi sells no per-call access to these weights. Running them costs the hardware, a 1.75 GB BF16 safetensors file that runs on a GPU, Apple silicon or a CPU. No inference provider serves it on Hugging Face, and the project Space is a static page with no inference (checked 2026-10-30). |
| x402 | No · Weights you download and run yourself, so there is nothing to pay per call and no payment protocol (checked 2026-10-30). |
| 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) |
| Packages | huggingface: `xiaomi-research/Xiaomi-OCR-0` |
| Source | https://huggingface.co/xiaomi-research/Xiaomi-OCR-0 |
| Docs | https://huggingface.co/xiaomi-research/Xiaomi-OCR-0 |
| llms.txt | not found |
| Last release | 2026-09-29 |
| Surface graded | The open weights at huggingface.co/xiaomi-research/Xiaomi-OCR-0, read from the model card (English), the files and their metadata, the commit history, config, tokenizer, processor and chat template files, the eval results file, and from github.com/xiaomi-research/Xiaomi-OCR-0 the README, INSTALL.md, OLLAMA.md, both SKILL.md files, the MCP server, its installer and requirements, the evaluation guide and its config, and the LICENSE, by raw URL, plus the report's abstract from the Hub's paper page and the runtimes' own code, on 30 October 2026. The technical report's full text couldn't be fetched. Nothing was downloaded or run |
| Model | Qwen3.5-0.8B-Base's architecture unchanged (Qwen3_5ForConditionalGeneration, model type qwen3_5), a 12-layer vision encoder (hidden 768, 16-pixel patches, 2x2 merge) feeding a 24-layer hybrid language model (three Gated DeltaNet linear-attention layers to each full-attention layer, hidden 1,024, vocabulary 248,320) with one multi-token-prediction layer in the config. 873,438,784 parameters, the same count as the base; the card says 0.8B. Trained by Xiaomi with Q-Mask text anchoring, OCR-centric continued pretraining and mixed-task reinforcement learning (Mix-RL) |
| Tasks | Whole-page document parsing to Markdown in reading order, with tables in OTSL and formulas in LaTeX, headers and footers dropped; region recognition for text, table and formula crops; key information extraction to JSON from a schema given in the prompt; and short answers to questions about a document image. Xiaomi advises its two-stage region mode for printed documents and whole-page parsing for scene text, handwriting, calligraphy, historical books and irregular layouts. The card's examples are an English maths page, a handwritten derivation, running-script Chinese calligraphy and a Malaysian receipt |
| Languages | Not stated. The card and README name no languages; the examples and benchmarks are Chinese and English (OmniDocBench has both), with classical Chinese scripts on Chronicles-OCR. The tokenizer is Qwen3.5's 248,320-token vocabulary |
| Files | One model.safetensors, 1,746,937,856 bytes in BF16, plus tokenizer.json (19.99 MB), config, processor and tokenizer configs, chat_template.jinja, a Chinese card, an eval results file, chart images and example inputs; 1.77 GB in all. No pickle files and no Python. Hugging Face lists a SHA-256 for each LFS file, the weights and tokenizer among them, and a git hash for the rest. The weights and configs are unchanged since 29 September 2026 |
| Licence | Apache 2.0 in the card's metadata and its licence line. The Hugging Face repository has no LICENSE file; the GitHub code repository's LICENSE is the Apache 2.0 text with 'Copyright 2026 Xiaomi Corporation'. The base, Qwen/Qwen3.5-0.8B-Base, is Apache 2.0 with its LICENSE file, so the chain adds no terms and commercial use is free. Training labels came partly from other parsers (PaddleOCR-VL-1.6, MinerU2.5-Pro, GLM-OCR, dots.mocr, HunyuanOCR-1.5, TeleOCR, OvisOCR2, Qianfan-OCR), which isn't a licence-chain question under the checklist |
| Runtimes | Native in released Transformers (qwen3_5 in the auto mappings at v5.20.2; Xiaomi's verified pin is 5.17.0), vLLM (Qwen3_5ForConditionalGeneration in the registry at v0.32.0), SGLang (qwen3_5.py at v0.5.22) and llama.cpp (the qwen35 architecture with a Qwen3-VL projector), with no remote code. Ollama through a community BF16 GGUF package (longwayxu/xiaomi-ocr-0:bf16, about 1.8 GB) that Xiaomi's README and OLLAMA.md document as experimental, tested with Ollama 0.35.0. LM Studio couldn't be checked. Community MLX, GGUF and NInfer conversions aren't Xiaomi's |
| Input and output | One image per request with a plain-text task prompt through the chat template (thinking off by default; enable_thinking turns on a think block). The card's prompts are the whole-page document prompt, 'Extract the text in the image.', 'Parse the table in the image into OTSL.', 'Identify the formula in the image and represent it using LATEX format.', and 'Extract key information in the image' followed by a JSON schema. Output is text, Markdown with OTSL tables and LaTeX, plain text, LaTeX, or a JSON object; the repository's postprocess modules turn OTSL into HTML tables and assemble regions into a page. Images are resized to 65,536 to 16,777,216 pixels by the processor; the MCP also caps the long edge at 2,048 px and renders PDFs at 150 DPI, capped at 2,200 px wide. Context 16,384 tokens as Xiaomi documents it for serving (the config carries the base's 262,144 positions), with a 4,096-token default output in the MCP |
| MCP service and Agent Skill | In the GitHub repository. skills/xiaomi-ocr/mcp_ocr_server.py is a stdio JSON-RPC server (version 0.2.0) with four tools, ocr_image (page or region mode), ocr_pdf (page or region, max_pages, dpi), kie_image (optional field names, returns parsed JSON) and vqa_image (question in, short answer out). It takes a local path, a URL or base64, sends images only to the inference server at XIAOMI_OCR_LOCAL_URL and refuses any address that isn't 127.0.0.1, localhost or ::1. In region mode it loads PaddleX's PP-DocLayoutV3 in-process, which may download layout weights on first use. It fetches any image_url it's given with no allow-list. install.sh makes a private .venv, installs six Python packages and writes mcp-config.json, and with --agent=codex registers the server in Codex's configuration. The root SKILL.md is a setup document that tells an agent to install the Skill with npx skills add, choose a backend and run the installer after asking the user's authorisation; the runtime SKILL.md describes the tools and when to use page or region mode |
| Recommended settings | Greedy decoding (temperature 0, top_p 0.8), presence and repetition penalties off (0.0 and 1.0), thinking off through chat_template_kwargs enable_thinking false, max_tokens 16,384 in Xiaomi's evaluation and 4,096 in the MCP and card, with a retry at presence penalty 1.5 when output repeats. Two-stage parsing uses PaddleX PP-DocLayoutV3 at threshold 0.25 in evaluation (0.3 in the MCP) |
| Hardware | No memory figure stated. The card's Transformers example runs on CUDA, Apple MPS or CPU (float32 on CPU). The README's SGLang and vLLM routes are for a compatible GPU, and OLLAMA.md reports runs on Apple silicon and a Linux RTX 4090. The 1.75 GB BF16 file fits 8 GB with a fifth added |
| Training data | About 170 million OCR-centric samples for parsing, KIE and VQA, labelled by an ensemble of eight other OCR models with triplet consensus, render-guided checks where they disagree, sample mining and synthetic data aimed at gaps and recurring errors. No datasets are named, no sizes by source are given and no cut-off is stated (from the card; the report's full text wasn't read) |
| Capabilities | docs.ocr, docs.parse, docs.extract, docs.tables, model.open-weights |
| Tags | open-weights, model, ocr, document-parsing, key-information-extraction, document-vqa, tables, formulas, handwriting, vision, mcp, agent-skill, safetensors, self-hosted, new |
| JSON | https://www.anchorterminal.com/api/v1/tools/xiaomi-ocr-0.json |

## Score breakdown (methodology v0.7, October 2026 research run)

Assessed 2026-10-30 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: low. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. "This run" is each category's share of the 100 points.

| Category | Weight | This run | Score (0–100) | Points |
| --- | --- | --- | --- | --- |
| Capability | 35% | pending | pending | n/a |
| Reach | 25% | 38.5 | 75 | 28.9 |
| Risk | 20% | 30.8 | 65 | 20.0 |
| Agent interface | 10% | 15.4 | 70 | 10.8 |
| Documentation and upkeep | 10% | 15.4 | 60 | 9.2 |
| Negative events | up to −15 | up to −15 | The model card says '95.24 on Real5-OmniDocBench, ranked #1'. Real5-OmniDocBench's own leaderboard, kept by the benchmark's authors, ranks Xiaomi-OCR-0 second at 92.73 behind PaddleOCR-VL-1.6 at 93.19 (read 30 October 2026), and Xiaomi merged that 92.73 into its own repository's eval results on 23 October 2026 while leaving the card's claim in place. A '#1' a first-hand ranking shows false is a deduction of 2 (research/new-2026-10-20/NEWLIST.md). The GitHub README limits the rank to 'the comparison on this page' and says the 95.24 is Xiaomi's two-stage run; proposed for the founder to confirm at landing  | -2 |
| **Total** | | | | **59 → C** |

### Why each score

- Capability: Pending for this listing. Nobody independent has published results for it in at least two areas yet, so its weight is shared across the other four and the total is capped at 61 until they do or our own runs start.
- Reach 75 (checked 2026-10-30): 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, as the checkpoint keeps Qwen3.5's architecture, which released vLLM, SGLang, Transformers and llama.cpp run natively, and Xiaomi documents an Ollama route; 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 and a static project Space.
- Risk 65 (checked 2026-10-30): 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.
- Agent interface 70 (checked 2026-10-30): Read for a document parser, the tool-calling, trained tool calling and structured-output lines stand for what it takes and returns. Xiaomi documents the image, the five task prompts and the Markdown, OTSL, LaTeX and JSON outputs, and ships the converters and an MCP server (25). It reads one image per request (10). JSON for key fields and Markdown with tables are documented with how to ask for them (15). The Jinja template is in the repository (20). Reasoning control scores 0, as thinking is only switched off, and context 0, at the 16,384 tokens Xiaomi documents.
- Documentation and upkeep 60 (checked 2026-10-30): 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 weights and template last changed on 29 September 2026, 31 days ago (15). The one question on the Hub was answered the same day by a Xiaomi Research member (20). It's a first release (5), and the files agree with the card (10).

Fix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (17 items): https://www.anchorterminal.com/fixes/xiaomi-ocr-0.md (JSON https://www.anchorterminal.com/fixes/xiaomi-ocr-0.json)

### What we couldn't check

- Proposed deduction of 2 for the card's 'ranked #1' on Real5-OmniDocBench, which the benchmark's own leaderboard shows as second; the GitHub README qualifies it as Xiaomi's own comparison with its two-stage method, so the founder may read it otherwise
- Capability is pending. The only independent result, Real5-OmniDocBench 92.73, isn't one of ParseBench's five dimensions; if Real5's table TEDS were read as the tables dimension, Capability would rest on that one area
- Ollama is credited on Xiaomi's documented route (README and OLLAMA.md, tested with Ollama 0.35.0) through a community package under a user name (longwayxu/xiaomi-ocr-0:bf16), not Ollama's library; without it the runtimes line is 20
- Unchecked, LM Studio's catalogue and Ollama's library pages, as WebFetch refused hosts not already in the conversation
- Unchecked, the GitHub repository's commit dates and issues, as the GitHub API isn't enabled for it; last change would rise to 20 if the reference code changed after 30 September, and responsiveness reads the Hub only
- Provenance rests on the xiaomi-research organisation that Xiaomi's GitHub repository links; no page on a Xiaomi domain linking it was found, and the Hub verifies neither xiaomi-research nor SeerRay-Lab
- The security programme's 5 is carried from the MiMo-V2.6-Distill reading of 28 October 2026 and wasn't re-read
- The technical report's full text (arXiv 2609.36136) couldn't be fetched, so limitations, languages or a data cut-off it may state weren't read

### Sources

- model card, tasks, prompts, benchmark claims, training data, licence: <https://huggingface.co/xiaomi-research/Xiaomi-OCR-0> (seen 2026-10-30)
- gating, downloads, likes, parameter count, created and last modified, eval results, inference providers (none): <https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0> (seen 2026-10-30)
- files, sizes and hashes, 28 files: <https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0/tree/main?recursive=true> (seen 2026-10-30)
- commit history, 17 commits from 29 September to 29 October 2026: <https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0/commits/main> (seen 2026-10-30)
- four discussions, one question and three merged pull requests, counted by author and date: <https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0/discussions> (seen 2026-10-30)
- config, qwen3_5 architecture: <https://huggingface.co/xiaomi-research/Xiaomi-OCR-0/raw/main/config.json> (seen 2026-10-30)
- chat template: <https://huggingface.co/xiaomi-research/Xiaomi-OCR-0/raw/main/chat_template.jinja> (seen 2026-10-30)
- eval results, Real5-OmniDocBench 92.73 from the leaderboard: <https://huggingface.co/xiaomi-research/Xiaomi-OCR-0/raw/main/.eval_results/real5_omnidocbench.yaml> (seen 2026-10-30)
- technical report abstract and authors: <https://huggingface.co/api/papers/2609.36136> (seen 2026-10-30)
- GitHub README, two-stage evaluation, runtimes, MCP and Skill: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/README.md> (seen 2026-10-30)
- MCP server, tools, loopback check, URL fetching: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/skills/xiaomi-ocr/mcp_ocr_server.py> (seen 2026-10-30)
- runtime Agent Skill, cautions: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/skills/xiaomi-ocr/SKILL.md> (seen 2026-10-30)
- setup Skill document: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/SKILL.md> (seen 2026-10-30)
- install guide, 16,384-token context: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/INSTALL.md> (seen 2026-10-30)
- Ollama route and its validation: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/OLLAMA.md> (seen 2026-10-30)
- evaluation pipeline and generation settings: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/evaluation_pipeline/README.md> (seen 2026-10-30)
- Apache 2.0 text, copyright 2026 Xiaomi Corporation: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/LICENSE> (seen 2026-10-30)
- base model, Apache 2.0, same parameter count: <https://huggingface.co/api/models/Qwen/Qwen3.5-0.8B-Base> (seen 2026-10-30)
- Real5-OmniDocBench leaderboard, Xiaomi-OCR-0 second at 92.73: <https://huggingface.co/datasets/PaddlePaddle/Real5-OmniDocBench> (seen 2026-10-30)
- OmniDocBench leaderboard, no Xiaomi-OCR-0 row: <https://raw.githubusercontent.com/opendatalab/OmniDocBench/main/README.md> (seen 2026-10-30)
- ParseBench leaderboard, no Xiaomi-OCR-0 row: <https://raw.githubusercontent.com/run-llama/ParseBench/main/leaderboard.csv> (seen 2026-10-30)
- vLLM registry, Qwen3_5ForConditionalGeneration: <https://raw.githubusercontent.com/vllm-project/vllm/v0.32.0/vllm/model_executor/models/registry.py> (seen 2026-10-30)
- SGLang Qwen3.5 model: <https://raw.githubusercontent.com/sgl-project/sglang/v0.5.22/python/sglang/srt/models/qwen3_5.py> (seen 2026-10-30)
- Transformers auto mappings, qwen3_5: <https://raw.githubusercontent.com/huggingface/transformers/v5.20.2/src/transformers/models/auto/modeling_auto.py> (seen 2026-10-30)
- llama.cpp qwen35 architecture: <https://raw.githubusercontent.com/ggml-org/llama.cpp/master/src/llama-arch.cpp> (seen 2026-10-30)

## Score history

Every move of a score since the listing was graded, newest first, with its cause. A score can't move without an entry here. JSON: https://www.anchorterminal.com/api/v1/tools/xiaomi-ocr-0/history.json

- 2026-10-30: graded 59 C (methodology 0.7)

## Who's behind it (provenance 58/100, checked 2026-10-30)

| Check | Finding | Points |
| --- | --- | --- |
| Legal entity named | Xiaomi Corporation | 20/20 |
| Domain age | mi.com, no registry record we could read | 0/15 |
| Endpoint on the vendor's domain | no hosted endpoint | n/a |
| Terms of service | nothing hosted, so the 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) licence stands in | 10/10 |
| Privacy policy | nothing hosted, not scored | n/a |
| Status page | not found | 0/10 |
| Changelog | published | 10/10 |
| security.txt | could not be fetched | 0/10 |
| People named | 5 named with their role, none with a public profile | 7/10 |
| Support route | help pages, a community | 5/5 |

The files sit in the xiaomi-research organisation on Hugging Face (Xiaomi Research, 12 members, not verified by the Hub), moved from SeerRay-Lab, another unverified organisation whose tag and members overlap. The GitHub repository under xiaomi-research carries the Apache 2.0 licence with 'Copyright 2026 Xiaomi Corporation', and the report's byline includes ten authors. No page on a Xiaomi domain linking either organisation was found, and Xiaomi's sites answered 403 to robots.txt in the 28 October reading for MiMo.

Nothing is hosted in this listing, so the Apache 2.0 licence stands in for terms of service and no privacy policy is scored.

The changelog is the repository's commit history, 17 commits from 29 September to 29 October 2026, all by loongwayX (Longwei Xu, a member of xiaomi-research and an author of the report) except merged pull requests from Hugging Face staff and PaddlePaddle. The weights, configs and template are unchanged since 29 September.

No SECURITY.md in the GitHub repository (404 at main). Xiaomi's company security centre is carried from the MiMo-V2.6-Distill reading of 28 October 2026 and wasn't re-read.

### Terms and privacy, as read

A reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.

**Terms of service**. Nothing is hosted by the vendor, so there are no terms of service to read. The 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) licence stands in and the check scores in full.


**Privacy policy**. Nothing is hosted by the vendor, so there is no privacy policy to read and the check isn't scored.


## Humans behind the project (researched 2026-10-30 from public pages, not part of the grade)

### Key people

- Lei Jun, Founder, chairman and CEO, Xiaomi
- Lin Bin, Co-founder, vice chairman and executive director, Xiaomi
- Liu De, Co-founder, executive director and senior vice president, Xiaomi
- Xin Chen, First-listed author, Xiaomi-OCR-0 technical report
- Longwei Xu, Author, Xiaomi-OCR-0 technical report, who published the model files on Hugging Face
- Note: the founders, their bios and photos, the company's x account and ownership are carried from data/humans/mimo-v2-6-distill-qwen-9b.json (checked 28 october 2026), the same company; that listing's vendor is xiaomi (mimo team), published by xiaomi's xiaomimimo organisation, so it is a xiaomi listing. www.mi.com and ir.mi.com answered 403 to their robots.txt in that reading, and nothing was fetched from them today. the model card's citation, read on 30 october 2026, lists the report's ten authors as xin chen, anan du, feng feng, pei fu, jian luan, longwei xu, shaojie zhang, hang li, heng qu and cheng tan, with no roles or affiliations; the first-listed author and longwei xu, whose hugging face account (loongwayx, a member of xiaomi-research) made every commit to the model repository, are listed. the others' roles couldn't be sourced from a first-hand page, and no linkedin, x or github account is given for anyone. the files moved from the seerray-lab organisation to xiaomi-research; neither is verified by the hub, and no xiaomi page linking them was found, so neither is given as the company's account. roster may be incomplete. xiaomi is listed on the hong kong exchange, so no investors are given.
- Xiaomi: X https://x.com/Xiaomi

### Ownership and investors

- Ownership: Public company (HKEX: 1810)

### Getting support

- Help: https://github.com/xiaomi-research/Xiaomi-OCR-0
- Community (Hugging Face discussions): https://huggingface.co/xiaomi-research/Xiaomi-OCR-0/discussions
- Sources: https://huggingface.co/xiaomi-research/Xiaomi-OCR-0, https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0/commits/main, https://huggingface.co/api/papers/2609.36136, https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/README.md, https://www.mi.com/global/about/founder/

## Probe metrics

Not measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.

No hosted version of these weights has a price on OpenRouter, so what a task costs is your own hardware and power.

## Strengths

- Tiny, 0.87B parameters in one 1.75 GB BF16 safetensors file, about 2 GB in memory, and runs on GPU, Apple silicon or CPU
- Stock Qwen3.5 architecture, so released vLLM, SGLang, Transformers and llama.cpp load it with no remote code
- Apache 2.0 on an Apache 2.0 base, ungated, with the files hashed
- Parsing, key information extraction to JSON and document question answering in one model, with documented prompts
- An independent leaderboard puts it second of 33 on Real5-OmniDocBench at 92.73, with the best table scores in four of five capture conditions
- A local MCP server with four tools that only talks to a loopback inference server

## Weaknesses

- 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
- No result on ParseBench or OmniDocBench's own leaderboard, so Capability is pending
- No quantised build from Xiaomi; the GGUF, MLX and Ollama packages are other people's and Xiaomi says their accuracy isn't established
- One image per request and a 16,384-token context, so documents are read page by page
- The card names no languages, limitations or context, and there are no safety results or prompt-injection guidance
- The agent setup asks an agent to read and execute a remote SKILL.md that installs packages, and the MCP fetches any image_url it's given



## Before you call it (notes for agents)

1. Serve it with `vllm serve xiaomi-research/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --max-model-len 16384` or `python -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
2. 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
3. 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.`
4. For key fields send `Extract key information in the image` then `Please 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
5. 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
6. 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
7. 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
8. The card and Skill still name SeerRay-Lab/Xiaomi-OCR-0, which redirects to xiaomi-research/Xiaomi-OCR-0

## Get started

Install:

```bash
uv venv --python 3.13 && . .venv/bin/activate
uv pip install "transformers==5.17.0" "torch==2.14.0" "torchvision==0.29.0" pillow
# then AutoProcessor.from_pretrained("xiaomi-research/Xiaomi-OCR-0") and AutoModelForImageTextToText.from_pretrained("xiaomi-research/Xiaomi-OCR-0", dtype=torch.float16)
# processor.apply_chat_template(messages, add_generation_prompt=True, ...) with one image and a task prompt, then model.generate(max_new_tokens=4096, do_sample=False)
```

First request:

```bash
# vllm serve xiaomi-research/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --max-model-len 16384
curl http://127.0.0.1:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"xiaomi-research/Xiaomi-OCR-0","temperature":0,"top_p":0.8,"max_tokens":4096,"chat_template_kwargs":{"enable_thinking":false},"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,..."}},{"type":"text","text":"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."}]}]}'
```

## Similar tools

Ranked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.

| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |
| --- | --- | --- | --- | --- | --- | --- |
| Google Cloud Document AI | BB | 73.9 | 84 | docs.parse, docs.ocr, docs.extract, docs.tables | no | https://www.anchorterminal.com/tools/google-cloud-document-ai.md |
| Amazon Textract | BB | 73.7 | 88 | docs.parse, docs.ocr, docs.extract, docs.tables | no | https://www.anchorterminal.com/tools/amazon-textract.md |
| LandingAI Agentic Document Extraction | B | 69.1 | 218 | docs.parse, docs.extract, docs.tables, docs.ocr | no | https://www.anchorterminal.com/tools/landingai-agentic-document-extraction.md |
| Nemotron 3.5 Parse | B | 66.5 | open-weight #15 | docs.parse, docs.ocr, docs.tables, model.open-weights | no | https://www.anchorterminal.com/tools/nemotron-3-5-parse.md |
| Azure Document Intelligence | B | 66.1 | 342 | docs.parse, docs.ocr, docs.extract, docs.tables | no | https://www.anchorterminal.com/tools/azure-document-intelligence.md |
| Reducto API + MCP | B | 63.1 | 479 | docs.parse, docs.ocr, docs.extract, docs.tables | no | https://www.anchorterminal.com/tools/reducto.md |

## Panel reviews (0)

Reviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .

Desk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md

## Notable

- 15,472 downloads in the last 30 days and 108 likes on Hugging Face on 30 October 2026, a month after release (source: <https://huggingface.co/api/models/xiaomi-research/Xiaomi-OCR-0>)
- Real5-OmniDocBench's own leaderboard, kept by the benchmark's authors in PaddlePaddle's organisation, gives Xiaomi-OCR-0 92.73 overall, second of 33 rows behind PaddleOCR-VL-1.6 at 93.19, with the best table TEDS in four of the five capture conditions. Xiaomi merged that figure into its repository's eval results on 23 October 2026. PaddlePaddle also publishes PaddleOCR-VL (source: <https://huggingface.co/datasets/PaddlePaddle/Real5-OmniDocBench>)
- Xiaomi's card gives 95.24 on Real5-OmniDocBench 'ranked #1', 96.83 on OmniDocBench v1.6 and 87.94 on Wild-OmniDocBench (both 'ranked #2'), all from its own two-stage pipeline with PP-DocLayoutV3 layout detection, and an 83.2 mean over DocVQA, InfoVQA, ChartQA, OCRBench and TextVQA. These are the publisher's numbers, not our measurement (source: <https://huggingface.co/xiaomi-research/Xiaomi-OCR-0>)
- Neither ParseBench's nor OmniDocBench's own leaderboard has a Xiaomi-OCR-0 row on 30 October 2026, so the claim of first place among models under 1B on OmniDocBench v1.6 couldn't be checked (source: <https://raw.githubusercontent.com/opendatalab/OmniDocBench/main/README.md>)
- The GitHub repository ships a stdio MCP server with four tools (ocr_image, ocr_pdf, kie_image, vqa_image) and an Agent Skill, both for a model served locally by vLLM, SGLang or Ollama; the server refuses any inference address that isn't loopback (source: <https://raw.githubusercontent.com/xiaomi-research/Xiaomi-OCR-0/main/skills/xiaomi-ocr/mcp_ocr_server.py>)
- Community conversions exist, none from Xiaomi, among them prithivMLmods' GGUF (13,371 downloads), richardyoung's GGUF, an MLX build, a NInfer package, and Ollama packages under user names (longwayxu, richardyoung). Xiaomi's README says it hasn't evaluated the GGUF builds and that its Ollama checks matched 5 of 7 sample outputs (source: <https://huggingface.co/api/models?search=Xiaomi-OCR-0>)

- Best document parsing, OCR and extraction APIs for AI agents: https://www.anchorterminal.com/best/document-extraction/index.md
- All 144 documents comparisons: https://www.anchorterminal.com/compare/document-extraction/index.md

## Compare

- [Nemotron 3.5 Parse vs Xiaomi-OCR-0](https://www.anchorterminal.com/compare/nemotron-3-5-parse-vs-xiaomi-ocr-0.md): B 66.5 vs C 59
- [Baidu Unlimited-OCR-2 vs Xiaomi-OCR-0](https://www.anchorterminal.com/compare/unlimited-ocr-2-vs-xiaomi-ocr-0.md): D 53.5 vs C 59

## Verify this listing

For the vendor. The badge or a plain link to this page verifies the listing, from a page on mi.com or one of its subdomains, or a page under huggingface.co/xiaomi-research. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{"slug": "xiaomi-ocr-0", "url": "…"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify

HTML badge:

```html
<a href="https://www.anchorterminal.com/tools/xiaomi-ocr-0"><img src="https://www.anchorterminal.com/badges/xiaomi-ocr-0.svg" alt="Xiaomi-OCR-0 on Anchor Terminal" height="20"></a>
```

Markdown badge, for a README:

```markdown
[![Xiaomi-OCR-0 on Anchor Terminal](https://www.anchorterminal.com/badges/xiaomi-ocr-0.svg)](https://www.anchorterminal.com/tools/xiaomi-ocr-0)
```

Plain link:

```html
<a href="https://www.anchorterminal.com/tools/xiaomi-ocr-0">Xiaomi-OCR-0 on Anchor Terminal</a>
```

## Share this listing

For the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Xiaomi-OCR-0 is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.

- Dark: https://www.anchorterminal.com/assets/share/xiaomi-ocr-0-dark.png
- Light: https://www.anchorterminal.com/assets/share/xiaomi-ocr-0-light.png
- Create a video and download its frames: https://www.anchorterminal.com/assets/listing-video/index.html?listing=xiaomi-ocr-0

---

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