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

百度开源 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 AttentionR-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 LicenseCC BY 4.02. 它能做什么——三大核心能力能力说明配置模式️单图文档解析一张图片合同、发票、手写笔记等一次推理输出完整文本gundam切片模式高精度或base整图模式多页文档解析多张页面图片一次性送入联合解析输出连贯文本仅base模式PDF 文档解析自动将 PDF 转为图片再进行多页联合解析仅base模式两种图像配置模式的区别参数gundam模式base模式base_size10241024image_size6401024crop_mode✅ 开启切片处理高分辨率图关闭整图输入适用场景单张高清图片多页 / PDF 联合解析3. 为什么现有 OCR 不够好——痛点分析近年来端到端 OCR 模型如 DeepSeek-OCR让 OCR 再次火了起来。核心思路是用大语言模型LLM做解码器借助语言模型的先验分布来提升识别精度——效果确实好但代价也很明显❌ 传统 LLM 解码器的三大痛点KV 缓存线性增长每生成一个 token 就多一份 KV 缓存输出越长显存占用越大推理速度逐渐变慢KV 缓存膨胀导致注意力计算量持续增长长序列解码越来越慢无法一次跑完长文档受显存限制单次推理往往只能处理 1-2 页 人类的类比论文提出了一个非常形象的类比人类在长时间抄写任务中不会效率下降。你抄写第 1 行和抄写第 100 行的速度是一样的——因为人类有「工作记忆」机制不需要记住之前所有内容只需要参考最近的内容就够了。Unlimited OCR 就是要让模型也拥有这种「工作记忆」能力。4. 核心原理——R-SWA 机制详解 关键创新Reference Sliding Window AttentionR-SWAR-SWA 是 Unlimited OCR 的核心创新它替换了解码器中所有注意力层不是部分替换是全部替换核心思想传统注意力每个 token 要关注之前所有 token → KV 缓存线性增长 R-SWA 每个 token 只关注固定窗口内的 token → KV 缓存恒定 工作机制R-SWA 的工作方式可以类比人类的「抄写工作记忆」滑动窗口解码时只保留最近W个 token 的 KV 缓存类似人类只看最近几行参考锚点窗口之外不丢弃而是保留若干关键锚点的 KV 作为「参考」类似人类偶尔回头看开头或标题恒定缓存窗口大小 锚点数量固定 → KV 缓存总量恒定不随输出长度增长这意味着显存恒定无论输出 1000 还是 32000 个 tokenKV 缓存占用相同速度恒定注意力计算量不随序列增长而增加质量保持参考锚点机制确保模型不会丢失对全局上下文的感知️ 整体架构输入图像 ↓ 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.9pipinstalltorch2.10.0torchvision0.25.0transformers4.57.1 pipinstallPillow12.1.1pymupdf1.27.2.2einops0.8.2单图推理示例fromtransformersimportAutoModel,AutoTokenizer model_namebaidu/Unlimited-OCRtokenizerAutoTokenizer.from_pretrained(model_name,trust_remote_codeTrue)modelAutoModel.from_pretrained(model_name,trust_remote_codeTrue,use_safetensorsTrue,torch_dtypetorch.bfloat16,)modelmodel.eval().cuda()# 单图 — gundam 模式切片高精度model.infer(tokenizer,promptimagedocument parsing.,image_fileyour_image.jpg,output_pathoutput/,base_size1024,image_size640,crop_modeTrue,max_length32768,no_repeat_ngram_size35,ngram_window128,save_resultsTrue,)多页 / PDF 推理示例importtempfile,fitz# PyMuPDF# PDF → 图片转换defpdf_to_images(pdf_path,dpi300):docfitz.open(pdf_path)tmp_dirtempfile.mkdtemp(prefixpdf_ocr_)matfitz.Matrix(dpi/72,dpi/72)paths[]fori,pageinenumerate(doc):outos.path.join(tmp_dir,fpage_{i1:04d}.png)page.get_pixmap(matrixmat).save(out)paths.append(out)doc.close()returnpaths# 多页联合解析仅 base 模式model.infer_multi(tokenizer,promptimageMulti page parsing.,image_filespdf_to_images(your_doc.pdf,dpi300),output_pathoutput/,image_size1024,max_length32768,no_repeat_ngram_size35,ngram_window1024,save_resultsTrue,)方式二vLLM生产级高性能推理官方提供了专用 Docker 镜像# 默认版CUDA 13.0dockerpull vllm/vllm-openai:unlimited-ocr# Hopper GPU 版CUDA 12.9dockerpull 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.dev11416g92e8bb79e-py3-none-any.whl uv pipinstallkernels0.11.7 uv pipinstallpymupdf1.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_modegundam6. 适用场景与优缺点✅ 最佳适用场景场景说明 长文档数字化合同、论文、书籍等几十页文档一次性转录 表单/发票批量处理企业级文档自动化 档案检索预处理先 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 参数需手动调优size35, window128/10247. 总结Unlimited OCR 解决的是端到端 OCR 模型的一个根本性问题长序列推理时 KV 缓存膨胀导致的效率下降。它用 R-SWAReference 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.23050LicenseCC BY 4.0标签#百度 #UnlimitedOCR #OCR #深度学习 #R-SWA #KV缓存 #长序列推理 #开源项目分类原创文章