0.8B 干三件事:解析、抽取、问答
Xiaomi-OCR-0 是一个统一的 0.8B 视觉语言模型,基座是 Qwen3.5-0.8B,在约 1.7 亿条以 OCR 为中心的语料上训练,用了 Q-Mask 文本锚定、继续预训练和混合任务强化学习三段流程。它把三件事收进同一个模型:文档解析(输出结构化 Markdown,表格转 HTML、公式转 LaTeX)、关键信息抽取(按字段输出 JSON)和围绕文字的视觉问答。
成绩单值得看一眼:Real5-OmniDocBench 95.24 排第一,OmniDocBench v1.6 拿 96.83、Wild-OmniDocBench 87.94 均列第二,公式识别 UniMER-Test 97.84,表格 PubTabNet 的 TEDS 92.27。五项 OCR 类 VQA 平均 83.2 分,超过 Qwen3.5-2B 的 80.9——而它只有 0.8B。前三个文档解析榜单都走两阶段方法,流程在 evaluation_pipeline 里,看分也要看流程。
三种起法:SGLang、vLLM、Ollama
先拿代码,Python 3.10 以上,然后三选一装运行时。
git clone https://github.com/SeerRay-Lab/Xiaomi-OCR-0.git
cd Xiaomi-OCR-0
SGLang 一路:
python -m sglang.launch_server --model-path SeerRay-Lab/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --context-length 16384
vLLM 一路,效果等价,换参数名:
vllm serve SeerRay-Lab/Xiaomi-OCR-0 --host 127.0.0.1 --port 8000 --max-model-len 16384
起来之后另开一个终端跑浏览器 Demo,它默认把请求发到 127.0.0.1:8000 的兼容 OpenAI 接口:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python demo/server.py --port 8787
打开 127.0.0.1:8787,界面中英双语,整页解析、区域解析、关键信息抽取、视觉问答和 PDF 都在同一页。想跳过运行时:社区 BF16 GGUF 包约 1.8GB,装好 Ollama 后 ollama pull longwayxu/xiaomi-ocr-0:bf16 即可,官方标注实验性。
选整页还是选区域,取决于你的文档有没有稳定版式——这不是参数问题,是场景问题。
MCP 与 Agent Skill:把它变成工具而不是玩具
仓库里 skills/xiaomi-ocr/ 装的是一个 Agent Skill 加 MCP 服务,负责提示词拼装、PDF 与图片预处理、可选的区域检测、并行裁剪推理和输出拼装。不用自己写胶水代码,注册上去 Agent 就能直接调它读文档;手动配置在 INSTALL.md,examples 里有样例。
更省事的路径是让 Agent 自己装。官方给了一句话口令:让 Agent 读取并执行仓库里的 SKILL.md,它会按授权流程建 Python 环境、装依赖、下权重、配运行时、注册 MCP 服务器。代价是权重和版面模型下载量不小,区域模式还要额外装 PaddlePaddle、PaddleX 和 PP-DocLayoutV3。
最后一个建议来自官方文档写的取舍:打印体、版式规整的文档用区域解析,能并发处理,速度快;手写、书法、古籍和不规则版面必须整页解析,区域切错就丢上下文,怎么拼都补不回来。这个判断比调参数重要得多。