当前位置: 首页 > news >正文

百度开源 Unlimited OCR:一次推理转录几十页文档,KV 缓存恒定不增长!

百度开源 Unlimited OCR:一次推理转录几十页文档,KV 缓存恒定不增长!

百度新作,用 Reference Sliding Window Attention 替换全部解码器注意力层,32K 长度一次跑完多页文档。

目录

  • 1. 项目简介——它是什么?
  • 2. 它能做什么?——三大核心能力
  • 3. 为什么现有 OCR 不够好?——痛点分析
  • 4. 核心原理——R-SWA 机制详解
  • 5. 快速上手——三种推理方式
  • 6. 适用场景与优缺点
  • 7. 总结

1. 项目简介——它是什么?

Unlimited OCR是百度近期开源的端到端 OCR 模型,定位一句话概括:让 OCR 模型像人一样,长时间抄写不掉速

它的核心目标是在一次前向推理中,把几十页的文档完整转录为文本——不是"一页一页分别 OCR",而是一口气跑完,效率从头到尾恒定。

项目以 DeepSeek-OCR 为基线,在此基础上做了关键改进:将解码器中所有注意力层替换为自研的Reference Sliding Window Attention(R-SWA),使得 KV 缓存在整个解码过程中保持恒定大小,不再随输出长度线性增长。

🔗 项目地址:https://github.com/baidu/Unlimited-OCR
🔗 论文地址:https://arxiv.org/abs/2606.23050
🔗 Hugging Face 模型:https://huggingface.co/baidu/Unlimited-OCR
🔗 ModelScope 模型:https://modelscope.cn/models/PaddlePaddle/Unlimited-OCR
📜 License:CC BY 4.0


2. 它能做什么?——三大核心能力

能力说明配置模式
🖼️单图文档解析一张图片(合同、发票、手写笔记等)一次推理输出完整文本gundam(切片模式,高精度)或base(整图模式)
📑多页文档解析多张页面图片一次性送入,联合解析输出连贯文本base模式
📄PDF 文档解析自动将 PDF 转为图片,再进行多页联合解析base模式

两种图像配置模式的区别:

参数gundam模式base模式
base_size10241024
image_size6401024
crop_mode✅ 开启(切片处理高分辨率图)关闭(整图输入)
适用场景单张高清图片多页 / PDF 联合解析

3. 为什么现有 OCR 不够好?——痛点分析

近年来端到端 OCR 模型(如 DeepSeek-OCR)让 OCR 再次火了起来。核心思路是用大语言模型(LLM)做解码器,借助语言模型的先验分布来提升识别精度——效果确实好,但代价也很明显:

❌ 传统 LLM 解码器的三大痛点

  1. KV 缓存线性增长:每生成一个 token 就多一份 KV 缓存,输出越长,显存占用越大
  2. 推理速度逐渐变慢:KV 缓存膨胀导致注意力计算量持续增长,长序列解码越来越慢
  3. 无法一次跑完长文档:受显存限制,单次推理往往只能处理 1-2 页

🧠 人类的类比

论文提出了一个非常形象的类比:人类在长时间抄写任务中不会效率下降。你抄写第 1 行和抄写第 100 行的速度是一样的——因为人类有「工作记忆」机制,不需要记住之前所有内容,只需要参考最近的内容就够了。

Unlimited OCR 就是要让模型也拥有这种「工作记忆」能力。


4. 核心原理——R-SWA 机制详解

🔑 关键创新:Reference Sliding Window Attention(R-SWA)

R-SWA 是 Unlimited OCR 的核心创新,它替换了解码器中所有注意力层(不是部分替换,是全部替换!),核心思想:

传统注意力:每个 token 要关注之前所有 token → KV 缓存线性增长 R-SWA: 每个 token 只关注固定窗口内的 token → KV 缓存恒定

📐 工作机制

R-SWA 的工作方式可以类比人类的「抄写工作记忆」:

  1. 滑动窗口:解码时只保留最近W个 token 的 KV 缓存(类似人类只看最近几行)
  2. 参考锚点:窗口之外不丢弃,而是保留若干关键锚点的 KV 作为「参考」(类似人类偶尔回头看开头或标题)
  3. 恒定缓存:窗口大小 + 锚点数量固定 → KV 缓存总量恒定,不随输出长度增长

这意味着:

  • 显存恒定:无论输出 1000 还是 32000 个 token,KV 缓存占用相同
  • 速度恒定:注意力计算量不随序列增长而增加
  • 质量保持:参考锚点机制确保模型不会丢失对全局上下文的感知

