1. 开篇:百度悄悄开源了一个 OCR 神器

2026 年 6 月,百度在 GitHub 和 Hugging Face 上悄悄发布了一个名为 Unlimited-OCR 的开源模型。发布仅 5 天,Star 数就突破 1 万;截至目前(2026 年 10 月),GitHub Star 已突破 2.6 万,持续霸榜 GitHub Daily Trending。

这个模型的核心卖点只有一个:一口气读完几十页长文档。

传统 OCR 工具处理多页文档时,本质是 for 循环——一页一页处理,每翻一页就清空记忆。文档越长,KV cache、内存、延迟压力越大。Unlimited-OCR 彻底改变了这个范式,它用一种全新的注意力机制(R-SWA),让模型像人类抄书一样保持连续上下文,32K 长度下一次前向推理完成数十页文档的 OCR 与版面解析。

本文将深度解析 Unlimited-OCR 的技术原理、核心创新 R-SWA、性能评测、部署指南和实际应用案例。

2. 技术原理:从 DeepSeek-OCR 到 R-SWA

2.1 传统 OCR 的瓶颈

传统 OCR 系统(如 Tesseract、PaddleOCR)处理长文档时采用"逐页独立识别"策略:

for page in document:
    context = reset()  # 每页清空上下文
    text = ocr(page, context)

这种方式的问题显而易见: - 上下文断裂:跨页表格、跨页段落无法连贯理解 - 重复计算:每页都要重新建立特征提取器 - KV Cache 爆炸:长文档的注意力缓存呈线性增长

2.2 Unlimited-OCR 的突破:R-SWA

Unlimited-OCR 的核心创新是 R-SWA(Referential Sliding Window Attention,参考式滑动窗口注意力)。

R-SWA 的设计灵感来自人类阅读长文档的方式:我们不会每翻一页就忘记前面内容,而是保持一个"滑动窗口"的工作记忆,同时通过引用机制回溯关键信息。

技术实现上,R-SWA 在 DeepSeek-OCR 编码器的基础上改进了解码注意力层:

PYTHON
# 伪代码示意 R-SWA 核心逻辑
class ReferentialSlidingWindowAttention(nn.Module):
    def __init__(self, window_size=2048, ref_size=512):
        self.window_size = window_size  # 当前窗口
        self.ref_size = ref_size        # 参考窗口

    def forward(self, hidden_states, past_kv):
        # 1. 当前窗口注意力(局部细节)
        local_attn = self.local_attention(hidden_states[-self.window_size:])

        # 2. 参考窗口注意力(全局上下文)
        ref_attn = self.ref_attention(past_kv[-self.ref_size:])

        # 3. 融合:局部 + 全局
        fused = self.gate(local_attn, ref_attn)
        return fused

关键优势: - 固定内存占用:无论文档多长,注意力缓存只维护 window_size + ref_size - 连续上下文:跨页信息通过参考窗口保持连贯 - 高效推理:32K 上下文长度下,单次前向传播完成数十页解析

2.3 MoE 架构:3.3B 总参数,0.5B 激活

Unlimited-OCR 采用 Mixture of Experts(MoE,混合专家) 架构:

指标 数值
总参数量 ~3.3B
每步激活参数 ~570M
上下文长度 32K tokens
支持分辨率 最高 1024×1024
支持语言 多语言(中/英/日/韩等)

MoE 的好处是:模型容量大(3.3B),但推理成本低(每步只激活 0.5B)。这意味着在消费级 GPU(如 RTX 3090/4090)上就能跑起来,不需要 A100 这种企业级硬件。

3. 性能评测:OmniDocBench 93.92% SOTA

3.1 基准测试成绩

在 OmniDocBench v1.6(端到端 OCR 领域最权威的基准之一)上,Unlimited-OCR 取得了 93.92% 的综合成绩,刷新 SOTA:

模型 OmniDocBench v1.6 备注
Unlimited-OCR 93.92% 百度 2026.06 开源
DeepSeek-OCR 87.70% 前代基线
GPT-4o ~90% 闭源大模型
PaddleOCR v4 ~85% 传统 OCR 代表
Tesseract 5 ~78% 开源经典

