Baidu Unlimited-OCR: One-Shot Long-Horizon Parsing

Baidu Unlimited-OCR: One-Shot Long-Horizon Parsing

百度推出了 Unlimited-OCR,这是一个专为“单次长程解析”设计的模型。该系统能够通过单次处理完成对长篇文档(如多页 PDF)的转录,而不会出现处理视觉语言模型 (VLMs) 长序列时常见的内存崩溃问题。

通过参考滑动窗口注意力机制解决 VRAM 瓶颈

Unlimited-OCR 解决了长文档 OCR 中的主要技术障碍:KV (Key-Value) 缓存的线性增长。在标准的 Transformer 架构中,随着模型转录 100 页的 PDF,它会尝试记住之前生成的每一个单词,导致内存占用呈 $O(N)$ 增长,直到系统耗尽 VRAM。

为了解决这个问题,Unlimited-OCR 实现了 Reference Sliding Window Attention (R-SWA)。这种架构方法将模型的注意力分为两个不同的路径:

  • Global Reference (全局参考): 模型保持对原始文档图像的完整、不受损的视图,确保它永远不会丢失源材料的视觉上下文。
  • Local Generation (局部生成): 模型将其对自身生成文本的记忆限制在一个紧凑的移动窗口内(例如,最后 128 个单词)。它会安全地“忘记”较旧的生成文本,从而防止 KV 缓存无限扩张。

这种机制允许模型处理几乎无限长度的文档,同时保持准确转录所需的视觉定位能力。

实现与推理选项

Unlimited-OCR 基于 DeepSeek-OCR 和 PaddleOCR 的基础构建而成。它提供了两种主要的部署和推理方法:

基于 Transformers 的推理

对于拥有 NVIDIA GPU 的用户,可以使用 Hugging Face 的 transformers 库来运行该模型。环境要求 Python 3.12.3 和 CUDA 12.9。关键依赖项包括 torch==2.10.0transformers==4.57.1

该模型针对单张图像支持两种配置模式:

  1. Gundam Mode: 针对特定布局进行了优化 (base_size=1024, image_size=640, crop_mode=True)。
  2. Base Mode: 标准解析 (base_size=1024, image_size=1024, crop_mode=False)。

SGLang Server 部署

对于高吞吐量的生产环境,Unlimited-OCR 支持 SGLang。这允许通过 OpenAI 兼容的 API 提供模型服务。服务器可以使用自定义的 logit processor (DeepseekOCRNoRepeatNGramLogitProcessor) 来管理重复并提高输出质量。

技术要求与能力

  • 输入格式: 模型支持单张图像、多图像序列以及 PDF(在处理前通过 PyMuPDF 转换为图像)。
  • 上下文长度: 系统配置的上下文长度为 32,768 个 tokens。
  • 批量处理: infer.py 脚本支持对图像目录或 PDF 文件进行并发请求,从而实现可扩展的批量推理。

社区见解与观点

虽然内存管理的技术方法受到了称赞,但社区就 AI 驱动的 OCR 的实际应用提出了几个关键点:

"我的 AI OCR 使用尝试总是会导致虚构的伪影,这在生产环境中是不可行的... 应该是其他语言的单词被自动翻译成了英语,这破坏了效果。"

其他用户指出,虽然文本 OCR 正在进步,但其他专业领域仍未得到充分服务。一位用户强调,Optical Music Recognition (OMR) 仍处于“处女地”状态,因为目前的 AI 模型难以应对音乐符号的复杂符号性质,且缺乏像 MusicXML 这样足够丰富的标准化数字格式作为训练语料库。

此外,一些用户质疑重新发明 OCR 引擎本身的必要性,认为传统的视觉模型已经非常稳定且可靠,建议这些新模型的真正价值在于后处理和数据提取,而非原始转录过程。

Sources