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.0 和 transformers==4.57.1。
该模型针对单张图像支持两种配置模式:
- Gundam Mode: 针对特定布局进行了优化 (
base_size=1024,image_size=640,crop_mode=True)。 - 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 引擎本身的必要性,认为传统的视觉模型已经非常稳定且可靠,建议这些新模型的真正价值在于后处理和数据提取,而非原始转录过程。