百度发布了文档识别模型 Unlimited OCR 2,可在一次请求中解析长文档,无需逐页拆分发送。需要处理跨页表格与句子衔接的开发者,可以输入整份文档并利用跨页上下文。

1. 仅参考必要信息,复用页面分组

原有 Unlimited OCR 旨在保持文本工作内存恒定,但文档越长,每个生成步骤就越需要重新参考所有页面的视觉信息。新模型通过仅选择相关信息的稀疏参考滑动窗口注意力(SR-SWA)减轻这一负担。它不再同等程度地回顾整份文档,而是聚焦于与当前页面相关的部分参考信息。

另一种顺序处理方式则减轻了将整份文档持续驻留于 GPU 内存的负担。它将文档分成边界页面重叠的分组,复用保存边界先前计算结果的 KV 缓存,并释放当前分组之外的缓存。虽然只接收一次请求,内部却像翻书一样,仅将所需分组保留在内存中。

2. 按顺序一次传入页面图像

开发者可用 Transformers 快速试用,也可在服务运行中采用百度推荐的 SGLang。按顺序传入多个页面图像文件,即可在一次请求中解析整份文档,并利用页面之间的上下文。

以下是仓库中的多页示例。

pages = [f"your_doc/page_{i}.jpg" for i in range(1, 8)]

text, num_tokens = model.infer_multi(tokenizer, image_files=pages,
                                     output_path="output/multi", save_results=True)

百度在 Python 3.10 和 PyTorch 2.13.0 环境中进行了测试。

测试使用的模型库为 Transformers 4.52.1,GPU 为 NVIDIA A800 80GB。

模型的原始输出不是 Markdown,而是区分文档元素的结构化块字符串。仓库中的后处理工具会整理页面标记、标题层级、表格和坐标,将其转换为评测用 Markdown。

3. 百页评测得分高于对比模型

百度公开的 MarathonDocBench 包含 100 份长度为 103~300 页的文档,以及约 20 万个标注了位置和类型的布局元素。综合得分不仅评估文字识别,还涵盖表格、公式、阅读顺序及跨页结构等。据公司公布的数据,Unlimited OCR 2 得分为 77.06,高于对比模型中最高的 Kimi-K3 的 33.74。

表:MarathonDocBench 综合得分

条件:MarathonDocBench 的 100 份文档(103~300 页),技术报告表 2 中各模型的评测结果,以公司公布数据为准

单位:得分(%)

MarathonDocBench 综合得分对比Unlimited-OCR 2: 综合得分(%) 77.06; Kimi-K3: 综合得分(%) 33.74; Gemini-3.8-Flash: 综合得分(%) 28.61; Qwen-3.8-Flash-Next: 综合得分(%) 27.83; Gemini-3.1-Pro Preview: 综合得分(%) 26.97; Qwen3.8-Max: 综合得分(%) 22.93; Minimax-M3: 综合得分(%) 17.97; DeepSeek-4.1-Flash: 综合得分(%) 12.34; GLM-5.3-Flash: 综合得分(%) 7.51Unlimited-OCR 277.06Kimi-K333.74Gemini-3.8-Flash28.61Qwen-3.8-Flash-Next27.83Gemini-3.1-Pro Preview26.97Qwen3.8-Max22.93Minimax-M317.97DeepSeek-4.1-Flash12.34GLM-5.3-Flash7.51
MarathonDocBench 综合得分对比
百页评测得分高于对比模型
模型综合得分(%)
Unlimited-OCR 277.06
Kimi-K333.74
Gemini-3.8-Flash28.61
Qwen-3.8-Flash-Next27.83
Gemini-3.1-Pro Preview26.97
Qwen3.8-Max22.93
Minimax-M317.97
DeepSeek-4.1-Flash12.34
GLM-5.3-Flash7.51

关键在于,这一结果来自跨页句子和表格丰富的评测。据公司公布的数据,在另一项最多涉及 30 页的 MPDocBench 评测中,该模型的综合得分为 84.59。

4. 通过页面分组降低内存占用,将运行负担转向配置与转换

据公司公布的数据,在百页规模下,逐步生成结果的解码速度为全注意力的 7.0 倍、先前参考方式 R-SWA 的 5.6 倍。这是在将页面图像拆分为小块(tile)进行处理的 Gundam 模式下,以一次处理的输入数量即批大小为 3、每页生成 1,024 个 token 测得的结果。

同一报告的 MarathonDocBench 测量显示,单次请求的 KV 缓存峰值内存占用从标准解码的 47.00GB 降至顺序分组处理的 1.77GB。公司公布,在 16 个并发请求条件下,吞吐量从每秒 360 个 token 增至 1,315 个 token。

开发者可以在一次请求中提交长文档,并降低 GPU 内存负担。相应地,在服务集成时,需要根据文档调整页面分组大小和输出预算,并将结构化输出转换为所需格式。

5. 侧重长文档处理,而非单页最高得分

据公司公布的数据,在单页评测中,下列两个对比模型的得分更高。这体现了与长文档处理不同的选择标准。

表:单页综合得分

条件:技术报告表 3 中的 OmniDocBench v1.6 评测结果,以公司公布数据为准

单位:得分(%)

单页综合得分对比Unlimited-OCR 2: 综合得分(%) 94.02; OvisOCR2: 综合得分(%) 96.47; TeleOCR: 综合得分(%) 96.91Unlimited-OCR 294.02OvisOCR296.47TeleOCR96.91
单页综合得分对比
侧重长文档处理,而非单页最高得分
模型综合得分(%)
Unlimited-OCR 294.02
OvisOCR296.47
TeleOCR96.91

较小的页面分组可降低峰值内存占用,但跨边界块的上下文可能被切断,从而影响合并质量。报告解释,稀疏注意力无法保留整份文档的信息,因此在标题层级等文档级结构理解方面也存在局限。

Unlimited OCR 2 通过抑制随文档长度增长的逐步计算负担,着重将多页解析转变为基于单次请求的服务。