Xiaomi-OCR-0:小米如何把 Qwen 训练成 0.8B 文档专才

Vibe Tools Expert Team
发布时间
更新时间

想把扫描件、表格或带公式的论文变成可编辑内容,可以看看 Xiaomi-OCR-0。这是小米推出的 0.8B 参数视觉语言模型,既能解析文档,也能从图中提取字段、回答问题。

它的起点是 Qwen3.5-0.8B-Base,训练语料约 1.7 亿条(170M)样本。理解它最简单的办法,是把整个过程看作“培养一位专门处理文件的实习生”:先准备教材,再教他定位文字,随后全面训练,最后用难题考核。官方模型卡给出了这套路线和下面的成绩。

Xiaomi-OCR-0 官方示例:包含密集数学公式的文档页面

图片来源:官方 example_pics/dense-equations.jpg。这是一张输入示例,也是本文三语共用封面。

它能处理哪些文件任务?

任务你给它什么希望得到什么
文档解析一页论文、扫描件或拍照文档按阅读顺序组织的内容,包含文本、表格和公式
KIE:关键信息抽取一张文档图片和需要的字段结构化字段,例如按指定 JSON 格式输出
OCR-VQA:围绕文字的视觉问答文档图片和一个问题根据图片内容回答问题

模型卡强调了扫描、扭曲、拍照、倾斜等文档的处理能力,也列出了历史手写与书法成绩。可以把它理解为一个小型文档助手:抄内容、找字段、答问题,共用一个模型。

整页解析和区域模式要分开看。官方 Transformers 示例直接处理整页图片;Ollama 指南还提供区域模式,后者需要额外的 layout 依赖。

从 Qwen 训练出来,到底是什么意思?

Xiaomi-OCR-0 中文训练流程:基座、数据引擎、Q-Mask、CPT、Mix-RL

图由 Vibe Tools 根据官方模型卡绘制。箭头表示讲解顺序;数据引擎为训练提供语料。

1. 基座:招进来一位有通用能力的实习生

Qwen3.5-0.8B-Base 是训练起点。 小米在它已有能力的基础上继续训练,让参数更适合 OCR 和文档理解任务。

类比一下:你招到一位有通识基础的实习生,接下来要把他培养成能处理合同、论文和票据的人。这不等于说基座完全不会看文档,而是后续训练让它更专注、更熟练。

2. 数据引擎:给实习生准备可靠教材

约 170M 样本覆盖文档解析和围绕 OCR 的理解任务。难点不只是收集文件,还要给文本、表格、公式配上可靠答案。

官方的数据引擎可以拆成四个容易理解的动作:

  • 找多位老师批改。 异构专家池生成候选标注;ETC(三方共识)按整个专家池的一致程度排序,选出三位专家达成共识的子集,再把不确定样本送去精炼。它比简单地让某一个模型充当唯一答案来源更稳妥。
  • 把答案还原成图。 专家意见不一致时,把候选标注重新渲染成图片,与原图区域比较。表格行列错位、公式结构出错,便更容易被发现。
  • 挑值得练的题。 结合专家一致度、模型自一致性、语义聚类和已验证的失败模式来筛样本。
  • 缺什么就补什么。 覆盖驱动合成补齐结构、样式、字形、领域;失败驱动合成针对训练中反复出现的错误。

模型卡列出的专家包括 PaddleOCR-VL-1.6、MinerU2.5-Pro、GLM-OCR、dots.mocr、HunyuanOCR-1.5、TeleOCR、OvisOCR2 和 Qianfan-OCR。可以把这一步想成:老师共同出教材,争议题先检查,学生老错的题再单独加练。

3. Q-Mask:不仅认出字,还要知道字在哪里

Q-Mask 做的是细粒度文字与位置对齐。

实习生抄出了一个金额,还得能指出它在原件的哪个位置。否则,到了找字段、区分表格单元格时,就容易混淆。这个类比解释了“文本锚定”的目标;具体机制以官方报告为准。

4. CPT:先做全面的文档训练

CPT 是 Continued Pre-training,也就是继续预训练。官方把这个阶段用于建立广泛的 OCR 多任务能力。

