将一份 300 页的法律摘要或一本装订好的年度报告放入大多数 OCR 流水线中,软件会悄无声息地将其切分成块。第一页,处理,清空内存。第二页,处理,清空内存。当系统处理到最后的附录时,它从引言中可能获取到的任何上下文早已消失殆尽。脚注变成了孤儿。跨页分割的表格失去了结构。跨页延续的标题被错误标记。结果是一个缝合起来的文本文件,必须由人工重新组装。

百度认为这种工作流程从根本上是有缺陷的。他们的解决方案是 Unlimited OCR,这是一种旨在单次前向传递中摄取海量多页文档,且不会引发通常会出现的 GPU 显存爆炸的架构。秘诀在于一种全新的注意力机制,它对待内存的方式不再像硬盘,而更像人类的工作记忆:将源材料放在眼前,记住你刚刚写了什么,并让遥远的过去逐渐淡去。

为什么长文档会毁掉标准 OCR

要理解解决方案,首先需要了解传统的端到端 OCR 系统在何处崩溃。

大多数现代 OCR 流水线使用大语言模型作为其解码器。当模型阅读页面并生成文本时,它会存储被称为 KV cache 的内部表示——本质上是键(keys)和值(values)的运行日志,帮助模型跟踪已经说过的话。问题在于,这个“日志”会随着每一行新输出的生成而线性增长。处理十页,缓存就有十页深。处理一百页,它会膨胀到数十万个 token,吞噬 VRAM 并将生成速度拖慢到爬行。

工程师们应对这一问题的方法就是干脆不去解决它。他们将文档切割成单页,独立运行每一页,并在每一步之间重置 KV cache。这虽然维持了基本运行,但也剥夺了模型的任何连续性。一个从第三页开始并在第四页结束的段落会被切断。跨页表格格式会瓦解。对先前章节的引用会变成断开的链接,因为解码器对之前的内容没有持久记忆。模型并不是在真正阅读文档,而是在进行一系列孤立的闪卡练习。

人类的技巧:参考滑动窗口注意力机制

百度的研究人员通过借鉴人类认知的方式来解决这个问题。想想手动从书中抄录一段文字。你并不会在脑海中保留之前抄录过的每一个句子。你扫一眼原文,看看你刚刚写的最后几个字,然后继续。你的工作记忆很小,但因为源文本就开在你的面前,这项任务变得毫不费力。

参考滑动窗口注意力机制(Reference Sliding Window Attention,简称 R-SWA)将这种直觉正式化。

在底层,KV cache 变成了一个固定长度的队列。当模型生成新 token 时,它能完全看到“参考 token”(即原始视觉图像嵌入和初始提示词),但它只回看自己亲自生成的最后 128 个 token。仅此而已。无论模型是在第一页还是第五十页,其自身输出历史的内存占用都保持固定。缓存不会增长,而是循环利用。

这是一种