百度OCR让多页处理内存保持恒定
The Decoder··作者 Jonathan Kemper
关键信息
R-SWA 允许每个输出 token 关注全部参考 token,例如图像 token 和提示词,但只回看最近 128 个已生成 token,从而让 KV cache 保持固定而不是线性增长。百度表示,他们把解码器中的标准注意力层全部替换为 R-SWA,而 DeepEncoder 保持冻结,只训练语言模型参数。
资讯摘要
百度研究人员推出了一种名为 Unlimited OCR 的 OCR 模型,可以在一次推理过程中处理几十页文档。研究团队要解决的核心问题是:现有端到端 OCR 系统通常依赖语言模型解码器,而解码器的 KV cache 会随着生成文本变长而不断增长,从而导致内存占用上升、推理速度变慢。现实中,很多系统只能按页循环处理文档,并在每一页结束后重置 cache。百度用一个类比来解释他们的思路:就像人抄书时不会反复回头重读已经写过的所有内容,而是主要关注原文、刚写下的几个字,以及接下来要写的字,旧内容会像被“软遗忘”一样逐渐淡出。支撑这一设计的技术是 Reference Sliding Window Attention,简称 R-SWA。它让生成的 token 仍然可以关注所有参考输入,但对已经生成的输出只保留最近 128 个 token 的可见范围,因此整个过程中的 KV cache 保持恒定。与此同时,百度还避免让视觉 token 受到同样的滑动窗口状态变化影响,因为那样会逐渐模糊图像特征并降低识别效果。
Unlimited OCR 基于开源的 Deepseek OCR 构建,保留了 DeepEncoder,并搭配一个 30 亿参数的 mixture-of-experts 架构,但推理时只有大约 5 亿参数在 सक्रिय状态。百度表示,训练数据约有两百万个文档样本,其中单页数据和多页数据按 9:1 划分,多页数据还是通过把单页样本拼接成 2 到 50 页的文档来合成的。训练时所有数据被打包成 32,000 token 的序列,在 8 组 16 张 Nvidia A800 GPU 上进行了 4,000 步训练,且 DeepEncoder 保持冻结,只更新语言模型参数。根据作者的说法,在 OmniDocBench v1.5 上,该模型的综合得分达到 93%,比 Deepseek OCR 基线高出 6 个百分点,其中表格结构识别提升尤其明显。到了更新的 v1.6 版本,它的得分达到 93.92%,位居端到端系统排名前列。在长程测试中,模型即使处理超过 40 页,错误率仍低于 0.11,而剩余错误被作者归因于 Base 模式下 DeepEncoder 的分辨率上限,而不是上下文丢失。

