OpenBMB 于 2026 年 10 月 27 日发布了用于判定现有 OCR 结果的 2B 模型 MiniCPM-OCR Jev。它针对文本、公式和表格区域,为候选识别结果的正确性给出 0~1 的分数,用于缩小人工审核范围或从多个候选中选出一个。

结果

据 OpenBMB 的模型指南,MiniCPM-OCR Jev 在 JevOCRBench 上衡量正误区分能力的 AUROC 的 100 倍值为 93.6。这种做法是在现有 OCR 后接入小型 2B 模型,辅助审核与候选重选。下方两表将官方 PNG 中的公布值分为 Jev 系列与通用模型列出。

另一份官方 SVG 将 Jev 系列标为“Noul”设置(无详细说明),通用模型则使用判定标准指令,因此比较系列间分差时也需考虑评估设置。SVG 中 MiniCPM 一行的数值为 93.5·94.5·93.1·91.0,与 PNG 不同,下表仅采用 PNG 数值。

参数标记中,B 表示 10 亿,A 表示实际激活的参数量。

表:JevOCRBench 整体及各类别判定性能 — Jev 系列

条件:JevOCRBench 2,267 条,OpenBMB 官方 PNG 公布值

单位:AUROC 的 100 倍值

结果
模型参数量整体文本公式表格
JEV 35B·A3B35B·A3B90.191.688.989.6
MiniCPM-OCR Jev2B93.694.693.191.1
JEV-VL 27B27B94.096.390.791.6

表:JevOCRBench 整体及各类别判定性能 — 通用模型

条件:JevOCRBench 2,267 条,OpenBMB 官方 PNG 公布值

单位:AUROC 的 100 倍值

各类别判定 AUROC (AUROC 的 100 倍值)Qwen3.5 2B: 文本 50.7, 公式 50.2, 表格 50.6; Qwen3.5 4B: 文本 73.3, 公式 65.3, 表格 73.9; Qwen3.5 9B: 文本 75.9, 公式 67.7, 表格 73.4; Qwen3.5 35B·A3B: 文本 91.1, 公式 87.0, 表格 88.3; Gemma 4 31B: 文本 91.0, 公式 90.8, 表格 87.7; Qwen3.5 397B·A17B: 文本 95.4, 公式 91.8, 表格 91.4; Qwen3.7-Plus: 文本 95.8, 公式 91.7, 表格 93.0; Kimi K3: 文本 97.1, 公式 96.0, 表格 97.0; Gemini 3.8 Flash: 文本 97.2, 公式 98.0, 表格 95.7文本公式表格Qwen3.5 2B50.750.250.6Qwen3.5 4B73.365.373.9Qwen3.5 9B75.967.773.4Qwen3.5 35B·A3B91.187.088.3Gemma 4 31B91.090.887.7Qwen3.5 397B·A17B95.491.891.4Qwen3.7-Plus95.891.793.0Kimi K397.196.097.0Gemini 3.8 Flash97.298.095.7
各类别判定 AUROC (AUROC 的 100 倍值)
结果
模型参数量整体文本公式表格
Qwen3.5 2B2B50.650.750.250.6
Qwen3.5 4B4B69.973.365.373.9
Qwen3.5 9B9B72.075.967.773.4
Qwen3.5 35B·A3B35B·A3B89.891.187.088.3
Gemma 4 31B31B90.591.090.887.7
Qwen3.5 397B·A17B397B·A17B93.895.491.891.4
Qwen3.7-Plus未公开94.395.891.793.0
Kimi K32.8T·A104B96.997.196.097.0
Gemini 3.8 Flash未公开97.197.298.095.7

在公布值中,MiniCPM-OCR Jev 超过了 JEV-35B-A3B 的 90.1,比 Qwen3.5-397B-A17B 的 93.8 低 0.2 分。额外训练前的基础模型 Qwen3.5-2B 为 50.6。分类别看,MiniCPM-OCR Jev 在文本上最高,在表格上最低。

测量方法

评估使用 OpenBMB 构建的 JevOCRBench 数据集。其中有中英文数据 2,267 条,文本占 47.7%、公式占 24.7%、表格占 27.6%,每条记录包含原始区域图像、候选文本、候选渲染图像和人工正误标注。错误候选取自顶尖 OCR 模型的实际错误输出,并由人工标注。评分输入固定为原始区域图像 → 候选文本 → 候选文本渲染图像这三项,指标为衡量正误区分能力的 AUROC。

OpenBMB 的解析器交叉评估 表明,即使更换将 OCR 结果结构化的解析器,判定性能也没有明显波动。实验对从 JevOCRBench 随机抽取的同一组 200 个样本分别运行四种解析器,再由人工标注正误。

表:各解析器的判定性能

条件:从 JevOCRBench 随机抽取的同一组 200 个样本,四种解析器独立运行,OpenBMB 自行评估

