Unlimited OCR:让模型像人抄书一样,一口气读完整本书

深度解读 OCR 长程解析 百度 DeepSeek-OCR

论文:arXiv:2606.23050 ·《Unlimited OCR Works》· 2026年6月 · 百度
一句话:把 DeepSeek-OCR 的解码器注意力换成 R-SWA,KV cache 恒定不增长,单次前向就能解析几十页文档,OmniDocBench v1.5 还涨了 6 个点。
Unlimited OCR 概念图:AI像人抄书一样一口气读完整本书

📌 30秒看懂

现在的端到端 OCR(以 DeepSeek-OCR 为代表)用 LLM 当解码器,效果好,但有个硬伤:输出越长,KV cache 越大,显存爆、速度还越来越慢。所以没有一个模型能在单次前向里读完十几页,只能一页一页 for 循环、每页清空记忆。百度提出 Unlimited OCR,灵感来自人抄书——只盯着原稿、刚写的几个字、和下一个字,从不回头重读。核心是 R-SWA(Reference Sliding Window Attention),让 KV cache 全程恒定,一次过几十页。OmniDocBench v1.5 拿到 93%,比 DeepSeek-OCR 高 6 分;输出到 6000 token 时速度比 baseline 快 35%。

一、问题:LLM 解码器的"长程诅咒"

人类很擅长一些"看起来很简单"的长程任务:抄几百页书、翻译几小时录音。但恰恰是这些任务,现在的模型做得很差。以 OCR 为例——没有一个现存模型能在单次前向里解析超过十页,它们只能 page-by-page 地循环处理,每翻一页就把记忆清零。

论文一针见血地指出:这种 for 循环范式把一个连贯的长程过程,碎片化成了一堆由外部调度器拼起来的孤立短任务。它能用,但只是工程上的权宜之计,不是通往 AGI 的路。

🔥 根因:KV cache 随输出线性膨胀

用 LLM 当解码器,每生成一个 token 都要把它的 K/V 存进 cache 里。假设视觉:文本压缩比是 1:10,那么 10K 视觉 token(约 20-30 页 1024×1024 的 PDF)解码完需要 10万+ 输出 token。对传统 LLM-OCR 来说,超过 128K 的序列意味着海量的 KV cache 存储和注意力计算——这就是长文档解析迈不过去的坎。

二、灵感:人是怎么抄书的?

Unlimited OCR 架构:Encoder + MoE-LLM 解码器,注意力全为 R-SWA

图2(论文原图):受人类抄书过程启发的 Unlimited OCR 架构——Encoder + MoE-LLM 解码器,所有注意力都是 R-SWA

论文的核心洞察非常朴素也非常妙。想象你正在手抄一本书:你的注意力其实只集中在三个点上——

不会去重读已经抄完的所有内容,而是采用一种"软遗忘"(soft forgetting):久远的输出柔和地淡出记忆,附近的上下文用来追踪进度。作者认为,这正是人能在低认知负荷下持续长程解析的关键。

🧠 这是一种全新的注意力模式

不是标准全注意力——完整历史从未被完全查阅;
也不像线性注意力——因为视觉/参照 token 不参与循环状态更新(那样会把视觉特征越搅越糊,拖垮识别精度)。
正是为了贴近这种自然的注意力流,作者提出了 R-SWA。

三、核心方法:Reference Sliding Window Attention(R-SWA)

R-SWA 示意图:参照 token 全局可见 + 滑动窗口

图1(论文原图):R-SWA 示意。每个生成 token 关注全部参照 token(OCR 里的视觉 token)+ 前 n 个输出 token(默认 128)

R-SWA 把每个 token 的注意力约束在一个两段式窗口里,总宽度 m+n:

这样一来,每个 token 既能把整张图(前缀)当成持久的全局上下文,又只在一个有界的因果窗口里关注已生成的内容——感知全图,同时自主追踪 OCR 进度

R-SWA 直觉概念图:固定参照块 + 流动的最近窗口

AI 生成配图:R-SWA 的直觉——固定的参照块永远点亮,只有一个紧凑的"最近窗口"在流动,远处的输出淡出

KV cache:从线性增长变成常数上界

这是 R-SWA 真正的杀招。对比一下两种注意力的 KV cache 大小(T 为已生成 token 数,Lm 为前缀长度):

Lm + T
DeepSeek-OCR (MHA)
随输出线性膨胀
Lm + n
Unlimited OCR (R-SWA)
常数上界,封顶

标准 MHA 的 cache 随 T 无界增长;而 R-SWA 永远保留完整前缀 Lm,对已生成内容只保留最近 n 个 token,所以总 cache 被 Lm + min(n, T) ≤ Lm + n 牢牢封住。当解码长度 T 远大于窗口 n 时,cache 占用比 ρ(T) ≈ (Lm+n)/T → 0

