alitrack

写了DeepSeek-OCR的他,跳槽百度后开源了一个更好的

上周四晚上,HuggingFace 上出现了一个新模型。名字叫 Unlimited-OCR,作者是百度。

但如果你点开代码,会发现几乎所有文件都带着一个熟悉的标识:DeepSeek。

架构是 DeepSeek-OCR 2 的。Encoder 是 DeepEncoder V2 的。解码器是同一个 3B MoE——只有解码器的注意力层被换掉了。

换个注意力机制不算稀奇。稀奇的是作者。

Unlimited-OCR 的主要作者署名 "YY",真名是魏浩然(Haoran Wei)。他就是 DeepSeek-OCR 系列论文的第一作者。

自己写的代码,换了一家公司,改了一个机制,然后亲手把自己之前创下的记录干掉了。

● ● ●

一个注意力层,换来 6 个百分点

魏浩然只改了一件事:把标准注意力换成 R-SWA(Reference Sliding Window Attention)。

OCR 模型的解码器一边读图一边输出文字。标准注意力要记住所有已生成的 token,KV Cache 随输出长度线性膨胀。一页文档几百个 token 还行,十页、二十页、四十页呢?KV Cache 越来越大,显存撑不住,速度越来越慢。

所以现在的"长文档 OCR"其实是假的——不是一次性读完一本书,而是 for page in pages: ocr(page) 逐页处理。每页清空 KV Cache,前后页面失去上下文连接。

R-SWA 模仿的是人类抄写:你抄书的时候不会反复看前面已经抄过的内容,你只看原文和最近抄的几个字,保持定位就够了。

所以 Unlimited-OCR 让每个新 token 只看两类东西:全部视觉 token(原文,永远可见)+ 最近 128 个已生成的 token(定位用)。其他所有已输出内容,直接软遗忘。

KV Cache 从一条无限上升的斜线变成了一条水平线。

用同一套 Benchmark(OmniDocBench)来测:

Image

不光速度变快、显存省了,精度也全面超过了自己之前的模型。

这很反常。通常来说,注意力能看到的信息越少(128 个 token 远小于全注意力),精度应该下降。但 Unlimited-OCR 反而升了 6 个点。

合理解释是:在长文档 OCR 场景下,标准全注意力的"看到一切"其实是一种注意力稀释。强迫模型在 128 token 局部窗口内集中,反而让识别更精准。

● ● ●

把 DeepSeek 的墙角给挖了?

Unlimited-OCR 开源不到两天,GitHub 就涨到 1300+ star。社区最热门的一条评论是:"卧槽,这一波直接把 DeepSeek 的墙角挖到了。"

严格来说是双向的:魏浩然写了 DeepSeek-OCR(2025.10)和 DeepSeek-OCR 2(2026.01),两篇论文的第一作者都是他。然后他在 2026 年上半年跳到了百度,6 月 22 日以"YY"的代号开源了 Unlimited-OCR。

这件事有意思的地方不在于"百度挖了 DeepSeek 的人"——大厂之间互相挖人并不新鲜。

有意思的是百度的开源策略。Unlimited-OCR 用 MIT 许可证开源,代码和权重全部公开。而 DeepSeek-OCR 2 用的是 Apache 2.0——两者都是宽松许可,但百度选择在 DeepSeek 的基础上改进后直接 MIT 放出,姿态上更激进。

再加上模型托管在 HuggingFace(百度自己的 PaddlePaddle 生态也同步上线了魔搭),所有主流推理引擎(Transformers、vLLM、SGLang、Ollama、llama.cpp)都在支持列表中。这不像传统百度——更像是借鉴了 Llama、Mistral 的开源打法。

● ● ●

我在 Mac 上跑了一下

模型不大:3B 总参数,实际激活的只有 500M。6.36GB 的权重文件,从魔搭下载花了 17 分钟。

我的测试环境是 Mac Studio M3 Ultra,MPS 后端。加载模型只用 1.8 秒。

用 PIL 画的中英文合成图测试,5 秒出一页,英文和中文全部正确,中英混排也没问题。

但真正的 PDF 文档——一篇 arXiv 论文的首页(300 DPI 渲染),识别出前二三十个词后就会进入 token 重复循环。比如 Abstract 正文,前面读对了 "Real-world financial documents report essential information...",到后面就变成 "99, 99, 99..." 无限重复。

这不是图片质量问题——同样的图在 CUDA 上应该完全正常。根本原因是 R-SWA 的自定义 KV Cache(队列式管理)与 Apple 的 MPS 后端存在数值不兼容。

官方预告了 llama.cpp 支持,那才是 Mac 上真正的可用路径。目前,想在 Mac 上跑生产级 OCR 还得等一等。

● ● ●

比模型更有意思的,是 R-SWA 本身

Unlimited-OCR 论文里有一句话很关键:

R-SWA 不是 OCR 专属的技巧。它适用于任何"参考源 + 长输出"的生成任务。

翻译一下:语音识别(音频→文字)、实时翻译、字幕生成、代码补全——凡是需要盯着一个固定源不断输出的场景,R-SWA 都能用。

这就是 Unlimited-OCR 真正值得关注的地方。它不只是又一个 SOTA 模型,而是验证了一种新的注意力范式:不一定"看到更多"就更好,有时候"专注当前"反而更准。

而且这个结论来得很诚实——不是某个实验室从零搞出来的理论突破,而是一个写过 SOTA 模型的人,换了个环境后对自己之前的方案做了反思和改进。


模型地址:github.com/baidu/Unlimited-OCR

论文:arxiv.org/abs/2606.23050