DeepSeek-OCR 技术文档
1. 概述
1.1 产品定位
DeepSeek-OCR 是 DeepSeek-AI 推出的多模态端到端 OCR 模型,核心创新在于提出 "上下文光学压缩(Contexts Optical Compression)" 范式,通过视觉模态高效编码文本信息,为大型语言模型(LLM)处理长上下文问题提供全新解决方案。其不仅实现高精度文档识别,更通过视觉 token 压缩技术降低计算成本,适配长文档、复杂版面等场景。
1.2 核心优势
-
极致压缩效率:将长文本转化为少量视觉 token,2000 字文档可从数千文本 token 压缩至 256 个视觉 token
-
多分辨率适配:支持 4 档原生分辨率与动态分块模式,覆盖从简单文本到超高清报刊的全场景
-
高性价比架构:3B 参数量 MoE 解码器仅激活 570M 参数,平衡表达能力与推理效率
-
结构化输出:原生支持 Markdown、表格解析、图表描述等结构化结果生成
2. 核心技术架构
2.1 整体架构
DeepSeek-OCR 采用 "编码器 - 解码器" 端到端 VLM 架构,核心组件如下:
图像/PDF 提示词 输入层 DeepEncoder 编码器 DeepSeek-3B-MoE 解码器 输出层
-
DeepEncoder(380M 参):由 SAM-base 与 CLIP-large 串联,负责视觉特征提取与 token 压缩
-
DeepSeek-3B-MoE(3B 参):64 个路由专家 + 2 个共享专家,推理仅激活 570M 参数
2.2 DeepEncoder 核心设计
2.2.1 三段式架构
| 模块 | 参数量 | 核心功能 | 注意力机制 |
|---|---|---|---|
| SAM-base | 80M | 视觉感知特征提取 | 窗口注意力(window attention) |
| 16 倍 token 压缩器 | - | 降采样减少 token 数 | 卷积(3×3 核,步长 2) |
| CLIP-large | 300M | 视觉知识特征提取 | 全局注意力(global attention) |
工作流示例(1024×1024 输入):
-
图像分割为 4096 个 patch token
-
SAM-base 处理后经压缩器降至 256 个 token
-
CLIP-large 提取全局特征输出
2.2.2 分辨率模式
| 模式类型 | 子模式 | 分辨率 | 输出 token 数 | 适用场景 |
|---|---|---|---|---|
| 原生分辨率 | Tiny | 512×512 | 64 | 简单短文本 |
| 原生分辨率 | Small | 640×640 | 100 | 纯文本扫描件 |
| 原生分辨率 | Base | 1024×1024 | 256 | 常规文档 |
| 原生分辨率 | Large | 1280×1280 | 400 | 复杂排版 |
| 动态分辨率 | Gundam | n×640×640+1×1024×1024 | n×100+256 | 报刊 / 多栏 / 表格 |
2.3 视觉 - 文本压缩原理
视觉 token 与传统文本 token 的核心差异:
| 特性 | 文本 Token | 视觉 Token |
|---|---|---|
| 来源 | 固定词汇表(~10 万) | 图像像素实时生成 |
| 表示形式 | 离散整数 ID | 连续高维向量 |
| 信息密度 | 低(单 token 对应子词) | 高(含空间 / 纹理 / 布局信息) |
| 上下文能力 | 线性序列关系 | 二维空间 + 全局布局感知 |
| 词汇量 | 有限 | 理论无限 |
3. 数据工程与训练策略
3.1 训练数据集构成
| 数据类型 | 内容详情 | 规模 | 标注方式 |
|---|---|---|---|
| OCR 1.0 | 多语言 PDF(100 种语言) | 3000 万页 | 粗标注(fitz 提取)+ 精标注(PP-DocLayout 等) |
| OCR 1.0 | Word 文档(公式 / 表格) | 300 万份 | 直接提取图文对 |
| OCR 1.0 | 自然场景图像 | 2000 万样本 | PaddleOCR 标注 |
| OCR 2.0 | 图表数据 | 1000 万张 | pyecharts/matplotlib 渲染 |
| OCR 2.0 | 化学式数据 | 500 万图文对 | RDKit 渲染 SMILES 格式 |
| OCR 2.0 | 平面几何数据 | 100 万样本 | Slow Perception 方法生成 |
| 通用数据 | 视觉任务数据 | 1 亿样本 | LAION 数据集采样 |
| 通用数据 | 纯文本数据 | 占比 10% | 内部预训练数据 |
3.2 两阶段训练流程
-
阶段一:DeepEncoder 训练
采用紧凑型 LLM 与下一个 token 预测框架,使用 OCR 1.0/2.0 数据 + 1 亿通用视觉数据,训练 2 个 epoch,批次大小 1280,优化器为 AdamW。
-
阶段二:端到端微调
联合编码器与 MoE 解码器,引入纯文本数据对齐语言能力。
4. 快速上手指南
4.1 环境配置
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Python | 3.12.9 | 官方示例环境 |
| CUDA | 11.8 | 适配 PyTorch 2.6.0 |
| PyTorch | 2.6.0 | HF 路线基础依赖 |
| Transformers | 4.46.3 | HF 推理必备 |
| Flash-Attn | 2.7.3 | 提升吞吐(可选) |
| vLLM | 0.8.5(cu118) | 生产级并发部署 |
4.2 基础使用示例(HF 路线)
4.2.1 安装依赖
pip install torch==2.6.0 transformers==4.46.3 flash-attn==2.7.3
4.2.2 图像转 Markdown
from transformers import AutoProcessor, AutoModelForCausalLM
import PIL.Image
\# 加载模型与处理器
processor = AutoProcessor.from\_pretrained("deepseek-ai/deepseek-ocr-base")
model = AutoModelForCausalLM.from\_pretrained("deepseek-ai/deepseek-ocr-base", device\_map="auto")
\# 加载图像与构建提示词
image = PIL.Image.open("document.png").convert("RGB")
prompt = "\<document: \<image>\n<|grounding|>Convert the document to markdown."
\# 预处理与推理
inputs = processor(prompt, image, return\_tensors="pt").to("cuda")
outputs = model.generate(
  \*\*inputs,
  max\_new\_tokens=1024,
  temperature=0.1,
  do\_sample=False,
  # 配置分辨率模式(Base模式)
  image\_size=1024,
  base\_size=1024,
  crop\_mode=False
)
\# 解析结果
result = processor.decode(outputs\[0], skip\_special\_tokens=True)
print(result)
4.3 生产级部署(vLLM 路线)
4.3.1 PDF 并发处理
\# 进入部署目录
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm/
\# 修改config.py配置输入/输出路径
\# 运行PDF处理脚本
python run\_dpsk\_ocr\_pdf.py
关键配置项(config.py):
\# 分辨率模式(Gundam动态模式)
BASE\_SIZE = 1024
IMAGE\_SIZE = 640
CROP\_MODE = True
\# 并发参数
MAX\_BATCH\_SIZE = 32
MAX\_SEQ\_LEN = 8192
性能参考:A100-40G 环境下 PDF 并发处理速度约 2500 tokens/s
5. 性能评估
5.1 与传统 OCR 工具对比
| 评估维度 | DeepSeek-OCR | Tesseract 5.3 | 百度 OCR API |
|---|---|---|---|
| 架构类型 | 端到端 VLM | 检测→识别三段式 | 规则 + 深度学习混合 |
| 长文档支持 | 优(视觉压缩) | 差(上下文断裂) | 中(API 长度限制) |
| 结构化输出 | 原生支持 Markdown / 表格 | 需额外后处理 | 部分支持表格 |
| 多模态能力 | 图表 / 化学式解析 | 无 | 有限 |
| 本地部署 | 支持(3B 参) | 支持(轻量) | 不支持 |
| 单页处理速度 | ~0.8s(Base 模式) | ~0.3s | ~0.5s |
5.2 核心性能指标
| 测试项 | 指标值 | 测试环境 |
|---|---|---|
| 中文识别准确率 | 98.2% | ICDAR 2019 数据集 |
| 英文识别准确率 | 98.7% | IIIT5K 数据集 |
| 表格结构正确率 | 92.5% | PubTabNet 数据集 |
| A100-40G 显存占用 | 8.2GB | Base 模式,批量 = 8 |
| 并发吞吐量 | 2500 tokens/s | PDF 处理,A100-40G |
6. 典型应用案例
6.1 学术论文解析
输入:含公式 / 表格的 PDF 论文页(1024×1024)
提示词 :<document: <image>\n<|grounding|>Extract text and tables, preserve formulas.
输出:带 LaTeX 公式的 Markdown 文档,表格结构完整。
6.2 报刊数字化
输入:多栏排版的报纸扫描件(3000×2000)
配置:Gundam 模式(4 个 640×640 局部视图 + 1 个全局视图)
输出:按栏目分段的纯文本,保留标题层级与图片说明。
7. 常见问题(FAQ)
-
Q:DeepSeek-OCR 与传统 OCR 的本质区别?
A:传统 OCR 专注 "字符识别",DeepSeek-OCR 核心是 "视觉 - 文本压缩",通过 LLM 实现结构化理解,将布局恢复转化为生成任务。
-
Q:视觉压缩真的比文本高效吗?
A:是的。相同信息量下,视觉 token 通过二维空间编码实现更高密度,例如 2000 字文本需~3000 文本 token,而 Base 模式仅需 256 视觉 token。
-
Q:如何选择分辨率模式?
A:纯文本用 Small/Base 模式;复杂排版(表格 / 多栏)优先 Gundam 模式;资源受限场景用 Tiny 模式。# DeepSeek-OCR 技术文档
1. 概述
1.1 产品定位
DeepSeek-OCR 是 DeepSeek-AI 推出的多模态端到端 OCR 模型,核心创新在于提出 "上下文光学压缩(Contexts Optical Compression)" 范式,通过视觉模态高效编码文本信息,为大型语言模型(LLM)处理长上下文问题提供全新解决方案。其不仅实现高精度文档识别,更通过视觉 token 压缩技术降低计算成本,适配长文档、复杂版面等场景。
1.2 核心优势
-
极致压缩效率:将长文本转化为少量视觉 token,2000 字文档可从数千文本 token 压缩至 256 个视觉 token
-
多分辨率适配:支持 4 档原生分辨率与动态分块模式,覆盖从简单文本到超高清报刊的全场景
-
高性价比架构:3B 参数量 MoE 解码器仅激活 570M 参数,平衡表达能力与推理效率
-
结构化输出:原生支持 Markdown、表格解析、图表描述等结构化结果生成
2. 核心技术架构
2.1 整体架构
DeepSeek-OCR 采用 "编码器 - 解码器" 端到端 VLM 架构,核心组件如下:
图像/PDF 提示词 输入层 DeepEncoder 编码器 DeepSeek-3B-MoE 解码器 输出层
-
DeepEncoder(380M 参):由 SAM-base 与 CLIP-large 串联,负责视觉特征提取与 token 压缩
-
DeepSeek-3B-MoE(3B 参):64 个路由专家 + 2 个共享专家,推理仅激活 570M 参数
2.2 DeepEncoder 核心设计
2.2.1 三段式架构
| 模块 | 参数量 | 核心功能 | 注意力机制 |
|---|---|---|---|
| SAM-base | 80M | 视觉感知特征提取 | 窗口注意力(window attention) |
| 16 倍 token 压缩器 | - | 降采样减少 token 数 | 卷积(3×3 核,步长 2) |
| CLIP-large | 300M | 视觉知识特征提取 | 全局注意力(global attention) |
工作流示例(1024×1024 输入):
-
图像分割为 4096 个 patch token
-
SAM-base 处理后经压缩器降至 256 个 token
-
CLIP-large 提取全局特征输出
2.2.2 分辨率模式
| 模式类型 | 子模式 | 分辨率 | 输出 token 数 | 适用场景 |
|---|---|---|---|---|
| 原生分辨率 | Tiny | 512×512 | 64 | 简单短文本 |
| 原生分辨率 | Small | 640×640 | 100 | 纯文本扫描件 |
| 原生分辨率 | Base | 1024×1024 | 256 | 常规文档 |
| 原生分辨率 | Large | 1280×1280 | 400 | 复杂排版 |
| 动态分辨率 | Gundam | n×640×640+1×1024×1024 | n×100+256 | 报刊 / 多栏 / 表格 |
2.3 视觉 - 文本压缩原理
视觉 token 与传统文本 token 的核心差异:
| 特性 | 文本 Token | 视觉 Token |
|---|---|---|
| 来源 | 固定词汇表(~10 万) | 图像像素实时生成 |
| 表示形式 | 离散整数 ID | 连续高维向量 |
| 信息密度 | 低(单 token 对应子词) | 高(含空间 / 纹理 / 布局信息) |
| 上下文能力 | 线性序列关系 | 二维空间 + 全局布局感知 |
| 词汇量 | 有限 | 理论无限 |
3. 数据工程与训练策略
3.1 训练数据集构成
| 数据类型 | 内容详情 | 规模 | 标注方式 |
|---|---|---|---|
| OCR 1.0 | 多语言 PDF(100 种语言) | 3000 万页 | 粗标注(fitz 提取)+ 精标注(PP-DocLayout 等) |
| OCR 1.0 | Word 文档(公式 / 表格) | 300 万份 | 直接提取图文对 |
| OCR 1.0 | 自然场景图像 | 2000 万样本 | PaddleOCR 标注 |
| OCR 2.0 | 图表数据 | 1000 万张 | pyecharts/matplotlib 渲染 |
| OCR 2.0 | 化学式数据 | 500 万图文对 | RDKit 渲染 SMILES 格式 |
| OCR 2.0 | 平面几何数据 | 100 万样本 | Slow Perception 方法生成 |
| 通用数据 | 视觉任务数据 | 1 亿样本 | LAION 数据集采样 |
| 通用数据 | 纯文本数据 | 占比 10% | 内部预训练数据 |
3.2 两阶段训练流程
-
阶段一:DeepEncoder 训练
采用紧凑型 LLM 与下一个 token 预测框架,使用 OCR 1.0/2.0 数据 + 1 亿通用视觉数据,训练 2 个 epoch,批次大小 1280,优化器为 AdamW。
-
阶段二:端到端微调
联合编码器与 MoE 解码器,引入纯文本数据对齐语言能力。
4. 快速上手指南
4.1 环境配置
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Python | 3.12.9 | 官方示例环境 |
| CUDA | 11.8 | 适配 PyTorch 2.6.0 |
| PyTorch | 2.6.0 | HF 路线基础依赖 |
| Transformers | 4.46.3 | HF 推理必备 |
| Flash-Attn | 2.7.3 | 提升吞吐(可选) |
| vLLM | 0.8.5(cu118) | 生产级并发部署 |
4.2 基础使用示例(HF 路线)
4.2.1 安装依赖
pip install torch==2.6.0 transformers==4.46.3 flash-attn==2.7.3
4.2.2 图像转 Markdown
from transformers import AutoProcessor, AutoModelForCausalLM
import PIL.Image
\# 加载模型与处理器
processor = AutoProcessor.from\_pretrained("deepseek-ai/deepseek-ocr-base")
model = AutoModelForCausalLM.from\_pretrained("deepseek-ai/deepseek-ocr-base", device\_map="auto")
\# 加载图像与构建提示词
image = PIL.Image.open("document.png").convert("RGB")
prompt = "\<document: \<image>\n<|grounding|>Convert the document to markdown."
\# 预处理与推理
inputs = processor(prompt, image, return\_tensors="pt").to("cuda")
outputs = model.generate(
  \*\*inputs,
  max\_new\_tokens=1024,
  temperature=0.1,
  do\_sample=False,
  # 配置分辨率模式(Base模式)
  image\_size=1024,
  base\_size=1024,
  crop\_mode=False
)
\# 解析结果
result = processor.decode(outputs\[0], skip\_special\_tokens=True)
print(result)
4.3 生产级部署(vLLM 路线)
4.3.1 PDF 并发处理
\# 进入部署目录
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm/
\# 修改config.py配置输入/输出路径
\# 运行PDF处理脚本
python run\_dpsk\_ocr\_pdf.py
关键配置项(config.py):
\# 分辨率模式(Gundam动态模式)
BASE\_SIZE = 1024
IMAGE\_SIZE = 640
CROP\_MODE = True
\# 并发参数
MAX\_BATCH\_SIZE = 32
MAX\_SEQ\_LEN = 8192
性能参考:A100-40G 环境下 PDF 并发处理速度约 2500 tokens/s
5. 性能评估
5.1 与传统 OCR 工具对比
| 评估维度 | DeepSeek-OCR | Tesseract 5.3 | 百度 OCR API |
|---|---|---|---|
| 架构类型 | 端到端 VLM | 检测→识别三段式 | 规则 + 深度学习混合 |
| 长文档支持 | 优(视觉压缩) | 差(上下文断裂) | 中(API 长度限制) |
| 结构化输出 | 原生支持 Markdown / 表格 | 需额外后处理 | 部分支持表格 |
| 多模态能力 | 图表 / 化学式解析 | 无 | 有限 |
| 本地部署 | 支持(3B 参) | 支持(轻量) | 不支持 |
| 单页处理速度 | ~0.8s(Base 模式) | ~0.3s | ~0.5s |
5.2 核心性能指标
| 测试项 | 指标值 | 测试环境 |
|---|---|---|
| 中文识别准确率 | 98.2% | ICDAR 2019 数据集 |
| 英文识别准确率 | 98.7% | IIIT5K 数据集 |
| 表格结构正确率 | 92.5% | PubTabNet 数据集 |
| A100-40G 显存占用 | 8.2GB | Base 模式,批量 = 8 |
| 并发吞吐量 | 2500 tokens/s | PDF 处理,A100-40G |
6. 典型应用案例
6.1 学术论文解析
输入:含公式 / 表格的 PDF 论文页(1024×1024)
提示词 :<document: <image>\n<|grounding|>Extract text and tables, preserve formulas.
输出:带 LaTeX 公式的 Markdown 文档,表格结构完整。
6.2 报刊数字化
输入:多栏排版的报纸扫描件(3000×2000)
配置:Gundam 模式(4 个 640×640 局部视图 + 1 个全局视图)
输出:按栏目分段的纯文本,保留标题层级与图片说明。
7. 常见问题(FAQ)
-
Q:DeepSeek-OCR 与传统 OCR 的本质区别?
A:传统 OCR 专注 "字符识别",DeepSeek-OCR 核心是 "视觉 - 文本压缩",通过 LLM 实现结构化理解,将布局恢复转化为生成任务。
-
Q:视觉压缩真的比文本高效吗?
A:是的。相同信息量下,视觉 token 通过二维空间编码实现更高密度,例如 2000 字文本需~3000 文本 token,而 Base 模式仅需 256 视觉 token。
-
Q:如何选择分辨率模式?
A:纯文本用 Small/Base 模式;复杂排版(表格 / 多栏)优先 Gundam 模式;资源受限场景用 Tiny 模式。