⚙️ 实现:一个定长队列

KV cache 被实现成一个容量为 m+n 的队列:每生成一个新 token,就把队列里第 (m+1) 个 token 对应的 KV 驱逐出去。这样计算成本和显存占用在整个生成过程中都不会递增

四、架构:站在 DeepSeek-OCR 的肩膀上

Unlimited OCR 直接以 DeepSeek-OCR 为 baseline,改动其实很小——只把解码器里所有的 MHA 换成 R-SWA,其它全部保留

为什么高压缩的 DeepEncoder 对这套方案至关重要?因为视觉 token 不随输出做状态转移——它们只编码一次,在整个长程解析过程中保持静态。视觉 token 越短,前缀 Lm 越小,恒定 KV cache 的"地基"就越省。

五、战绩:又快又准

5.1 精度:OmniDocBench v1.5 涨 6 分

93%
OmniDocBench v1.5
(端到端)
+6%
相比 DeepSeek-OCR
baseline
<0.11
40+ 页编辑距离
(Edit Distance)
97%
40+ 页
Distinct-35

把全部标准注意力换成因果参照式 SWA,不仅没掉点,反而涨了 6 分。这说明模型学会了把历史输出里的有用信息持续"传递"进窗口里——这种软遗忘和人抄书的行为是一致的。

5.2 长文档:20 页起步,40+ 页依然稳

长程解析是 Unlimited OCR 的看家本领。它能在单次前向里 prefill 几十到上百页文档,从第一页连续解析到最后一页,全程 KV cache 固定、输出延迟恒定。论文报告:20 页同时输入效果依然 strong;40+ 页时编辑距离仍 < 0.11、Distinct-35 达 97%。少数重复错误主要是 PDF 里的小字在 Base 模式(1024×1024)下糊了,而不是 R-SWA 在长程里迷了路

5.3 速度:慢不下来,才是真本事

FlashAttention-v3 kernel 延迟对比

图3(论文原图):FlashAttention-v3 kernel 延迟随解码长度的变化。DeepSeek-OCR(MHA)持续上涨,Unlimited OCR(UOW)全程恒定

§6 给了硬核的速度对比(指标:output tokens per second,TPS;理想并发,prefill 固定 10,其它设置全相同)。下面是不同输出长度下的 TPS 上限对比(Table 4):

输出长度DeepSeek-OCRUnlimited OCR
25672297230
51274687715
102474237841
204871677881
307267917882
409664307905
614458237848

读法很清楚:DeepSeek-OCR 的 TPS 随输出变长一路下滑(7468 → 5823),而 Unlimited OCR 全程基本钉在 7800 左右、纹丝不动。到 6000 token 时,DeepSeek-OCR 已经比 Unlimited OCR 慢 35%。kernel 层面还有个细节:DeepSeek-OCR 的 FA3 延迟在 KV cache 跨过某个对齐边界时会突然尖峰一下,R-SWA 没这毛病。

💡 一句话

把"恒定 KV cache"换"几十页一次过",代价是放弃对久远输出的全局注意力。但 OCR 本来就不需要回看十页前抄了啥——这个 trade-off 几乎是免费的

六、局限与展望

⚠️ 还不是"真·无限"

论文很诚实:在有限上下文(如 32K)下,它还做不到真正的无限解析,因为仍受前缀长度制约。DeepEncoder 压缩率已经很高,但页数一多,prefill 还是会变得很长。

七、为什么这篇值得看

🎯 要点回顾

  1. 问题选得准:直指 LLM-OCR 的 KV cache 膨胀这一长程瓶颈,而不是泛泛谈"上下文不够长"。
  2. 方法优雅:没去硬卷训练上下文长度,而是用一个结构上的小改动(换 attention pattern)化解问题。改动量小到"看完拍大腿"。
  3. 双赢:恒定 KV cache 既省显存又稳速度,精度还反而涨了 6 分。
  4. 类比漂亮:"人抄书"的软遗忘把一个工程 trick 讲成了一个认知故事。
  5. 开源:模型权重 + 代码全开(HF / GitHub / ModelScope),可复现。

这是那种典型的"四两拨千斤"工作:用恒定 KV cache 这一个支点,撬动了"一本书一次过"的能力。R-SWA 作为一种通用的参照式解析注意力,往后在 ASR、翻译上大概率还会再露面。

论文链接:arXiv:2606.23050  |  模型:huggingface.co/baidu/Unlimited-OCR  |  代码:github.com/baidu/Unlimited-OCR