Unlimited-OCR Skill:一键解析完整长文档,OCR 进入”一镜到底”时代

Unlimited-OCR Skill:一键解析完整长文档,OCR 进入”一镜到底”时代

传统 OCR 处理一份几十页的 PDF,走的是分页识别加后处理拼接的路子——每页单独识别,最后再按坐标重排。这套流程在单页票据、身份证上稳定可靠,一旦遇到整本论文、技术手册、财报年报,问题就暴露了:分页之间没有上下文理解,跨页表格被打散,双栏排版无法还原原始阅读顺序,输出只有孤立文本块,后续做知识库入库还要自己写一堆清洗逻辑。百度 2026 年 6 月开源的 Unlimited-OCR,就是来解决这个问题的——把整份文档作为输入,让模型自己理解版面、表格、公式和阅读顺序,一次推理直接输出 Markdown 结构,号称”One-shot Long-horizon Parsing”。

功能与原则

Unlimited-OCR 的核心能力是整文档一次性解析,而非逐页处理后再拼接。技术上以 DeepSeek OCR 为基础encoder,叠加了百度自研的 Reference Sliding Window Attention(R-SWA)——一种让 decoder 在整个解码过程中维持恒定 KV Cache 的注意力机制,使得 32K token 上下文窗口内内存不爆炸,同时保留跨页全局理解能力。另外内置了 ngram 去重机制(no_repeat_ngram_size=35),压制长文档表格中最容易出现的重复输出。发布两周内便获得 vLLM、SGLang 主动适配。

认可度

截至 2026-09-02,Unlimited-OCR 在 GitHub 斩获 ⭐ 25,070 stars,fork 2,601 次,open issues 78 个。发布后 24 小时内收获 1,800+ stars,不到 48 小时复刻数超过 2,400,ModelScope、Tianyu Guo(vLLM)、ms-swift 社区先后主动适配,是 2026 年 6-7 月 GitHub trending 榜的常客。在 Hugging Face 已上线 demo 空间,论文同步发布于 arXiv(2606.23050)。

链接

GitHub:https://github.com/baidu/Unlimited-OCR

HuggingFace 模型:https://huggingface.co/baidu/Unlimited-OCR

论文:https://arxiv.org/abs/2606.23050

原作者

百度(@Baidu),PaddlePaddle 开源生态团队。百度在 OCR 领域有多年积累(早年有 PaddleOCR 产品线),此次将能力进一步整合到统一的长文档解析框架中。

介绍

Unlimited-OCR 正式发布于 2026 年 6 月 22 日,定位是”推动 OCR 进入一镜到底的新时代”。项目基于 PyTorch + HuggingFace Transformers 开发,核心模型以 bf16 加载,配套完整 Python 示例,覆盖单图、多图、PDF 三种输入形态。

GitHub README 给出了两套推理配置:gundam 模式(image_size=640,crop_mode=True)适合单图快速吞吐;base 模式(image_size=1024,crop_mode=False)保留全分辨率,适合多页 PDF、技术文档等对版面要求高的场景。两种模式统一支持 32K 最大 token 长度和 ngram 去重参数。

生产环境支持是 Unlimited-OCR 区别于学术原型的重要特征。vLLM 适配在 2026 年 6 月 28 日合并主线,SGLang 服务化方案随仓库自带 OpenAI-compatible API,curl 即可调用。Baidu Cloud 同步上线了云端推理版本,降低了没有 GPU 基础设施团队的上手门槛。

特点

  • One-shot Long-horizon Parsing:整份文档一次性处理,跨页表格、双栏排版、跨页公式不再被打散
  • R-SWA 恒定内存 decoder:32K 上下文窗口下内存不随输出长度增长,无 chunking 必要
  • ngram 去重:继承 DeepSeek OCR 的 repetition suppression 机制,有效压制表格/表单类密集文本的循环输出
  • 双精度模式:gundam(高速裁剪)/ base(全分辨率)按需切换,单图与多页文档统一 API
  • 生产级部署:vLLM + SGLang 原生适配,Baidu Cloud 托管版本,MIT 许可证可商用

使用方法

安装依赖(Python 3.12 + CUDA 12.9 推荐):

pip install torch torchvision transformers Pillow matplotlib einops addict easydict pymupdf psutil

基础调用(Transformers 单图)

import torch
from transformers import AutoModel, AutoTokenizer

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='./output',
    base_size=1024, image_size=640, crop_mode=True,
    max_length=32768,
    no_repeat_ngram_size=35, ngram_window=128,
    save_results=True,
)

PDF 多页解析

import fitz  # PyMuPDF

def pdf_to_images(pdf_path, dpi=300):
    doc = fitz.open(pdf_path)
    mat = fitz.Matrix(dpi/72, dpi/72)
    paths = []
    for i, page in enumerate(doc):
        out = f'page_{i+1:04d}.png'
        page.get_pixmap(matrix=mat).save(out)
        paths.append(out)
    return paths

model.infer_multi(
    tokenizer,
    prompt='<image>Multi page parsing.',
    image_files=pdf_to_images('annual_report.pdf'),
    output_path='./output',
    image_size=1024, max_length=32768,
    no_repeat_ngram_size=35, ngram_window=1024,
    save_results=True,
)

SGLang 生产服务

python -m sglang.launch_server 
    --model baidu/Unlimited-OCR 
    --served-model-name Unlimited-OCR 
    --context-length 32768 
    --host 0.0.0.0 --port 10000

使用场景与人群

  • RAG/知识库构建者:不再需要写复杂的 PDF 分块 + 后处理拼接逻辑,直接解析整本手册入知识库
  • 学术研究人员:一次性将整篇论文 PDF 转结构化 Markdown,保留公式、表格、引用关系
  • 法务/金融从业者:合同、年报、招股书等长文档全稿解析,保持跨页表格完整性
  • 企业文档自动化:发票批量处理、档案数字化,支持本地部署无 API 费用

输入与输出案例

输入:一份 50 页的学术 PDF(机器学习论文,含数学公式、双栏排版、跨页表格)

输出:结构化 Markdown,公式以 LaTeX 格式保留,表格按阅读顺序组织,双栏内容正确还原为单一文本流,无重复段落,全稿一次性生成。

输入:一张高密度发票扫描件(倾斜、印章干扰、细密表格线)

输出:干净的文本文件,表格区域完整提取,印章文字被过滤,数字与抬头一一对应,可直接入库。


GitHub: https://github.com/baidu/Unlimited-OCR

评论区

0 条评论

登录后可评论。

Skill超级捕获手 12 阅读