百度开源 Unlimited-OCR:长文档 OCR 一次搞定(保姆级上手)

更新于 2026-08-06 14:11# 教程# 开源# AI

百度开源 Unlimited-OCR:长文档 OCR 一次搞定,保姆级上手

做文档处理的朋友应该都有体会:单个名片、发票类的 OCR,现在工具基本都能搞定;可一旦遇到几十页的 PDF、厚厚一叠扫描件、排版复杂的书籍/合同,大多数方案就开始吃力了。

今天分享我们一直在关注的一个开源项目——百度出品的 Unlimited-OCR。它在 GitHub 上已经涨到 22,258 颗星、2,255 个 Fork(MIT 协议,可免费商用),目标就一句话:一次性搞定长文档 OCR

老问题:长文档 OCR 为什么这么难?

传统方案的常规操作是:逐页截图 → 逐页调 OCR → 手动合并结果。遇到表格和图片混排的文档,版面分析还会各种翻车。

哪怕是公认效果最好的 DeepSeek-OCR,处理长文档时也有一个硬伤:随着输出变长,KV 缓存越来越大,生成速度越来越慢,几十页跑到后面几乎走不动,最后只能手动拆分、分页处理。

Unlimited-OCR 要解决的,正是这个"长文档越跑越慢"的核心问题。

它牛在哪:一个巧妙的注意力机制

论文(arXiv:2606.23050)里讲得很清楚。Unlimited-OCR 以 DeepSeek-OCR 为底座,做了一个关键改动——用 Reference Sliding Window Attention(R-SWA,参考滑动窗口注意力) 替换了解码器里的所有注意力层。

简单理解:人抄一段长文本时,并不会反复回头把整页重新读一遍,而是**聚焦在最近写的内容 + 一个固定的"参考窗口"**上。R-SWA 就是模拟这种阅读工作记忆,把注意力限制在滑动窗口和参考窗口里,让 KV 缓存在整个生成过程中保持恒定大小

结果就是:它在标准 32K 上下文下,能一次完成几十页文档的转录,而不会像传统方案那样越跑越慢。而且论文提到,R-SWA 思维是个通用的注意力机制,未来也适用于 ASR、翻译等任务。

怎么上手?三条路任选

1. 在线 Demo(不用装环境,先看效果)

最省事的方式:直接打开 Hugging Face Space 在线 Demo(huggingface.co/spaces/baidu/Unlimited-OCR),把图片或 PDF 丢进去就能看到一次解析的效果,适合先尝鲜验证。

2. Transformers 本地快速上手

用 Hugging Face Transformers 最直接,两种模式区分很清晰:

  • gundam 模式(base_size=1024,image_size=640,crop_mode=True)——适合单张高精度解析,会做裁剪处理;
  • base 模式(image_size=1024,crop_mode=False)——适合 PDF 多页解析,全局视图。

先装依赖(测试环境:Python 3.12 + CUDA 12.9 + PyTorch):

pip install torch torchvision transformers Pillow pymupdf

单图解析:

from transformers import AutoModel, AutoTokenizer
import torch

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,
).eval().cuda()

# 单张高精度(gundam 模式)
model.infer(
    tokenizer,
    prompt='<image>document parsing.',
    image_file='your_image.jpg',
    output_path='your/output/dir',
    base_size=1024, image_size=640, crop_mode=True,
    max_length=32768,
)

多页 / PDF 只走 base 模式——仓库里还内置了 PDF 转图片工具,直接把 PDF 页转成图片后一次解析:

# PDF 多页解析(base 模式,image_size=1024)
model.infer_multi(
    tokenizer,
    prompt='<image>Multi page parsing.',
    image_files=['page1.png', 'page2.png', 'page3.png'],
    output_path='your/output/dir',
    image_size=1024, max_length=32768,
)

3. vLLM / SGLang 部署(生产环境)

需要高吞吐的服务化场景,可以用 vLLM(官方 recipe:recipes.vllm.ai/baidu/Unlimited-OCR,有 Docker 镜像)或 SGLang 起一个 OpenAI 兼容 API,支持 streaming 输出。仓库还给了 infer.py 一键批量推理脚本,对图片目录或 PDF 做并发推理。

适合谁用?

  • 有大量文档数字化需求的开发者——合同、档案、书籍扫描,一次 OCR 搞定;
  • 做文档管理 / 内容管理产品的团队——集成进产品提升文档处理能力;
  • 日常需要处理 PDF 和扫描件的用户——丢进去就出结果;
  • 研究 OCR / NLP 方向的学生学者——论文和代码是很好的学习材料;
  • 企业做文档智能化转型——合同审核、票据识别、档案数字化等。

几个要注意的点

  • 硬件:NVIDIA GPU + CUDA 12.9,建议显存 8GB 以上
  • 模型权重约几个 GB,需要足够网络和磁盘空间;
  • SGLang 部署有一些前置依赖和 wheel 安装步骤,生产环境建议仔细看仓库文档再配。

相关链接

  • GitHub 仓库:github.com/baidu/Unlimited-OCR
  • 论文:arxiv.org/abs/2606.23050
  • 在线 Demo:huggingface.co/spaces/baidu/Unlimited-OCR
  • ModelScope(国内下载更快,点此注册即可):modelscope.cn/models/PaddlePaddle/Unlimited-OCR —— 国内用户如果下载 Hugging Face 不方便,走 ModelScope 更快。注册入口 →

总结:如果你一直被"长文档 OCR 分页、拼接、越跑越慢"折磨,Unlimited-OCR 值得一试——轻量开源、MIT 可商用、一次解析几十页,还有在线 Demo 可以先体验,模型权重也能从 ModelScope 国内快速下载。需要批量处理 PDF 的开发者,强烈建议收藏这个项目。