Unlimited OCR:实现单次输入长序列解析
速览
Unlimited OCR是一种新型光学字符识别技术,旨在解决长序列文档解析难题。该技术支持单次输入即可完成对超长文本的解析,显著提升了处理效率。这一突破对于文档数字化和信息提取具有重要意义。
AI 深度解读
Unlimited OCR:一次提示,长视界解析
背景
在文档智能处理领域,光学字符识别(OCR)一直是核心痛点。传统的 OCR 模型往往受限于输入图像的尺寸和上下文窗口,难以同时兼顾高分辨率细节捕捉与长文档的全局语义理解。此前,百度团队曾推出 Deepseek-OCR 模型,在文档解析任务中展现了强劲性能。然而,面对复杂的多页 PDF、高分辨率扫描件或包含大量文本的长文档,现有方案在“长视界”(Long-Horizon)解析能力上仍存在瓶颈。
2026年6月23日,百度团队在 arXiv 上发布了论文《Unlimited OCR Works》,并同步开源了模型权重至 Hugging Face 和 ModelScope。该项目旨在将 Deepseek-OCR 的能力推向新的高度,提出了一种名为 Unlimited-OCR 的架构,旨在实现“单次提示(One-Shot)”下的无限长视界文档解析。该工作得到了 ModelScope 社区的支持,并参考了 Deepseek-OCR、Deepseek-OCR-2 以及 PaddleOCR 的宝贵经验。
核心内容
Unlimited-OCR 的核心突破在于其能够处理极长上下文和高分辨率图像的混合输入,通过灵活的配置策略,实现从单张图片到多页 PDF 的无缝解析。
1. 双模式推理架构
Unlimited-OCR 针对单张图片推理提供了两种配置模式,以适应不同的精度与速度需求:
- Gundam 模式:适用于需要高分辨率细节的场景。基础尺寸(base_size)为 1024,图像尺寸(image_size)为 640,启用裁剪模式(crop_mode=True)。这种配置通过局部裁剪和重组,保留更多文本细节。
- Base 模式:适用于全局结构理解。基础尺寸为 1024,图像尺寸为 1024,不启用裁剪。此模式更适合作为多页解析的基础配置。
2. 长上下文与去重机制
为了支持长文档解析,模型配置了极大的上下文长度(max_length=32768)。同时,引入了自定义的 Logit Processor 机制,具体参数包括:
- no_repeat_ngram_size:设置为 35,防止模型生成重复的 n-gram 序列。
- ngram_window:在单图 Gundam 模式下设为 128,在多页/ Base 模式下设为 1024,通过滑动窗口限制重复生成的范围,提升长文本生成的连贯性和准确性。
3. 多页与 PDF 处理流程
Unlimited-OCR 原生支持多页图像解析(Multi-page parsing)和 PDF 文件解析。
- 多页解析:通过
model.infer_multi接口,传入多个图像文件列表,模型能够跨页理解文档结构。 - PDF 支持:利用 PyMuPDF (fitz) 将 PDF 页面转换为高分辨率(默认 300 DPI)图像,再送入多页解析模块。这一流程确保了 PDF 中的矢量文本和复杂排版能被准确提取。
4. 部署与推理方案
项目提供了两种主要的部署方式:
A. 基于 Hugging Face Transformers 的直接推理 适用于快速验证和中小规模任务。
- 环境要求:Python 3.12.3 + CUDA 12.9,依赖 torch 2.10.0, transformers 4.57.1 等。
- 模型加载:使用
AutoModel和AutoTokenizer加载baidu/Unlimited-OCR,启用trust_remote_code和safetensors,数据类型为bfloat16。 - 代码示例:
# 单图解析 (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, no_repeat_ngram_size=35, ngram_window=128, save_results=True, )
B. 基于 SGLang 的高性能服务部署 适用于生产环境,支持高并发和流式输出。
- 环境搭建:使用
uv管理虚拟环境,安装特定的 SGLang wheel、kernels (0.11.7) 和 PyMuPDF。 - 服务器启动:通过
sglang.launch_server启动服务,关键参数包括:--attention-backend fa3:使用 FA3 注意力后端优化性能。--context-length 32768:设置上下文长度。--enable-custom-logit-processor:启用自定义 Logit 处理器以支持去重逻辑。--mem-fraction-static 0.8:静态内存分配比例。
- API 交互:提供 OpenAI 兼容的 API 接口。客户端通过
requests发送包含 Base64 编码图像的 JSON 请求,支持流式响应(stream=True)。 - 自定义 Logit 处理器:集成
DeepseekOCRNoRepeatNGramLogitProcessor,在服务器端动态处理生成逻辑,确保长文本生成的稳定性。
C. 批量推理工具
提供 infer.py 脚本,支持对图像目录或 PDF 文件进行批量处理。
- 并发控制:通过
--concurrency参数控制并发请求数(如 8)。 - 自动管理:脚本自动启动 SGLang 服务器,处理图像转换、请求发送和结果保存。
关键要点
- 模型名称与来源:Unlimited-OCR,由百度团队开发,论文发表于 arXiv (2026/06/23),权重开源于 Hugging Face (
baidu/Unlimited-OCR) 和 ModelScope。 - 核心能力:支持“一次提示”下的长视界(Long-Horizon)文档解析,最大上下文长度达 32,768 tokens。
- 双模式策略:
- Gundam 模式:单图高分辨率解析,
image_size=640,crop_mode=True,ngram_window=128。 - Base 模式:多页/全局解析,
image_size=1024,crop_mode=False,ngram_window=1024。
- Gundam 模式:单图高分辨率解析,
- 技术栈依赖:
- 推理后端:支持 Hugging Face Transformers 原生推理和 SGLang 高性能服务。
- 关键库:PyTorch 2.10.0, Transformers 4.57.1, SGLang, PyMuPDF (fitz)。
- CUDA 版本:测试环境为 CUDA 12.9。
- PDF 处理流程:使用 PyMuPDF 将 PDF 转换为 300 DPI 的 PNG 图像,再送入多页解析模块。
- 去重机制:通过自定义 Logit Processor 实现
no_repeat_ngram_size=35,有效抑制长文本生成中的重复现象。 - API 兼容性:SGLang 部署提供 OpenAI 兼容的
/v1/chat/completions接口,支持流式输出和自定义参数(如images_config,custom_logit_processor)。 - 致谢与传承:项目明确致谢 Deepseek-OCR、Deepseek-OCR-2 和 PaddleOCR,表明其技术路线建立在先前优秀工作基础之上。
意义与影响
Unlimited-OCR 的发布标志着文档智能处理向“无限视界”迈出了关键一步。其意义主要体现在以下三个方面:
- 突破长文档解析瓶颈:传统 OCR 模型在处理多页
