传统 OCR 有个死穴:只能一页一页读。
一本 50 页的 PDF,你得先切成 50 张图片,一张一张扔给 OCR,最后再把结果拼起来。
中间要是遇到跨页的表格、连续的代码块,割裂了还得手动对齐。
百度刚开源了 Unlimited-OCR,核心突破就一句话:32K 上下文长度,一次读完整个 PDF。
不用切页,不用拼接,丢进去一个 PDF,吐出来完整的文字。
GitHub:https://github.com/baidu/Unlimited-OCR

01 它到底强在哪?
Unlimited-OCR 是百度今天(2026 年 6 月 22 日)刚开源的项目,名字直译过来就是"无限 OCR"。
核心能力一句话:一次输入,无限输出。
传统 OCR 模型的处理流程是:图片 → 检测文本区域 → 识别文字 → 输出。每一步都有上下文长度限制,通常只能处理单页。
Unlimited-OCR 打破了这个限制。它的上下文窗口是 32768 tokens——意味着一张高分辨率文档图片,或者多页 PDF 转换后的图片序列,都可以在一次推理中完整处理。

关键指标:
02 为什么 32K 上下文是个质变?
你可能觉得,32K 也就多读几页而已,有必要这么兴奋吗?
有必要。
因为 OCR 的难点从来不是"认字",而是理解文档的结构和上下文。
痛点 1:跨页表格
一份财务报表,表头在第一页,数据在第二页,合计在第三页。传统 OCR 切开后,三页各认各的,最后拼出来的表格要么错位,要么缺列。
Unlimited-OCR 一次读完,表格结构完整保留。
痛点 2:连续代码块
技术文档里的代码块经常跨页。传统 OCR 读到页尾截断了,下一页从第一行重新开始,中间没有衔接——读出来的代码根本没法跑。
Unlimited-OCR 一次读完,代码块完整连续。
痛点 3:版面理解
学术论文的图表编号、参考文献引用、脚注关联——这些版面信息在跨页时最容易丢失。传统 OCR 只认字,不认版面逻辑。
Unlimited-OCR 的 32K 上下文让它能同时看到整篇论文的版面结构,理解引用关系和图表编号。
03 技术细节
架构
Unlimited-OCR 基于 DeepSeek-OCR 架构改进而来,继承了其视觉编码和文本解码的设计思路,核心升级在于:
1. 超长上下文编码:通过改进的视觉 token 压缩和注意力机制,将单张图片的视觉 token 数量控制在合理范围内,同时支持多页串联 2. 多页推理: infer_multi()方法支持批量传入多张图片,一次性输出完整解析结果3. PDF 原生支持:内置 PDF 转图片管线(使用 PyMuPDF),自动处理 DPI 转换
两种运行模式
| gundam | ||
| base |
gundam 模式针对单页做了优化,用裁剪策略降低计算量;base 模式则保持完整分辨率,适合需要精确定位的场景。
部署方式
支持两种推理后端:
Transformers 模式(简单,适合单张或少量图片):
from transformers import AutoModel, AutoTokenizertokenizer = AutoTokenizer.from_pretrained('baidu/Unlimited-OCR', trust_remote_code=True)model = AutoModel.from_pretrained('baidu/Unlimited-OCR', trust_remote_code=True, torch_dtype=torch.bfloat16)model = model.eval().cuda()# 单张图片model.infer(tokenizer, prompt='<image>document parsing.', image_file='doc.jpg', output_path='./output')# 多页/PDFmodel.infer_multi(tokenizer, prompt='<image>Multi page parsing.', image_files=['p1.png', 'p2.png', 'p3.png'], output_path='./output')SGLang 模式(高性能,适合批量处理):
python -m sglang.launch_server \ --model baidu/Unlimited-OCR \ --context-length 32768 \ --mem-fraction-static 0.8 \ --host 0.0.0.0 --port 10000支持 OpenAI 兼容 API 调用,流式输出。
04 和 DeepSeek-OCR 比怎么样?
Unlimited-OCR 的 README 里明确写了:它就是在 DeepSeek-OCR 的基础上做的改进。
Unlimited-OCR 的核心优势就是 32K 上下文 + PDF 原生支持。
05 怎么上手?
环境要求
• Python 3.12+ • CUDA 12.9+ • NVIDIA GPU(推荐,支持 bfloat16)
安装
pip install torch torchvision transformers Pillow matplotlib einops addict easydict pymupdf psutil使用示例
# 单张图片(gundam 模式)python infer.py --image_dir ./examples/images --output_dir ./outputs --image_mode gundam# PDF 文件python infer.py --pdf ./examples/document.pdf --output_dir ./outputs --image_mode gundam# 批量处理(支持并发)python infer.py --image_dir ./examples/images --output_dir ./outputs --concurrency 8 --image_mode gundam直接调用 Hugging Face 模型
from transformers import AutoModel, AutoTokenizerimport torchtokenizer = AutoTokenizer.from_pretrained('baidu/Unlimited-OCR', trust_remote_code=True)model = AutoModel.from_pretrained( 'baidu/Unlimited-OCR', trust_remote_code=True, use_safetensors=True, torch_dtype=torch.bfloat16,)model = model.eval().cuda()# 解析单张图片model.infer( tokenizer, prompt='<image>document parsing.', image_file='your_document.jpg', output_path='./output', base_size=1024, image_size=640, crop_mode=True, max_length=32768,)06 局限性
1. 需要 GPU
模型不是轻量级的,需要 NVIDIA GPU 推理。CPU 也能跑但速度很慢。
2. 分辨率和速度权衡
32K 上下文意味着处理大图时显存占用不小。单页用 gundam 模式(640px)比较省资源,多页用 base 模式(1024px)效果更好但更吃显存。
3. 刚开源,还在早期
6 月 22 日发布,功能上目前聚焦在文档解析,复杂的手写体、艺术字等场景效果待验证。
4. 论文还没发
README 里 Citation 部分写着"Coming soon!"——论文还没上 arXiv。想了解技术细节得等论文发布。
写在最后
OCR 这个赛道最近热闹得不行。DeepSeek-OCR、HunyuanOCR、GLM-OCR、PaddleOCR-VL 几乎同时扎堆发布,各家都在抢大模型的"眼睛"。
百度的 Unlimited-OCR 选了一个很务实的路子:不堆参数,不做大而全,就解决一个具体问题——一次读完整个 PDF。
文档解析是大模型时代的基础设施。
谁能把 PDF 读得最完整、最准确,谁就掌握了大模型理解现实世界的第一个入口。
GitHub:https://github.com/baidu/Unlimited-OCR
夜雨聆风