MiniCPM-OCR
MiniCPM-V 多模态系列
MiniCPM-OCR 是面向高效文档解析和文字识别的系列模型,首次同时开放解析模型与 System-1 决策模型:
- MiniCPM-OCR 1.0(解析模型):以 1.3B 小参数在 Real5-OmniDocBench(93.68)和 OCRBench v2(54.7)上取得双 SOTA,支持扫描、拍照、弯曲、倾斜、翻拍等复杂场景的高效文档解析。
- MiniCPM-OCR Jev(决策模型):不解析文本,只对文本、公式和表格的解析结果进行质量判别并返回校准概率(JevOCRBench 整体 93.5),帮助开发者评估解析质量、筛选需重点复核的结果。
模型列表
| Checkpoint | 参数量 | 架构 | 任务 |
|---|---|---|---|
| MiniCPM-OCR-1.0 | 1.3B | SigLIP + Qwen3.5,基于 MiniCPM-V 4.6 训练 | 文档解析、识别与字段抽取 |
| MiniCPM-OCR-Jev | 2B | Qwen3.5-2B + 二分类头 | 文本、公式与表格解析质量判别 |
核心特性
MiniCPM-OCR 1.0
- 文档内容识别:覆盖中英文文字、表格、公式、图表、印章与关键信息抽取。
- 整篇文档解析:
minicpmvocrSDK 结合 PP-DocLayoutV3 版面检测与识别服务,按阅读顺序组装 Markdown,将 OTSL 表格转为 HTML,并保留 LaTeX 公式。 - DSpark 加速:通过同版本配套草稿模型进行投机解码,也可使用普通解码。
MiniCPM-OCR Jev
- 区域级质量判别:模型输入为原始区域图片、OCR 候选文本与其渲染图片;带渲染器的服务只需提交原图、候选文本和正确的
category。 - 复核分流:使用业务标注样本校准放行阈值,将低分区域交由人工复核。
- 多候选择优:对同一裁剪区域的多个 OCR 模型结果评分并选择最高分;全部未达到业务阈值时仍可进入复核。
评测表现
| 模型 | 基准 | 发布成绩 |
|---|---|---|
| MiniCPM-OCR 1.0 | Real5-OmniDocBench | 93.68 |
| MiniCPM-OCR 1.0 | OCRBench v2 | 54.7 |
| MiniCPM-OCR Jev | JevOCRBench(整体) | 93.5 |
解析吞吐参考:在 RTX 5090 上,使用 OmniDocBench v1.6 的 1,651 张图片、图片级并发 1 与加速配置,约为 1.2 页/秒。同一页内的区域仍可并发识别,硬件、页面内容与并发设置都会影响速度。
快速开始
先使用官方 Linux x86_64 / NVIDIA 配方, 已在 RTX 5090 32 GB 上验证;使用 Python 3.12、≥580 驱动(CUDA 13),预留至少 40 GB 磁盘。SDK 与识别后端运行在独立环境中。
vLLM
使用仓库脚本安装匹配的推理后端:
Bash
git clone https://github.com/OpenBMB/MiniCPM-OCR.git
cd MiniCPM-OCR
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install -y gcc-13 g++-13 libdw-dev libelf-dev
bash scripts/install.sh vllm
在仓库根目录另开终端启动服务:
Bash
source .venv-vllm/bin/activate
export CC=gcc-13 CXX=g++-13
export CUDA_HOME="$(python -c 'import sysconfig; print(sysconfig.get_path("purelib") + "/nvidia/cu13")')"
export PATH="$CUDA_HOME/bin:$PATH"
vllm serve openbmb/MiniCPM-OCR-1.0 \
--served-model-name minicpm-ocr \
--host 127.0.0.1 \
--port 18499 \
--max-model-len 40960 \
--max-num-batched-tokens 40960 \
--max-num-seqs 32 \
--limit-mm-per-prompt '{"image":36,"video":0}' \
--attention-backend FLASH_ATTN \
--mm-encoder-attn-backend FLASH_ATTN \
--mm-processor-kwargs '{"downsample_mode":"4x"}' \
--gpu-memory-utilization 0.85 \
--trust-request-mm-kwargs \
--speculative-config '{
"method": "dspark",
"model": "openbmb/MiniCPM-OCR-1.0-DSpark",
"num_speculative_tokens": 15,
"enable_adaptive_verification": false
}' \
--default-chat-template-kwargs '{"enable_thinking":false}'
发送测试请求,确认服务返回 minicpm-ocr:
Bash
curl -fsS http://127.0.0.1:18499/v1/models
命令通过配套草稿模型启用 DSpark。使用普通解码时,删除整个 --speculative-config 参数及 JSON 值。完整后端设置与排障见部署。
CLI
保持识别服务运行,在仓库根目录创建独立的 SDK 环境,安装并解析 doc.pdf:
Bash
pip install uv
uv venv .minicpm-ocr --python 3.12 --seed
source .minicpm-ocr/bin/activate
python -m pip install "minicpm-ocr[all]==1.0.2"
python -m pip install "paddlepaddle-gpu==3.3.0" \
-i https://www.paddlepaddle.org.cn/packages/stable/cu129/
minicpmvocr parse \
--device cuda:0 \
--server-url http://127.0.0.1:18499 \
--model minicpm-ocr \
--input doc.pdf \
--output doc.md
SDK 会自动补全缺失的版面模型。打开 doc.md 查看解析结果;单区域识别与 Jev 质量判别分别见识别推理和 Jev 推理。
相关资源
| 主题 | 入口 |
|---|---|
| 代码仓库与发布说明 | OpenBMB/MiniCPM-OCR |
| 在线体验 | MiniCPM-OCR Demo |
| API 接入 | API |
| 官方文档 | SDK |
| 评测与复现 | OCR 1.0 / Jev / 复现指南 / JevOCRBench |
| 微调 | MiniCPM-OCR |
| 部署 | MiniCPM-OCR 部署指南 |
| 推理 | MiniCPM-OCR 推理指南 |
| 量化 | MiniCPM-OCR 量化指南 |
| 模型权重 | OCR 1.0 / Jev |