相比 DeepSeek-OCR,Unlimited-OCR 提升了 6.22 个百分点;相比传统 OCR 工具(PaddleOCR、Tesseract),提升更为显著。

3.2 长文档解析能力

Unlimited-OCR 最突出的能力是长文档解析。官方测试显示:

  • 32K 上下文:一次前向推理可解析数十页文档
  • 跨页表格:准确识别跨页的表格结构
  • 版面理解:区分标题、正文、图片、表格、代码块

传统工具处理 50 页 PDF 需要逐页调用 50 次,Unlimited-OCR 只需 1 次。

4. 部署指南:从安装到实战

4.1 环境要求

BASH
# 硬件要求
GPU: NVIDIA GPU with >= 16GB VRAM (RTX 3090/4090 推荐)
RAM: >= 32GB
Disk: >= 20GB (模型权重 + 依赖)

# 软件要求
Python: 3.9+
CUDA: 11.8+

4.2 安装步骤

BASH
# 1. 克隆仓库
git clone https://github.com/baidu/Unlimited-OCR.git
cd Unlimited-OCR

# 2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 下载模型权重(从 Hugging Face)
# 方式 A:自动下载(推荐)
python infer.py --model baidu/Unlimited-OCR --input test.pdf

# 方式 B:手动下载
# 访问 https://huggingface.co/baidu/Unlimited-OCR
# 下载后放到 ./checkpoints/Unlimited-OCR/

4.3 快速上手:单页高精度识别

BASH
# 单张图片识别
python infer.py \
  --model baidu/Unlimited-OCR \
  --input scan_page.png \
  --output result_single.txt \
  --mode single

# 输出示例:
# 识别完成,耗时 1.2s
# 文本已保存到 result_single.txt

4.4 长文档解析:多页连续识别

BASH
# 多页 PDF 一次性解析
python infer.py \
  --model baidu/Unlimited-OCR \
  --input 50pages.pdf \
  --output result_multi.md \
  --mode multi \
  --context-length 32768

# 输出示例:
# 文档共 50 页
# 使用 R-SWA 连续上下文模式
# 解析完成,耗时 45.3s
# Markdown 格式已保存到 result_multi.md

4.5 批量处理脚本

BASH
#!/bin/bash
# batch_ocr.sh - 批量处理目录下所有 PDF

INPUT_DIR="./documents"
OUTPUT_DIR="./results"
MODEL="baidu/Unlimited-OCR"

mkdir -p "$OUTPUT_DIR"

