把一份上百页的招股书或专利塞进视觉语言模型,显卡往往比人先崩溃。2026 年 10 月 27 日,百度在 GitHub 的 baidu/Unlimited-OCR 仓库正式发布 Unlimited OCR 2(又称 Unlimited OCR Works 2),代码采用 MIT 开源协议,模型权重同步上架 Hugging Face 的 baidu/Unlimited-OCR-2。这距离百度在 2026 年 6 月 22 日发布初代论文(arXiv:2606.23050,基于 R-SWA 机制、支持数十页与 32K 最大长度)刚好过去四个月。新版直接把目标钉死在百页级文档解析上,但细看它的底层机制与部署配置,你会发现:它用注意力裁剪驯服了解码显存,却在工程落地上做了一次相当现实的妥协。

512 Tokens 的账本与 10 页窗口的代价

传统视觉大模型一碰到几十上百页的 PDF,就会撞上三堵墙——KV Cache 显存随页数线性甚至平方级暴涨、跨页表格与段落断裂、生成退化陷入重复死循环。

百页长文档按10页窗口分块送入高规格显存加速卡(剖面示意)
百页长文档按10页窗口分块送入高规格显存加速卡(剖面示意)

Unlimited OCR 2 的解法是把初代的 R-SWA 升级为稀疏参考滑动窗口注意力(SR-SWA)。模型不再死记硬背前面几十页的全部视觉和文本特征,而是只维护一个固定的工作参考集(例如 512 tokens)。无论文档翻到第 20 页还是第 100 页,每一步解码的延迟和显存占用都能保持近乎恒定。官方宣称它在数十页基准 MPDocBench 和百页级基准 MarathonDocBench 上拿到了最高分,不过公开的 README 里并没有直接放出具体跑分表格,技术报告还躺在 Git LFS 里。

Unlimited OCR 2 的 SR-SWA 滑动窗口与跨页代价 前序 10 页窗口 第 1-10 页输入 切分图像与解析 SR-SWA 稀疏参考 512 tokens 复用前一窗口 KV 尾部 解码步显存与延迟恒定 当前 10 页窗口 第 11-20 页接力 A800 (80GB) 测例 窗口边界折中 缩窗口可降峰值显存 易伤跨窗口表格合并 注:解码器每步显存恒定,不等于端到端总内存(含高清图像切片、页面缓冲、并发队列)恒定。

账面上的数字很漂亮,但看开源项目不能只看论文摘要,得看它的部署脚本怎么写。

在官方给出的实际部署示例里,长文档并不是一口气塞进去的,而是按 10 页一个窗口(10-page windows)切开处理,同时复用前一个窗口的 KV 尾部来保持上下文衔接,公开测试环境直接用上了 80GB 显存的 A800 GPU。

解码步显存恒定,绝不等于端到端总显存便宜。

我不太买账的是把注意力裁剪包装成无限视野的宣传口径。在工程落地上,图像切片、高清页面缓冲和并发队列全都要吃内存;更棘手的是窗口大小的二选一难题:你如果为了省显存把 10 页窗口缩得更小,跨过第 10 页和第 11 页交界处的长表格与段落合并就会受损。早年 PC 内存不够时,程序员靠虚拟内存分页把大程序跑起来,代价是频繁换页时的卡顿与状态割裂;今天的百页 OCR 依然在给物理显存交同样的买路钱。

  • 风险.把 10 页滑动窗口进一步调小虽能压低峰值显存,但会直接损伤跨窗口边界的段落衔接与跨页大表格合并精度。

同门 96.34 分珠玉在前,为什么还要另起炉灶

不少技术团队看到百度又发了一个文档大模型,第一反应是拿它去替换手里现有的解析管线。这恰恰踩进了“一个大模型通吃所有 PDF”的误区。

四款解析工具各司其职,按参数门槛与文档类型排兵布阵(示意图)
四款解析工具各司其职,按参数门槛与文档类型排兵布阵(示意图)