这相当于让实习生轮岗:文本、表格、公式和文档问答都练到,先建立共同的基本功。

5. Mix-RL:用能核对答案的难题继续提高

Mix-RL 是混合任务强化学习。它在难样本上使用可验证奖励,继续提高模型能力。

类比就是轮岗后的实战考核:题更难,做完有可核对的反馈。CPT 提供基础,Mix-RL 再围绕难题改进。这也解释了为什么它们承担不同的作用。

成绩怎么看:小模型的解析很强,理解还有差距

下面是官方模型卡公布的主要结果,排名也采用该模型卡的表述。

基准Xiaomi-OCR-0 成绩对应任务
OmniDocBench v1.696.83,第 2文档解析
Wild-OmniDocBench87.94,第 2复杂真实场景文档解析
Real5-OmniDocBench95.24,第 1文档解析
UniMER-Test97.84公式识别
PubTabNet92.27表格识别
Chronicles-OCR Mature Scripts73隶、草、行、楷等历史手写与书法;Seed 2.0 Pro 为 72
五项 OCR-VQA 平均83.2DocVQA、InfoVQA、ChartQA、OCRBench、TextVQA

和其他解析模型相比

模型参数量OmniDocBench v1.6 ↑Real5 ↑Wild ↑
Xiaomi-OCR-00.8B96.8395.2487.94
TeleOCR1.2B96.87—88.53
OvisOCR20.8B96.5892.2987.91
PaddleOCR-VL-1.60.9B96.3393.1987.36
MinerU2.5-Pro1.2B95.7588.9487.33
GLM-OCR0.9B95.2290.3285.08

↑ 表示越高越好;“—”表示来源未报告;加粗标出本文主角。

Qwen 基座经过专门训练后提升多少?

模型DocVQAInfoVQAChartQAOCRBenchTextVQA五项平均
Qwen3.5-0.8B88.560.369.577.968.372.9
Qwen3.5-2B92.472.477.085.976.980.9
Xiaomi-OCR-093.175.184.684.678.683.2

五项平均采用 0–100 分制的算术平均。Xiaomi-OCR-0 的平均分高于 Qwen3.5-2B,但并非每一列都更高,例如 OCRBench 为 84.6,对方为 85.9。

CPT 和 Mix-RL 分别贡献了什么?

训练结果解析 Overall(OmniDocBench v1.6)理解 Overall(五项 VQA 平均)
0.8B CPT96.473978.1
0.8B MOPD96.741782.7
0.8B Mix-RL96.827783.2
4B 单任务教师96.974588.1

从 CPT 到 Mix-RL,解析从 96.4739 提高到 96.8277,理解从 78.1 提高到 83.2。MOPD 是使用一个解析教师和一个理解教师的对比方案:它收敛快,较长训练的 Mix-RL 达到了更高峰值。

4B 教师与 0.8B 学生的差距在理解上约为 4.9 分,在解析上约为 0.15 分。这里两个教师各自专攻一个任务,学生同时训练两类任务;同一任务的数据量相同,不能把整个差距只归因于参数量。

还有一个实用发现:理解数据并非越早加入越好。 在分别使用 9%、29%、50% 解析数据的三个阶段,相对各阶段解析基线的变化依次是 −0.330、+0.639、+0.0749。先把解析基础练好,再加入理解训练,更符合官方这组实验的结果。

本地试用:先跑通一张图片

建议先选一张能人工核对的图片,检查文字、公式和阅读顺序,再处理整批文件。官方示例里有密集公式页面,也有下面这样的手写推导。

Xiaomi-OCR-0 官方输入示例:拍摄的手写公式推导

图片来源:官方 example_pics/handwrite-formula.jpg。它展示输入文件类型,输出示例可在模型卡中查看。

路线一:Ollama,配合仓库 MCP 或 Demo

官方将这条路线标为实验性。先安装并启动 Ollama,再拉取约 1.8 GB 的社区 BF16 包,里面包含文本模型和视觉投影器:

ollama pull longwayxu/xiaomi-ocr-0:bf16