资讯正文
百度的“Unlimited OCR”通过让记忆像人类遗忘一样运作,一次可处理数十页文档
百度研究人员构建了一种 OCR 模型,能够在一次推理过程中处理数十页文档,无论文本长度如何,内存占用和速度都保持不变。这之所以成为可能,是因为他们重新设计了注意力机制。
百度研究人员在技术报告中写道,目前还没有任何 OCR 模型能在一次通过中处理超过大约十页。瓶颈在于 KV cache——这是语言模型在生成过程中存储所有先前处理过的 token、以便之后查找的缓冲区。
当前的端到端系统把语言模型用作解码器,因此这个缓冲区会随着每一行新文本不断增长。这会推高内存占用,并让生成速度持续下降。实际上,这类系统通常通过一个循环来规避这个问题:逐页处理文档,并在每一步之后重置缓存。
百度用一个类比来描述这个问题。一个人在抄书时,不会重新阅读自己已经写下的全部内容。他们的注意力只放在原文、最近写下的几个字符,以及接下来要写的那个字上。较早的段落会通过一种柔性的遗忘方式淡出。研究人员希望 Unlimited OCR 能模仿这种模式。
固定窗口限制了内存使用
其实现方式是团队称为 Reference Sliding Window Attention(R-SWA)的机制。每个生成的 token 仍然可以看到所有参考 token、视觉图像 token 和提示词。但当涉及先前生成的输出时,它只回看最近 128 个 token。这样一来,KV cache 在整个过程中保持恒定,而不会随着输出长度线性增长。
标准的滑动窗口注意力也会让视觉 token 受到持续的状态变化影响,逐渐模糊图像特征并降低识别效果。R-SWA 让视觉 token 免于这些转变。它们只会被编码一次,并保持不变。
KV cache 的工作方式像一个队列,每来一个新 token,就会挤出最老的那个。对于标准多头注意力来说,随着 token 数量增加,内存使用会无限增长。R-SWA 则把它限制在前缀长度与窗口大小之和这个固定值上。
建立在 Deepseek OCR 之上
Unlimited OCR 建立在开源的 Deepseek OCR 模型之上。百度保留了其中的 DeepEncoder,并搭配一个拥有 30 亿参数的 mixture-of-experts 架构,其中推理时只有大约 5 亿参数处于激活状态。DeepEncoder 会把一张 1024×1024 像素的 PDF 图像压缩到 256 个 token。
两种分辨率模式也被保留下来。“Base”模式用于处理多页文档,“Gundam”模式则使用动态分辨率处理单页文档。解码器中的每一层标准注意力层都被替换为 R-SWA。
训练使用了大约 200 万个文档样本,按单页和多页数据 9:1 的比例划分。单页标注由 Paddle OCR 完成。多页数据则通过把单页合成为 2 到 50 页不等的文档来合成生成。
所有数据都被打包成 32,000 个 token 的序列;训练在 8 组 16 张 Nvidia A800 GPU 上进行了 4,000 步。DeepEncoder 保持冻结,只有语言模型参数被更新。
注意力有限,但得分更高
据作者称,Unlimited OCR 在 OmniDocBench v1.5 文档基准上的总分为 93%,比 Deepseek OCR 基线高出 6 个百分点。该基准衡量多个子任务。纯文本识别错误率按编辑距离(即每个字符所需的更正数量)计算,略有下降。表格结构识别的提升更明显,接近 6 个百分点。在更新的 v1.6 版本上,该模型达到 93.92%,位居端到端系统排行榜首位。
在长程测试中,模型在单次运行里处理多页文档,即使超过 40 页,错误率仍保持在 0.11 以下。作者认为,剩余错误并非来自上下文丢失,而是因为在 Base 模式下,随着文本变得更小,DeepEncoder 的分辨率存在上限。
在单页场景下将窗口限制为 128 个 token 并不会损害准确率,实际上还略有帮助。研究人员怀疑,R-SWA 迫使模型更紧密地聚焦于密集的 OCR 任务,而完整注意力在输出长度增长时则更容易走向发散。
恒定缓存也带来了速度上的收益。在 Base 模式下,Unlimited OCR 的速度达到每秒 5,580 个 token,而 Deepseek OCR 为 4,951 个,提升了 12.7%。在一个假设理想并行性的理论上限比较中,该模型在大约 6,000 个输出 token 时领先基线 35%,而基线的吞吐量会随着长度增加而持续下降。
对于长文档解析这一模型的核心强项,据百度称,它即使在 40 多页时仍能将编辑距离保持在 0.11 以下,Distinct-35 分数达到 97%。出现的错误主要集中在极小字体上,研究人员认为这源于 Base 模式的分辨率限制,而不是 R-SWA 存在任何方向性问题。
但它还不是真正的无限
该模型固定的 32,000 token 上下文长度限制了它能接收多少页内容,因为随着每一页加入,视觉 token 会不断堆叠。百度计划很快训练 128,000 token 的模型,并最终构建一个 prefill 池,让模型像翻书一样自行获取相关的 KV 块。作者还认为,R-SWA 可迁移到其他基于引用的任务,例如语音识别和翻译。
代码和模型权重已发布在 GitHub 和 Hugging Face 上。该模型可在 ModelScope 以及推理引擎 vLLM 和 SGLang 上运行。你也可以在 Hugging Face Spaces 上的演示中试用。
OCR 已成为 AI 领域最活跃的战场之一,模型主要在 token 效率上展开竞争。其吸引力远不止文档识别。由于基于图像的文本所需算力远低于其数字等价形式,这种方法有望扩展语言模型对长聊天记录或大型文档的记忆能力。开发者已经利用这一点来降低 Anthropic 的 Fable 5 的 token 成本。
Deepseek 在今年早些时候也朝这一方向推进,推出了 Deepseek OCR 2,这是一种编码器,它不是严格从左上到右下读取,而是以语义方式重新排列图像信息。它在 OmniDocBench v1.5 上的得分为 91.09%。
Mistral AI 正在借助 Mistral OCR 3 扩大其布局,宣称其在手写体、表单和复杂表格识别方面表现更好。对百度来说,这项工作契合其更广泛的 AI 推进。该公司最近发布了 Ernie 5.1,这是一款多模态模型,在 LMArena 上被评为排名最高的中文模型。
可快速浏览的书籍对新语言模型的训练数据也很有吸引力,这一话题正在引发激烈争论。研究人员已经证明,大语言模型能够几乎逐字复现受版权保护书籍中的段落,例如《哈利·波特》和《霍比特人》。
来源与参考
收录于 2026-07-06