去翻一下公开基准 OmniDocBench 的 v1.6_full 综合解析榜单,你会看到一个很微妙的排位。百度自家的 PaddleOCR-VL-1.6(仅 0.9B 参数)拿到了 96.34 分,OpenDataLab 的 MinerU2.5-Pro(1.2B 参数,需 8GB+ 显存)拿到了 95.75 分,而初代 Unlimited-OCR 的得分是 94.00 分。

OmniDocBench (v1.6_full) 综合跑分与工具分工 PaddleOCR-VL-1.6 0.9B 参数 | 扫描件与跨页表 96.34 MinerU2.5-Pro 1.2B (8GB+显存) | 复杂科研PDF 95.75 初代 Unlimited-OCR 32K 长度 | 长距离上下文基线 94.00

韩非子讲“一手独拍,虽疾无声”,技术工具的排兵布阵也是同理,单靠一个重型长窗口模型拍不响整条数据流水线。百度内部已经有 96.34 分的小钢炮 PaddleOCR-VL-1.6,之所以还要单独开源一条 Unlimited OCR 2 路线,是因为两者的主战场根本不在一个维度上。

解析工具核心参数 / 资源门槛最优适用场景
PaddleOCR-VL-1.60.9B 参数扫描件单页高精度还原与常规跨页表格合并
MinerU2.5-Pro1.2B 参数 / 8GB+ 显存多栏公式密集的复杂科研 PDF 解析
IBM Docling轻量级原生解析自带文本层的原生 PDF 低成本批量吞吐
Unlimited OCR 2A800 (80GB) 官方测试级招股书、长篇专利等百页级上下文连续重建

如果你的业务是每天清洗几万份自带文本层的普通办公 PDF,用 IBM 开源的 Docling 就够了;如果追求单页扫描件极限精度,0.9B 的同门师兄反而更轻更快。Unlimited OCR 2 的唯一不可替代性,在于把散落在几十页里的章节层级、跨页长表和上下文编号串成一棵完整的结构树。

进生产环境前,先查初代留下的三道旧伤

模型在基准测试上拿第一是一回事,放到企业知识库管线里昼夜不停地跑是另一回事。

接入生产管线前需排查死循环、页码错位与假成功码三道旧伤(示意图)
接入生产管线前需排查死循环、页码错位与假成功码三道旧伤(示意图)

我更在意的是初代版本在 GitHub Issue 和第三方实测里暴露出的那些工程暗礁。只要看看社区在初代上踩过的坑,你就知道验收 Unlimited OCR 2 时该往哪里使劲了:

  • 生成死循环(Issue #84):2026 年 7 月 26 日有开发者反馈,模型在解析包含专利序列的文档时,会把序列错误转换成巨型 HTML 表格,直接触发逃逸重复拦截的生成死循环。
  • 页分隔符丢失(Issue #107):2026 年 10 月 18 日的报告指出,无论在 Transformers 还是 vLLM 推理后端下,模型都会出现多页分隔符丢失或错位——对需要按页码做引用溯源的 RAG 系统来说,页码错位意味着检索出来的证据直接失效。
  • 报错却返回成功码(Issue #103):2026 年 10 月 15 日暴露的脚本漏洞显示,当推理请求全部失败时,脚本依然可能返回代表成功的退出码,导致自动化流水线把空结果当成正常数据往下游传。

除了官方仓库的报障,第三方开发者 Omar Kamal Hosney 曾在 24GB 显存的 RTX 4090 上用 SGLang 实测过初代模型。在英文表格和学术排版上它的还原度确实漂亮,但一碰到 39 页的历史阿拉伯语扫描件,字符准确率就掉到了 60–80%,其中 10 页还莫名其妙混入了杂散的中日韩(CJK)字符,并伴随着 2 次生成死循环。

  • 建议.企业团队在把 Unlimited OCR 2 接入生产管线前,务必拿 Issue #84 的长序列转 HTML 表和 Issue #107 的跨页分隔符做一次回归压测。

眼下外部还没有人拿出它在同硬件条件下与 PaddleOCR-VL-1.6、MinerU 2.5 的百页端到端独立横评。回看那份被百页招股书撑爆显存的报警日志,Unlimited OCR 2 确实递出了一把能切开长卷的快刀;但刀刃在跨过第 10 页窗口交界处时会不会卷刃,还得看社区第一波真实长表的复测结果。