接着按仓库 Ollama 指南配置 MCP 服务或浏览器 Demo。它们会自动应用图像预处理、非思考 prompt 和解码设置。只执行 pull 不会配置这些步骤。 指南还覆盖 PDF 解析、KIE、VQA;区域模式另需 layout 依赖。

路线二:Transformers,直接运行整页解析

下面采用模型卡给出的版本组合。先准备环境:

uv venv --python 3.13
source .venv/bin/activate   # Windows: .venv\Scripts\activate
uv pip install "transformers==5.17.0" "torch==2.14.0" "torchvision==0.29.0" pillow

把下面代码保存为 ocr_demo.py,然后执行 python ocr_demo.py。示例使用本文引用的官方仓库 ID,下载一张官方示例图片并解析;也可以将 IMAGE 换成本地图片路径。

import torch
from huggingface_hub import hf_hub_download
from transformers import AutoModelForImageTextToText, AutoProcessor

MODEL = "xiaomi-research/Xiaomi-OCR-0"
# Choose "qianziwen.jpeg" or "dense-equations.jpg".
IMAGE = hf_hub_download(
    repo_id=MODEL,
    filename="example_pics/qianziwen.jpeg",
)
PROMPT = (
    "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."
)

device = (
    "cuda" if torch.cuda.is_available()
    else "mps" if torch.backends.mps.is_available()
    else "cpu"
)
dtype = torch.float32 if device == "cpu" else torch.float16
processor = AutoProcessor.from_pretrained(MODEL)
model = AutoModelForImageTextToText.from_pretrained(
    MODEL, dtype=dtype,
).to(device).eval()

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "url": IMAGE},
        {"type": "text", "text": PROMPT},
    ],
}]
inputs = processor.apply_chat_template(
    messages, tokenize=True, add_generation_prompt=True,
    return_dict=True, return_tensors="pt",
)
inputs = inputs.to(device)

with torch.inference_mode():
    output = model.generate(**inputs, max_new_tokens=4096, do_sample=False)

new_tokens = output[:, inputs["input_ids"].shape[1]:]
print(processor.batch_decode(new_tokens, skip_special_tokens=True)[0])

输出按阅读顺序组织,公式使用 LaTeX,表格使用 OTSL。OTSL 是表格结构表示,不能直接当作普通 Markdown 表格来理解。遇到长文档输出被截断时,应留意示例的 max_new_tokens=4096 设置。

换模型包之前,检查这三件事

  1. 是否带视觉投影器? 图像推理需要它。prithivMLmods 的 GGUF 包另需 Xiaomi-OCR-0.mmproj-bf16.gguf;xzl01 包使用 F16 视觉投影器。
  2. 是否沿用正确的推理设置? Ollama 的 MCP 和 Demo 已处理对应设置,单独拉取权重没有。
  3. 是否把原模型分数套给了转换版? 官方没有评估上述社区 GGUF 转换的精度;社区 NInfer BF16 的速度与输出对比也应到对应包页面查看。

如果你的目标是文档转结构化内容,就从整页解析开始;如果目标是找字段,再尝试 KIE 和指定 JSON schema。先把一张图的输出看明白,再扩大任务规模。

官方资料

博客

最新博客文章

追踪 Vibe Coding Tools 最新的对比、测评与实战技巧。

DeepSeek Super Agent 入门:像给项目请个 AI 助手

DeepSeek Super Agent 能否调度多个 Agent?用 Router、Worker 和子 Agent 的分工、简单任务示例及 3 步上手路线,讲清它适合谁、能做什么,以及怎样检查结果。

Vibe Tools Expert Team
阅读全文
Dessa AI Voice Model:官方试听、开放状态与应用场景

Dessa AI voice model 已公布研究预览,但尚未向普通用户开放。了解官方录音怎么听、四类潜在用途,以及模型下载、API、中文支持和本地运行的当前状态。

Vibe Tools Expert Team
阅读全文
AI 编程工具怎么选:按工作流、预算与可控性比较

按编辑器、终端、自选模型和云端部署场景比较 AI 编程工具,提供官方依据、成本核对方法及可重复的 Next.js 评估任务。

Vibe Tools Expert Team
阅读全文