- 人工智能
- 计算机视觉
- OCR
- 多模态
- 大模型
【免费下载链接】Unlimited-OCR-2
MarathonDocBench是百度专为「上百页超长文档 OCR」打造的新基准测试,而Unlimited-OCR-2正是在这张榜单上登顶的新模型。本文带你拆解它凭什么在几十页到上百页文档的"极限耐力赛"里笑到最后,以及背后那颗关键的技术心脏SR-SWA。
一、MarathonDocBench 是什么:上百页文档的"极限耐力"基准
1.1 为什么几十页的基准"不够用"
传统 OCR 评测里,像MPDocBench这类基准通常只覆盖几十页的文档。几十页听起来已经不少,但对现代模型来说,"几十页"和"上百页"完全是两个量级:
- 几十页:序列长度可控,注意力机制还跑得动;
- 上百页:文本与视觉 Token 爆炸式增长,标准的全局注意力开销呈二次方增长,内存和延迟会被直接拖垮。
MarathonDocBench正是为了补齐这块"耐力短板"而生——它专门评测模型在极端上百页文档上的解析能力。"Marathon"(马拉松)这个名字,本身就点明了它的考点:不是比谁跑得快,而是比谁能一直跑到终点。
官方在 README.md 中明确将其定位为"a new benchmark for ultra-long document parsing"(超长文档解析基准),并于 2026/10/27 正式发布。
1.2 榜单看点:两套基准一起考
Unlimited-OCR-2 的 SOTA 成绩,是同时在两类基准上取得的(见 README.md):
| 基准类型 | 代表基准 | 文档规模 | 考察点 |
|---|---|---|---|
| 常规多页 | MPDocBench | 几十页 | 精度与速度平衡 |
| 极限长文档 | MarathonDocBench | 上百页 | 内存、延迟、不崩不截断 |
能同时压住"几十页"和"上百页"两端,才配得上"登顶超长文档 OCR 榜单"的说法。
二、登顶核心:SR-SWA 把超长序列压缩成固定参考集
Unlimited-OCR-2 登顶的真正武器,是SR-SWA(Sparse Reference Sliding Window Attention,稀疏参考滑动窗口注意力)。
2.1 SR-SWA 到底做了什么
一句话概括:它把"超长序列"里文本与视觉的注意力交互,压缩成一个固定大小的"工作参考集"(官方示例为 512 个 token)。
普通模型处理上百页文档时,当前 Token 要和前面所有Token 做注意力,计算量随文档变长而急剧膨胀。SR-SWA 的思路是:
- 不再对整条超长序列做全局注意力;
- 而是只维护一组固定大小的参考窗口;
- 每生成一个 Token,实际"要算"的范围就被锁死在一个常数上。
由此带来的直接收益是:无论文档多长,单步解码延迟和内存占用都几乎保持恒定。这正是"上百页"和"几百页"能拉开差距的根本原因。
2.2 从 Long-Horizon 到 Unlimited-Horizon
这是 README.md 里"从长视野到无限视野"的官方表述。它的含义是:
- 有限上下文窗口内,实现真正的无界(unbounded)文档解析;
- 消除注意力随长度增长带来的二次方复杂度;
- 文档再长,模型"呼吸"也基本不变——这就是 OCR 3.0 时代的口号:From Long- to Unlimited-Horizon Parsing。
三、榜单背后的工程细节:稀疏注意力路由 + MoE
登顶不只靠一个"口号",落地在模型里是一整套精细的稀疏机制。
3.1 稀疏注意力路由:只算"最相关"的块
Unlimited-OCR-2 把超长序列切成一个个块(block),再用一个轻量"路由器"为每个查询挑选最相关的少数块,而不是扫描全部。关键参数都写在 config.json 的sparse_attention_config里:
| 参数 | 取值 | 含义 |
|---|---|---|
sparse_block_size | 32 | 每个块包含的 Token 数 |
sparse_topk_blocks | 16 | 每个查询保留的"最相关块"数量 |
sparse_local_block | 4 | 固定关注的局部块数量(滑窗) |
max_position_embeddings | 131072 | 最大位置上下文(约 128K) |
这套"块级 top-k + 局部滑窗"的组合,在 dash_attention.py 中被解析为实际的块大小、局部窗口与 top-k 数量,是 SR-SWA 能"只算必要部分"的直接实现。
- 核心实现:dash_attention.py、modeling_deepseekv2.py
- 稀疏注意力基座:_sparse_base_impl.py(局部窗口与候选块的联合掩码)
- Triton 加速内核:sparse_gather_triton.py、sparse_gather_e2e_triton.py
3.2 MoE 主干 + 多页推理
- 主干:基于 DeepSeek-V2 风格的MoE(混合专家),含 64 个路由专家 + 2 个共享专家、12 层,
hidden_size1280(见 config.json)。MoE 让"参数大、激活少",进一步压低长序列推理成本。 - 视觉编码:采用
deeplip_b_l(SAM ViT-B + CLIP-L)双塔视觉编码器,图像输入到 1024 分辨率,兼顾文本细节与版面结构。 - 多页推理:
infer_multi允许把一份文档的所有页放进一次请求,模型因此能利用跨页上下文;输出会按输入顺序每页返回一个<PAGE>标记(见 modeling_unlimitedocr.py)。配合每页 Token 上限保护,上百页也能稳定生成、不丢页。
四、新手如何快速体验 Unlimited-OCR-2
对刚接触 OCR 的读者,官方给出两条路径,按 README.md 操作即可:
① Transformers(快速验证,几行代码跑通)
- 依赖:Python 3.10,
torch==2.13.0、transformers==4.52.1,在 NVIDIA A800-80GB 上验证; - 多页:
model.infer_multi(tokenizer, image_files=pages),一次传入整份文档的页面; - 单页:
model.infer(tokenizer, image_file="page_1.jpg"),默认走动态分块(gundam 模式)。
② SGLang(推荐用于线上服务)
- 用仓库自带的定制 wheel:
wheel/sglang-0.5.20.dev13+g75b9b06b02-py3-none-any.whl; - 通过
SGLANG_UOCR_DOC_GUNDAM_PAGE_WINDOW/SGLANG_UOCR_DOC_BASE_PAGE_WINDOW控制每窗页数,对超长文档做"页窗调度",并复用上一窗的 KV 尾部,进一步省内存; - 启动后通过 OpenAI 兼容接口发送请求即可解析整份文档。
小贴士:想省显存,可适当调小页窗;但页窗过小会削弱跨页合并效果(跨越窗口边界的连续区块会丢失上下文),需要在"省内存"与"跨页精度"之间取平衡。
小结:超长文档 OCR 的"耐力冠军"
Unlimited-OCR-2 登顶 MarathonDocBench,靠的不是蛮力,而是一套"把无限变有限"的工程哲学:
- 基准侧:MarathonDocBench 把"上百页"变成可量化的极限耐力考;
- 模型侧:SR-SWA 用固定大小的工作参考集,把注意力开销压成常数;
- 落地侧:稀疏块级路由 + MoE + 多页推理,让上百页既算得动、又算得准。
从几十页到上百页,从"长视野"到"无限视野"——Unlimited-OCR-2 用 MarathonDocBench 这张榜单证明:超长文档 OCR 的时代,已经开始加速奔跑。🏁
延伸阅读:完整架构与推理细节见 README.md 与论文(Unlimited-OCR-2.pdf)。
- 人工智能
- 计算机视觉
- OCR
- 多模态
- 大模型
【免费下载链接】Unlimited-OCR-2
相关推荐
Unlimited-OCR-2-6bit为什么霸榜文档OCR?Unlimited-OCR-2系列评测与榜单解读
Unlimited OCR 2 6bit为什么霸榜文档OCR?Unlimited OCR 2系列评测与榜单解读 Unlimited OCR 2 6bit 是百度
人工智能多模态计算机视觉OCR模型量化本地部署什么是Unlimited-OCR-2?OCR-3.0时代百度无限文档解析模型完整指南
什么是Unlimited OCR 2?OCR 3.0时代百度无限文档解析模型完整指南 Unlimited OCR 2 是百度开源的 超长文档解析模型(OCR 模
人工智能计算机视觉OCR多模态大模型如何批量解析超长PDF文档?Unlimited-OCR-2多页解析最佳实践
如何批量解析超长PDF文档?Unlimited OCR 2多页解析最佳实践 解析几百页的超长 PDF 一直是 OCR 的难题:逐页识别会丢失跨页上下文,塞进单一
人工智能计算机视觉OCR多模态大模型
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考