🏗️ 整体架构

输入图像 ↓ DeepSeek-OCR 编码器(高压缩率) ↓ 视觉 token 序列 ↓ Unlimited-OCR 解码器(全部注意力层替换为 R-SWA) ↓ 32K 长度内的完整文本输出

结合 DeepSeek-OCR 编码器的高压缩率(将整页图像压缩为少量 token)+ R-SWA 的恒定 KV 缓存,模型可以在标准 32K 最大长度下,一次推理转录几十页文档。

🔬 更深远的意义

论文特别强调:R-SWA 不只是 OCR 专用——它是一种通用的「解析注意力机制」,同样适用于:

  • 🎙️ASR(语音识别):长时间语音转录
  • 🌐翻译:长文档翻译
  • 📝任何需要长序列输出的生成任务

5. 快速上手——三种推理方式

Unlimited OCR 提供了三种推理方案,适配不同的部署场景:

方式一:Transformers(最简单,适合单机调试)

环境要求:Python 3.12.3 + CUDA 12.9

pipinstalltorch==2.10.0torchvision==0.25.0transformers==4.57.1 pipinstallPillow==12.1.1pymupdf==1.27.2.2einops==0.8.2

单图推理示例

fromtransformersimportAutoModel,AutoTokenizer model_name='baidu/Unlimited-OCR'tokenizer=AutoTokenizer.from_pretrained(model_name,trust_remote_code=True)model=AutoModel.from_pretrained(model_name,trust_remote_code=True,use_safetensors=True,torch_dtype=torch.bfloat16,)model=model.eval().cuda()# 单图 — gundam 模式(切片,高精度)model.infer(tokenizer,prompt='<image>document parsing.',image_file='your_image.jpg',output_path='output/',base_size=1024,image_size=640,crop_mode=True,max_length=32768,no_repeat_ngram_size=35,ngram_window=128,save_results=True,)

多页 / PDF 推理示例

importtempfile,fitz# PyMuPDF# PDF → 图片转换defpdf_to_images(pdf_path,dpi=300):doc=fitz.open(pdf_path)tmp_dir=tempfile.mkdtemp(prefix='pdf_ocr_')mat=fitz.Matrix(dpi/72,dpi/72)paths=[]fori,pageinenumerate(doc):out=os.path.join(tmp_dir,f'page_{i+1:04d}.png')page.get_pixmap(matrix=mat).save(out)paths.append(out)doc.close()returnpaths# 多页联合解析(仅 base 模式)model.infer_multi(tokenizer,prompt='<image>Multi page parsing.',image_files=pdf_to_images('your_doc.pdf',dpi=300),output_path='output/',image_size=1024,max_length=32768,no_repeat_ngram_size=35,ngram_window=1024,save_results=True,)

方式二:vLLM(生产级,高性能推理)

官方提供了专用 Docker 镜像:

# 默认版(CUDA 13.0)dockerpull vllm/vllm-openai:unlimited-ocr# Hopper GPU 版(CUDA 12.9)dockerpull vllm/vllm-openai:unlimited-ocr-cu129

部署指南详见:https://recipes.vllm.ai/baidu/Unlimited-OCR

方式三:SGLang(支持批量并发推理)

适合需要批量处理大量图片或 PDF 的场景:

安装

uv venv--python3.12source.venv/bin/activate uv pipinstallwheel/sglang-0.0.0.dev11416+g92e8bb79e-py3-none-any.whl uv pipinstallkernels==0.11.7 uv pipinstallpymupdf==1.27.2.2

启动服务

python-msglang.launch_server\--modelbaidu/Unlimited-OCR\--served-model-name Unlimited-OCR\--attention-backend fa3\--page-size1\--mem-fraction-static0.8\--context-length32768\--enable-custom-logit-processor\--disable-overlap-schedule\--skip-server-warmup\--host0.0.0.0\--port10000

批量推理(自动启动 SGLang 服务,并发请求):

# 图片目录批量处理python infer.py\--image_dir./examples/images\--output_dir./outputs\--concurrency8\--image_modegundam# PDF 文档批量处理python infer.py\--pdf./examples/document.pdf\--output_dir./outputs\--concurrency8\--image_modegundam

6. 适用场景与优缺点

✅ 最佳适用场景

场景说明
📚 长文档数字化合同、论文、书籍等几十页文档一次性转录
📋 表单/发票批量处理企业级文档自动化
🔍 档案检索预处理先 OCR 转文本,再做语义检索
🎙️ 长语音转录R-SWA 同样适用于 ASR 场景
🌐 长文本翻译R-SWA 的恒定缓存对翻译也有优势