单位:AUROC 的 100 倍值

测量方法
候选解析器MiniCPM-OCR 1.0GLM-OCRPaddleOCR-VL-1.6Xiaomi-OCR-0
AUROC 的 100 倍值92.791.993.493.1

四种解析器的结果差距在 1.5 分以内。

为何存在这些差异

MiniCPM-OCR Jev 基于 Qwen3.5-2B 训练,保留了将图像转换为特征的视觉编码器,以及负责语言处理的核心神经网络——语言骨干网络,同时将 lm_head 替换为仅区分正确与错误的二分类头。

评分流程分为预检查 → 候选文本渲染 → 模型计算这 3 个阶段,预检查会验证公式块的 LaTeX 语法。其方式是将候选渲染为图像,与原始区域图像并排比较。OpenBMB 部署文档 说明,渲染阶段将候选文本绘制成图像,使模型能够观察布局。

据 OpenBMB 公布的数据,采用相同方式划分文档区域并重选候选后,解析质量优于各解析器单独处理的结果。MiniCPM-OCR Jev 对 MiniCPM-OCR 1.0、Xiaomi OCR、PaddleOCR-VL 1.6 的提升分别为 0.18 分、0.02 分和 0.25 分。这 +0.02~+0.25 分是文档解析总分的提升量,而非判定 AUROC。即使接入同一个判定模型,各解析器的收益也不一致。

表:Jev 候选重选带来的解析质量提升

条件:三种解析器共用 OmniDocBench v1.6 的 PaddleOCR-VL SDK 分块与组装规则,以各解析器单独处理为基线,从另外两个模型的候选中为低置信度块重新选择结果,见 OpenBMB 官方图

单位:提升分数

候选重选带来的解析质量提升 (分)MiniCPM-OCR 1.0: JEV-27B 0.13, JEV-35B-A3B 0.16, MiniCPM-OCR Jev 0.18; Xiaomi OCR: JEV-27B 0.08, JEV-35B-A3B 0.03, MiniCPM-OCR Jev 0.02; PaddleOCR-VL 1.6: JEV-27B 0.38, JEV-35B-A3B 0.25, MiniCPM-OCR Jev 0.25JEV-27BJEV-35B-A3BMiniCPM-OCR JevMiniCPM-OCR 1.00.130.160.18Xiaomi OCR0.080.030.02PaddleOCR-VL 1.60.380.250.25
候选重选带来的解析质量提升 (分)
为何存在这些差异
解析器组JEV-27BJEV-35B-A3BMiniCPM-OCR Jev
MiniCPM-OCR 1.00.130.160.18
Xiaomi OCR0.080.030.02
PaddleOCR-VL 1.60.380.250.25

选择标准

自动通过的阈值应基于自身数据的人工标注,同时检查通过比例与准确率后确定。官方示例图 对内部文档中抽取的 900 张块图像进行人工标注,计算不同免审核通过比例下的准确率。图中法律合同在阈值 0.984 时的免审核通过比例为 85.0%,财务报表在 0.995 时为 56.2%,混合文档在 0.994 时为 35.1%。

若要自行运行,根据官方 Docker/SDK 本地部署指南,需要显存至少 12GB 的 NVIDIA GPU 和 535 及以上版本的驱动。磁盘空间方面,模型计算环境约需 5~9GB,渲染环境约需 1.5GB,权重约需 2.5GB。

若计划将分数绝对值与公开数值直接比较,应使用 Docker 镜像。据 OpenBMB 部署文档,Docker 镜像的渲染与云端 API 相同,而自行安装的 SDK 渲染器虽保持分数排序,绝对值却可能略有差异。

查看响应时,先确认 verdict(判定状态)是否为 scored,并将 0.0 和 -1.0 视为评分失败时的固定值。

category 必须与实际块类型一致。

以下是将部署文档中的单次评分请求改写为 Python 的示例,适用于本地服务已运行且 block.png 为对应文本区域图像的情况。

import base64
from pathlib import Path
import requests

response = requests.post("http://127.0.0.1:8030/v1/rm/score", json={
    "input_form": "ternary",
    "items": [{"case_id": "blk-001", "category": "text",
               "image": base64.b64encode(Path("block.png").read_bytes()).decode(),
               "ocr_text": "the OCR text to be scored"}]
})
response.raise_for_status()
result = response.json()["results"][0]
if result["verdict"] == "scored":
    print(result["prob_yes"])
else:
    print("Scoring failed:", result["verdict"])

部署完成后,将 3 个示例的分数与基准分数比较,确认差值是否在 0.02 以内即可。

候选重选的最终质量取决于现有候选的范围与准确性。

权重与代码以 Apache License 2.0 公开,并提供原始权重和量化权重。部署支持云端 API、Docker 和 SDK。

小型判定模型可以作为辅助审核和重选现有候选的环节,而不是重新执行 OCR。