Unlimited-OCR:百度开源长文档OCR模型,3B参数刷新端到端SOTA
百度最新开源的 Unlimited-OCR,总参数3B,实际激活只有500M,在大模型时代这个体量几乎可以忽略。但就是这么小的模型,在OmniDocBench v1.5上拿到93.23%的总分,v1.6上进一步提高到93.92%,刷新了端到端SOTA。
更关键的是,它做到了以前所有OCR模型都没做到的事:一口气把40多页文档全部解析出来,不出现记忆丢失,也不会速度下降。
简单来说,它就是一个能一次性读完几十页PDF、不丢内容、不减速的文档解析工具。
核心技术
1. R-SWA(Reference Sliding Window Attention)
标准注意力机制下,KV cache会随输出长度线性增加,内存扛不住、速度越来越慢——不是模型不想记住,而是记不住。
R-SWA模仿人抄书时的注意方式:眼睛盯着原文,只回头看刚写下的几行。每生成一个token,R-SWA都会查看全部"参考token",确保模型一直能看到完整原文;但在输出端,只回溯前面的128个token。
实现上,把所有注意力层换成R-SWA,KV cache变成固定大小的队列,产生新token时最旧的被挤出去。输出1万个token和10万个token,内存占用完全一样。
2. DeepEncoder
配合R-SWA的是继承自DeepSeek-OCR的DeepEncoder。它能把1024×1024的PDF页面压缩成只有256个视觉token,压缩比达16倍。视觉token编码只进行一次,整个解码过程不参与状态转移,图像信息一直保持清晰。
这个设计的关键在于:视觉token不参与状态转移,R-SWA把视觉token挡在状态转移之外,这是它与普通线性注意力拉开差距的地方。
性能数据
- OmniDocBench v1.5:93.23%,比DeepSeek-OCR的87.01%高出6.22个百分点
- OmniDocBench v1.6:93.92%,端到端SOTA
- 仅用500M激活参数就超过了235B的Qwen3-VL(89.15%)和Gemini-2.5Pro(88.03%)
- 长文档测试:20页文档编辑距离仅0.057,40页以上仍控制在0.11以内,Distinct-35达97%
- 效率:输出6144 token时TPS达7847,DeepSeek-OCR为5822,差距35%
这个模型基于DeepSeek-OCR继续训练了约4000步就跑出了这样的结果,投入不大但效果显著。
两种推理方式
Transformers方式:安装torch、transformers、PyMuPDF后,直接从Hugging Face加载模型运行。PDF需先用PyMuPDF转成图片再批量解析,dpi默认300。
pip install torch transformers pymupdf
SGLang方式:适用于大批量处理和高效率推理,启动服务器后可用OpenAI-compatible API发送请求,支持流式输出。
python -m sglang.launch_server --model-path baidu/Unlimited-OCR --port 30000
当前局限
- 仅支持Base和Gundam两种模式,多页文档功能只有Base模式可用
- 模型上下文约32K,超长文档需自行分段处理
- PDF不能直接识别,要先转成图片
- 推理需要GPU,暂无CPU方案
- README中未明确开源协议,商用前建议核实授权
开源地址:https://github.com/baidu/Unlimited-OCR