⚖️ 优缺点对比

优点缺点
🟢 KV 缓存恒定,长序列推理不掉速🔴 需要较强 GPU(推荐 bfloat16 + CUDA 12.9+)
🟢 32K 长度一次跑完多页文档🔴 模型权重较大,部署门槛高于轻量 OCR
🟢 gundam 模式切片处理,高分辨率图也精准🔴 多页/PDF 只支持 base 模式,精度略低于 gundam
🟢 三种推理方案覆盖调试到生产🔴 SGLang 需要安装特定 wheel,环境配置稍复杂
🟢 R-SWA 是通用机制,适用 ASR/翻译等🔴 项目刚开源(2026.06),生态和文档还在早期
🟢 百度出品 + 有论文支撑,质量可信🔴 No-repeat ngram 参数需手动调优(size=35, window=128/1024)

7. 总结

Unlimited OCR 解决的是端到端 OCR 模型的一个根本性问题:长序列推理时 KV 缓存膨胀导致的效率下降。它用 R-SWA(Reference Sliding Window Attention)替换全部解码器注意力层,让 KV 缓存恒定不变,实现了「像人一样长时间抄写不掉速」的效果。

结合 DeepSeek-OCR 编码器的高压缩率,模型在标准 32K 长度下一次推理就能转录几十页文档。而且 R-SWA 不限于 OCR——它本质上是一种通用的长序列解析注意力机制,对 ASR、翻译等任务同样有价值。

三种推理方案(Transformers / vLLM / SGLang)从单机调试到生产部署全覆盖,百度还提供了 Hugging Face Spaces 在线 demo,你可以先去体验再决定是否本地部署。

推荐指数:⭐⭐⭐⭐⭐ (5/5)

百度在 DeepSeek-OCR 基础上做出了真正的架构级创新,R-SWA 的恒定 KV 缓存设计对整个长序列生成领域都有启发意义。开源权重 + 论文 + 三种推理方案,诚意十足。


原文链接:https://github.com/baidu/Unlimited-OCR
论文链接:https://arxiv.org/abs/2606.23050
License:CC BY 4.0


标签:#百度 #UnlimitedOCR #OCR #深度学习 #R-SWA #KV缓存 #长序列推理 #开源项目
分类:原创文章

http://www.jsqmd.com/news/1106324/

相关文章:

  • GPT-5.5 中的测试时计算扩展:技术原理与产业影响
  • 面试官:“你说你用Claude写代码,那你说说你CLAUDE.md、Hooks、Skills、Subagents”?
  • 计算机毕业设计之基于机器学习的草原牛羊马聚类分析研究
  • 企业 AI 安全防护实战:Prompt Injection、RAG Injection 与 Agent 工具越权排查清单
  • AI音频分离工具Replay8.1汉化版使用指南
  • LightGBM量化交易系统:3周搭建可实盘的AI辅助决策闭环
  • Web安全实战指南:从OWASP Top 10漏洞到纵深防御体系构建
  • 热榜来袭!外贸工艺品资讯平台哪家强?口碑排行榜揭秘
  • 《传世无双》2026年7月最新官网下载:战法道三职业元神合击解析
  • 既需要大规模HPC 集群,有需要QPU参与的计算问题
  • 【python】文字版农场游戏 —— 架构设计文档
  • 从零配置 YOLOv8 GPU 加速环境(RTX 2080 + Windows)完整教程
  • 】[Ceiling节点]原理解析与实际应用
  • [Remap节点]原理解析与实际应用
  • 记录一个免杀的php webshell demo
  • 数据库SQL查询语句学习心得
  • 2026 GitHub热门的10个开源AI项目盘点,哪个最香?
  • 2026年企业级网络设备十大品牌排行榜·综合实力篇
  • 达妙机械臂
  • 用 Python 画三类论文级图表:分组柱状图、双轴折线图与多面板图(解决中文乱码)
  • 一个由进程内存布局异常引起的问题
  • 容器资源限制与配额管理实践
  • 在微服务中使用领域事件
  • 前面定义的一些类也要改一下。
  • NFD云解析插件扩展架构深度解析:从接口设计到实战实现
  • hybrik实时性测试
  • 数智中台全链路交付,赋能连锁零售规模化增长
  • Linux课后练习——管理“学习笔记”项目操作过程
  • 2026年真正免费的论文查重网站有哪些?7个平台实测+防骗指南
  • 如何快速修复ClusterGVis中箱线图与折线图显示冲突问题