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 编码器的基础上改进了解码注意力层:
# 伪代码示意 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 环境要求
# 硬件要求
GPU: NVIDIA GPU with >= 16GB VRAM (RTX 3090/4090 推荐)
RAM: >= 32GB
Disk: >= 20GB (模型权重 + 依赖)
# 软件要求
Python: 3.9+
CUDA: 11.8+
4.2 安装步骤
# 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 快速上手:单页高精度识别
# 单张图片识别
python infer.py \
--model baidu/Unlimited-OCR \
--input scan_page.png \
--output result_single.txt \
--mode single
# 输出示例:
# 识别完成,耗时 1.2s
# 文本已保存到 result_single.txt
4.4 长文档解析:多页连续识别
# 多页 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 批量处理脚本
#!/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 格式。
# 输入: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:跨页表格提取
场景:财务报表中有跨页的大表格,传统工具会截断。
python infer.py \
--model baidu/Unlimited-OCR \
--input financial_report.pdf \
--output report_extracted.csv \
--mode multi \
--extract-tables
# R-SWA 的连续上下文确保跨页表格完整提取
5.3 案例 3:多语言文档识别
场景:一份包含中文、英文、日文的技术文档。
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 企业级服务