Jina-OCR-v1开源:570M激活参数 性能吞吐双领跑

模型核心亮点
一款紧凑型端到端文档解析模型正式开源,其总参数规模为3.4B,但解码阶段仅需激活570M参数。在OmniDocBench v1.6和olmOCR-Bench两大权威基准上,该模型分别取得了91.14和83.4的分数,刷新了同级别最佳成绩;在14款主流端到端系统的吞吐实测中,以2.57页/秒的表现领跑全场。
在单张NVIDIA L4显卡上,通过专门设计的推测解码草稿头,模型生成速度几乎翻了一倍,且输出序列与标准自回归解码严格一致,完全没有质量损失。
架构优化细节
该模型延续了DeepSeek-OCR的紧凑视觉编码与MoE解码路线,并针对两个核心点进行了关键改进:
- FastMTP机制:通过单个共享稠密块递归前向生成K=3步候选token,让草稿头的参数量与前瞻深度解耦,不再随着前瞻步数增加而出现参数膨胀。
- GRPO奖励机制:每项奖励由确定性代码对照参考真值计算,按照部分正确的程度分级给分,而非简单的0/1二元判定。
仅通过后训练改进,该模型在olmOCR-Bench上的分数就提升了7.4分,OmniDocBench的各细分维度也实现了全面提升。
模型核心参数
| 组件 | 规格 |
|---|---|
| 视觉编码器 | DeepEncoder (~380M): SAM (80M) → 16x conv → CLIP-L (300M) |
| 视觉 Token | 256 @ 1024x1024 (Base); 256+100n, n ≤ 9 (≤ 1,156/page) |
| 解码器 | DeepSeek-3B-MoE:12 层,d = 1280,64 个路由专家 + 2 个共享专家,top-6 |
| 激活参数 / 总参数 | ~570M / ~3B(解码器);< 1B / ~3.4B(整个模型) |
| 词表 | 129,280 |
| 位置上限 | 32,768 (RoPE, θ = 10^6) |
| MTP 头 | 1 个共享稠密块,递归 K = 3 步(FastMTP) |
训练与数据优化
训练过程中,团队混合了主流公开OCR数据集,并针对性补充了Europeana历史报纸、美国国会图书馆缩微文献、NARA档案等高难度真实排版源。在清洗阶段,先用规则过滤掉死循环与重复退化内容,再用高精度视觉大模型进行单次前向重打标。
针对真实文档中复杂公式和深层表格分布稀疏的问题,团队专门构建了合成数据集,在合成页面中高密度塞入结构化表格和公式,并自带单元测试断言,为强化学习阶段提供充足的训练信号。
后训练流程由监督微调、长尾劣化页面鲁棒性微调以及GRPO强化学习交替迭代完成。GRPO阶段的奖励函数由多个确定性可验证项相乘得到,相当于设置了一票否决机制——任何一项指标得零分,整页产生的梯度就会直接清零。不过重复惩罚项不设下限,避免模型通过死循环复读投机提高局部重合度。
GRPO奖励组件说明
| 组件 | 信号 | 作用 |
|---|---|---|
| 内容 | 混合 LaTeX/HTML 上的归一化编辑距离 | 文本保真度 |
| 公式 | 公式字符串匹配 | 公式正确性 |
| 表格 | TEDS、TEDS-S、表格编辑距离 | 结构还原 |
| 结构有效性 | 花括号配对、标签闭合、表格完整性 | 格式规范 |
| 单元测试 | 基准风格的存在性、顺序、数学与表格测试通过率 | 高密度反馈 |
| 重复与格式 | 重复惩罚、HTML 符合性 | 退化控制 |
公开基准评测结果
在公开基准测试的对比中,该模型在多项指标上超越了多款参数规模更大的竞品:
| 模型 | 参数 | ArXiv | OldScans-Math | Tables | OldScans | Multi-col | LongTiny | Hdr/Ftr | Base | 总分 |
|---|---|---|---|---|---|---|---|---|---|---|
| Gemini 3 Flash | – | 80.1 | 73.6 | 64.6 | 45.8 | 75.3 | 90.3 | 27.4 | – | – |
| Qwen3-VL-235B | 235B/22B | 88.4 | 81.2 | 86.7 | 49.6 | 85.9 | 88.9 | 33.6 | – | – |
| DeepSeek-OCR | 3B/570M | 77.5 | 74.5 | 77.3 | 33.1 | 67.3 | 83.0 | 96.1 | 99.3 | 76.0 |
| dots.mocr | 3B | 85.9 | 85.5 | 90.7 | 48.2 | 85.3 | 81.6 | 94.0 | 99.7 | 83.9 |
| olmOCR-2 | 8B | 82.9 | 82.1 | 84.3 | 48.3 | 84.3 | 81.4 | – | 99.7 | 82.4 |
| LightOnOCR-2 | 1B | 89.6 | 85.6 | 89.0 | 42.2 | 84.8 | 91.4 | 19.7 | 99.6 | 83.2 |
| chandra-ocr-2 | 4B | 86.9 | 89.1 | 92.1 | 51.1 | 82.1 | 93.7 | 91.4 | 99.9 | 85.8 |
| 目标模型 | 3B/570M | 86.1 | 82.3 | 88.8 | 42.6 | 85.5 | 93.2 | 88.7 | 99.9 | 83.4 |
在olmOCR-Bench上,该模型拿到83.4分,比基座DeepSeek-OCR高出7.4分,也超过了8B规模的olmOCR-2。在OmniDocBench v1.6评测中,以570M激活参数拿到91.14分,各项指标全面领先DeepSeek-OCR-2,也超过了参数大得多的Qwen3-VL-235B。
这里需要说明Hdr/Ftr(页眉/页脚)指标:该基准的设计偏向剔除边角杂质,越是主动省略页眉页脚的模型得分越高;老老实实整页转录的系统在这项上反而会扣分。
细分维度评测对比
| 方法 | 参数 | 总分 ↑ | TextEdit ↓ | FormulaCDM ↑ | TableTEDS ↑ | TableTEDS-S ↑ | ROEdit ↓ |
|---|---|---|---|---|---|---|---|
| Gemini 3 Flash | – | 92.62 | 0.066 | 95.16 | 89.29 | 93.51 | 0.172 |
| Qwen3-VL-235B | 235B/22B | 89.78 | 0.063 | 92.55 | 83.07 | 86.75 | 0.166 |
| DeepSeek-OCR-2 | 3B/570M | 90.25 | 0.050 | 91.84 | 83.89 | 87.75 | 0.144 |
| HunyuanOCR-1.5 | 1B | 94.74 | 0.039 | 94.50 | 93.67 | 94.71 | 0.129 |
| PaddleOCR-VL-1.6 | 0.9B | 96.34 | 0.033 | 97.53 | 94.76 | 97.10 | 0.128 |
| 目标模型 | 3B/570M | 91.14 | 0.046 | 93.28 | 84.68 | 89.01 | 0.142 |
L4显卡推测解码实测
在单卡NVIDIA L4、vLLM 0.20.1、并发batch size=1的测试环境中,团队对不同模式下的推测解码效果进行了实测:
| 模式 | k | 输出Token/秒 ↑ | 加速比 S ↑ | 接受率 | τ | c ↓ |
|---|---|---|---|---|---|---|
| Eager | 0 | 42.7 | 1.00x | – | – | 1.00 |
| Eager | 1 | 64.0 | 1.50x | 82.6% | 1.83 | 1.22 |
| Eager | 2 | 77.9 | 1.82x | 69.1% | 2.38 | 1.30 |
| Eager | 3 | 83.1 | 1.95x | 57.6% | 2.73 | 1.40 |
| Graph | 0 | 158.3 | 1.00x | – | – | 1.00 |
| Graph | 1 | 185.6 | 1.17x | 82.9% | 1.83 | 1.56 |
| Graph | 2 | 183.8 | 1.16x | 69.3% | 2.38 | 2.05 |
| Graph | 3 | 172.9 | 1.09x | 57.9% | 2.74 | 2.51 |
测试中的τ代表单次推测平均接受的Token数(含验证带出的bonus token);c=τ/S则代表单个推测步折算成多少步标准自回归。
这里有一条工程经验:基线自回归跑得越快,留给推测解码的边际收益空间就越窄。
测试数据显示,当k=3时,Eager模式下的接受率为57.6%,加速比达到1.95x;而在Graph模式下,最优的前瞻步数为k=1,加速比为1.17x。这是因为Eager模式下CPU调度受限,主模型推理较慢,多猜token可以减少CUDA kernel发射次数;而Graph模式下kernel发射被打包优化,自推理速度很快,多猜token的额外开销超过了收益。
生产部署建议:无法使用CUDA Graph的环境(或轻量Eager实例)直接拉满k=3;已经跑通CUDA Graph环境下,只开k=1。
快速部署与使用
该模型提供了多种使用方式,适配不同的部署场景:
API调用方式
最简单的调用方式是通过文档解析API,只需将文档或网页URL传入对应端点,并附带必要的请求头,即可自动完成抓取、渲染和解析,返回Markdown格式的结果。如果只需要转录多页PDF中的某一页,还可以通过额外的请求头指定页码。
curl "https://example-ocr-api.com/https://example.com/document.pdf" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Respond-With: ocr-model"
也可以直接调用兼容OpenAI接口规范的托管端点,传入图片或PDF链接即可完成解析:
curl https://api.example.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ***" \
-d '{
"model": "ocr-v1",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the provided document image into a clean Markdown format, preserving the natural reading order."},
{"type": "image_url", "image_url": {"url": "https://example.com/document.png"}}
]
}]
}'
Document OCR
支持将扫描页、照片或PDF转成干净Markdown,表格和公式一并保留。团队准备了一个演示demo,方便快速测试效果。
https://example-demo.com/ocr-test
本地私有化部署
如果需要本地私有化部署,模型的权重与自定义建模代码托管在开源平台,加载时需要指定信任远程代码的参数。启用FastMTP推测加速需要vLLM 0.21以上版本,并在启动引擎前注册一次架构。
import sys
from huggingface_hub import snapshot_download
from PIL import Image
from vllm import LLM
sys.path.insert(0, snapshot_download('model-repo/ocr-v1'))
from deepseek_ocr_mtp import DEFAULT_OCR_PROMPT, register, vllm_llm_kwargs, vllm_sampling_params
register()
llm = LLM(**vllm_llm_kwargs(
'model-repo/ocr-v1',
num_speculative_tokens=3,
mtp_heads=1,
mtp_recursive=True))
image = Image.open('document.png').convert('RGB')
outputs = llm.chat(
[{
'role': 'user',
'content': [
{'type': 'image_pil', 'image_pil': image},
{'type': 'text', 'text': DEFAULT_OCR_PROMPT}]}],
sampling_params=vllm_sampling_params(max_tokens=4096),
)
print(outputs[0])