for pdf in "$INPUT_DIR"/*.pdf; do
    filename=$(basename "$pdf" .pdf)
    echo "Processing: $filename"

    python infer.py \
      --model "$MODEL" \
      --input "$pdf" \
      --output "$OUTPUT_DIR/${filename}.md" \
      --mode multi

    echo "Done: $filename"
done

echo "All documents processed."

5. 实际应用案例

5.1 案例 1:扫描件 PDF 转可编辑 Markdown

场景:你有一份 100 页的扫描版技术手册(PDF),需要转为可编辑的 Markdown 格式。

BASH
# 输入:scanned_manual.pdf (100 页扫描件)
# 输出:editable_manual.md

python infer.py \
  --model baidu/Unlimited-OCR \
  --input scanned_manual.pdf \
  --output editable_manual.md \
  --mode multi \
  --format markdown

# 耗时:约 90 秒
# 输出质量:标题层级、代码块、表格结构均正确识别

5.2 案例 2:跨页表格提取

场景:财务报表中有跨页的大表格,传统工具会截断。

BASH
python infer.py \
  --model baidu/Unlimited-OCR \
  --input financial_report.pdf \
  --output report_extracted.csv \
  --mode multi \
  --extract-tables

# R-SWA 的连续上下文确保跨页表格完整提取

5.3 案例 3:多语言文档识别

场景:一份包含中文、英文、日文的技术文档。

BASH
python infer.py \
  --model baidu/Unlimited-OCR \
  --input multilingual_doc.pdf \
  --output multilingual_result.txt \
  --mode multi \
  --lang auto  # 自动识别语言

# Unlimited-OCR 支持多语言混合识别

6. 对比评测:Unlimited-OCR vs 传统方案

6.1 功能对比表

特性 Unlimited-OCR PaddleOCR v4 Tesseract 5
长文档连续识别 ✅ 32K 上下文 ❌ 逐页独立 ❌ 逐页独立
版面理解 ✅ 标题/表格/代码 ⚠️ 基础版面 ❌ 无
跨页表格 ✅ 完整提取 ❌ 截断 ❌ 截断
多语言混合 ✅ 中/英/日/韩 ⚠️ 需切换模型 ⚠️ 需配置
GPU 要求 >= 16GB VRAM >= 4GB VRAM CPU 即可
推理速度(单页) ~1.2s ~0.3s ~0.5s
推理速度(50 页) ~45s ~15s × 50 = 750s ~25s × 50 = 1250s
开源协议 Apache 2.0 Apache 2.0 Apache 2.0

6.2 速度对比

Unlimited-OCR 单页速度不如传统工具(因为模型更大),但长文档总时间远胜:

  • 50 页 PDF:
  • Unlimited-OCR:45 秒(1 次推理)
  • PaddleOCR:750 秒(50 次推理)
  • Tesseract:1250 秒(50 次推理)

结论:文档越长,Unlimited-OCR 优势越明显。

6.3 精度对比

在复杂场景(低质量扫描件、复杂版面、跨页表格)下:

  • Unlimited-OCR:93.92%(OmniDocBench)
  • PaddleOCR v4:~85%
  • Tesseract 5:~78%

7. 常见问题(FAQ)

Q1: Unlimited-OCR 支持哪些文件格式?

支持 PDF、PNG、JPG、JPEG、BMP、TIFF 等常见图像和文档格式。PDF 支持多页一次性输入。

Q2: 性能如何?需要什么样的硬件?

总参数 3.3B,推理时激活约 570M。推荐 NVIDIA GPU with >= 16GB VRAM(如 RTX 3090/4090)。消费级显卡即可运行,无需 A100。

Q3: 如何部署到生产环境?

参考第 4 节部署指南。生产环境建议: - 使用 Docker 容器化部署 - 配合消息队列(如 RabbitMQ)做异步处理 - 对大文档做分片处理,避免超时

Q4: 是否需要 GPU?CPU 能跑吗?

理论上 CPU 可以跑,但速度会非常慢(单页可能需要 30 秒+)。强烈建议使用 GPU。

Q5: 与 Tesseract 相比有什么优势?

Tesseract 是经典开源 OCR,适合单页简单文档。Unlimited-OCR 的优势在于: - 长文档连续识别(32K 上下文) - 版面理解(区分标题、表格、代码) - 跨页表格完整提取 - 多语言混合识别

如果只需要识别单页简单文本,Tesseract 足够;如果处理长文档、复杂版面,Unlimited-OCR 是更好的选择。

8. 总结与展望

Unlimited-OCR 是百度在 OCR 领域的重要开源贡献。它的核心创新 R-SWA 注意力机制,解决了长文档 OCR 的上下文断裂问题,让模型像人类一样保持连续阅读能力。

核心亮点回顾: - ✅ 3.3B MoE 架构,推理激活仅 0.5B - ✅ R-SWA 注意力机制,32K 上下文连续解析 - ✅ OmniDocBench 93.92% SOTA 成绩 - ✅ 支持单页高精度 + 多页连续识别 - ✅ Apache 2.0 开源协议

适用场景: - 长文档批量解析(技术手册、财务报表、学术论文) - 扫描件转可编辑格式(PDF → Markdown/Word) - 跨页表格提取 - 多语言混合文档识别

不适用场景: - 单页简单文本(用 Tesseract 更轻量) - 实时视频流 OCR(延迟较高) - 无 GPU 环境(CPU 推理太慢)

随着模型持续优化和社区贡献,Unlimited-OCR 有望成为长文档 OCR 领域的新标准。如果你正在处理长文档 OCR 任务,强烈建议试一试。


参考链接: - GitHub 仓库:baidu/Unlimited-OCR - Hugging Face 模型:baidu/Unlimited-OCR - 百度智能云体验:Unlimited-OCR 企业级服务