DeepSeek的新OCR将文档压缩10倍

DeepSeek的新OCR将文档压缩10倍

文章目录

  • 什么是DeepSeek OCR?
  • 上下文光学压缩
  • 视觉语言OCR模型
  • DeepSeek OCR架构
  • DeepEncoder(视觉编码器)
  • DeepSeek-3B-MoE解码器
  • 多分辨率输入模式
  • 如何访问DeepSeek OCR?
  • 尝试DeepSeek OCR
  • 基本文档转换
  • 复杂文档处理
  • 刷新缓存
  • 性能和基准测试
  • Fox Benchmark压缩测试
  • OmniDocBench上的表现
  • 小结

DeepSeek的新OCR将文档压缩10倍

几天前,DeepSeek 社区推出了其最新、最先进的文本到视觉模型:DeepSeek-OCR,它正在改变我们从图像中提取文本的方式。此前,我们一直依赖传统的 OCR 模型,这些模型在从 PDF、图像或杂乱的手写笔记中提取文本时,准确性和布局理解能力都存在问题。

但是,DeepSeek-OCR 彻底改变了这一切。

它能够以极高的精度专业地读取、理解视觉文本并将其转换为数字文本。DeepSeek-OCR 不仅仅是一个 OCR 工具,它是一个基于 DeepSeek-VL2 视觉语言模型 (VLM) 构建的智能视觉文本系统,该模型以速度和准确性著称。它可以通过先进的视觉算法轻松识别多种语言的视觉文本,即使是手写文本也是如此。在本文中,我们将研究 DeepSeek-OCR 的架构,并在几张文本图像上测试其功能。

什么是DeepSeek OCR?

DeepSeek-OCR 是一个多模态系统,通过将文本转换为视觉表示来压缩文本。它也采用编码器和解码器风格的架构。首先,它将整个文档编码为图像形式,然后利用视觉语言模型恢复文本。实际上,这意味着通常包含数千个标记的一页文本最终仅由几百个视觉标记表示。DeepSeek 将这种方法称为“上下文光学压缩”。

什么是DeepSeek OCR?

Source: DeepSeek-OCR

上下文光学压缩

DeepSeek 会通过编码器从图像中提取文本,但不会将所有单词都输入模型,而只是将文本显示为图像。例如,对于一个页面,图像可能只需要 200-400 个标记,而对于全是文本的页面,可能需要 2000-5000 个文本标记。

视觉标记可以更密集地捕获所有基本信息,例如布局、间距、单词形状。视觉编码器学习压缩图像,以便解码器可以重建原始文本,这意味着:每个视觉标记可以编码相当于许多文本标记的信息。

视觉语言OCR模型

由于视觉标记可以轻松捕获布局和单词形状,因此,它们共同构成了视觉语言模型的端到端图像到文本的流程,类似于一般的视觉转换器。然而,由于视觉标记能够更密集地捕获信息,我们能够减少所需的标记数量,并最大限度地提高模型对文本视觉结构的关注度。

DeepSeek OCR架构

DeepSeek-OCR 采用两阶段编码器-解码器架构,其工作原理如下:DeepEncoder(约 3.8 亿个参数)对图像进行编码以生成视觉标记,DeepSeek-3B-MoE(约 5.7 亿个活动参数)将标记扩展回文本。

DeepSeek OCR架构

Source: DeepSeek-OCR

DeepEncoder(视觉编码器)

DeepEncoder 由两个串联的视觉转换器组成。第一个是 SAM-base 模块,拥有 80M 个参数,使用窗口化自注意力机制来编码局部细节。第二个是 CLIP-large 模块,拥有 300M 个参数,使用全局注意力机制来编码整体布局。

在两个视觉转换器之间,有一个卷积模块,它将视觉标记的数量从 16 倍减少 16 倍。例如,一张 1024×1024 的图像被解析成 4096 个块,然后减少到只有 256 个标记。

  • SAM-base(80M):使用窗口化自注意力机制来扫描精细的图像细节。
  • CLIP-large(300M):应用密集注意力机制来编码全局上下文。
  • 16 倍卷积:减少视觉标记的数量(例如,1024² 的标记数量从 4096 减少到 256)。

DeepSeek-3B-MoE解码器

解码器模块是一个采用混合专家架构的语言转换器。该模型包含 64 位专家,但平均每个标记只有 6 位专家处于活跃状态,用于将视觉标记扩展回文本。小型解码器在丰富的文档数据上进行训练,作为 OCR 类型的任务,例如文本、数学方程式、图表、化学图表和混合语言。因此,它可以扩展每个标记中大致的素材范围。

  • 混合专家:总共 64 位专家,每一步有 6 位活跃专家
  • 视觉到文本训练:使用来自一般文档的 OCR 类型数据进行训练,保留来自各种文本来源的布局设置。

多分辨率输入模式

DeepSeek-OCR 支持多种输入分辨率,允许用户选择细节与压缩之间的平衡。它提供四种原生模式,以及一种特殊的 Gundam(平铺)模式:

模式 分辨率 约视觉标记数 描述
微型模式 512×512 ~64 超轻量级模式,适用于快速扫描和简单文档处理
小型模式 640×640 ~100 平衡速度与精度的默认模式
基础模式 1024×1024 ~256 高质量OCR模式,适用于详细文档分析
大型模式 1280×1280 ~400 高精度模式,专为布局复杂的密集型文档设计
高达动态模式 动态分块:<br>n×640×640 + 1×1024×1024 变量<br>(典型值:n×100 + 256) 动态分辨率模式,通过将超高分辨率文档分割为多个区块,专门处理极端复杂的复合型文档架构

这种灵活性使得 DeepSeek 能够根据页面的复杂程度,以不同的方式进行压缩。

如何访问DeepSeek OCR?

安装必要的库

!pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118 
!pip install flash-attn 
!pip install transformers==4.46.3 
!pip install accelerate==1.1.1 
!pip install safetensors==0.4.5 
!pip install addict

安装完成后,进入步骤 2。

加载模型

from transformers import AutoModel, AutoTokenizer
import torch
model_name = "deepseek-ai/DeepSeek-OCR"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True, use_safetensors=True)
model = model.eval().cuda().to(torch.bfloat16)

尝试DeepSeek OCR

现在我们已经了解了如何使用 DeepSeek OCR,我们将通过两个示例进行测试:

基本文档转换

此示例处理 PNG 文档图像,使用 DeepSeek 的视觉标记提取所有文本内容,并将其转换为干净的 Markdown 格式,同时测试模型的压缩能力。

prompt = "<image>\n<|grounding|>Convert the document to markdown. "
image_file = '/content/img_1.png'
output_path = '/content/out_1'
res = model.infer(tokenizer, prompt=prompt, image_file=image_file, 
output_path=output_path, base_size=1024, image_size=640, 
crop_mode=True, save_results=True, test_compress=True)

这将在 GPU 上加载 DeepSeek-OCR。在提供的示例提示中,指示将文档转换为 Markdown 格式。在 output_path 中,我们将保存运行 infer() 后识别出的文本。

输入图像:

Input-Image-DeepSeek-OCR

Source: Image

DeepSeek OCR的回应:

DeepSeek-OCR-Output

复杂文档处理

本示例演示了如何处理更复杂的 JPG 文档,在转换为 Markdown 格式的同时保持格式和布局结构,展现了该模型处理高难度视觉文本场景的能力。

prompt = "<image>\n<|grounding|>Convert the document to markdown. "
image_file = '/content/img_2.jpg'
output_path = '/content/out_2'
res = model.infer(tokenizer, prompt=prompt, image_file=image_file,
output_path=output_path, base_size=1024, image_size=640,
crop_mode=True, save_results=True, test_compress=True)

输入图像:

Complex-Document-Processing-1

Source: Image

DeepSeek OCR 的响应:

Output-from-DeepSeek-OCR

我们可以使用 small/medium/large base_size/image_size 来生成 Tiny、Small、Base 或 Large 模式,以获得不同的性能输出。

刷新缓存

现在,所有库都已安装完毕,并且您已运行上述代码块并遇到任何错误,请运行以下命令,如果您使用的是 Jupyter Notebook 或 Collab,请重启内核。此命令将删除缓存中的所有数据和预先存在的变量。

!rm -rf ~/.cache/huggingface/modules/transformers_modules/deepseek-ai/DeepSeek-OCR/

注意:硬件配置要求:CUDA GPU,搭配约 16-30GB VRAM(例如 A100),用于处理大图像。完整代码请访问此处

性能和基准测试

DeepSeek-OCR 实现了卓越的压缩率和 OCR 准确率,如下图所示。基准测试中的对比结果反映了该模型在不损失准确率的情况下对视觉标记进行编码的程度。

DeepSeek-Performance

Source: DeepSeek-OCR

Fox Benchmark压缩测试

DeepSeek-OCR 即使在更高压缩率下也能展现出良好的文本保留率。在 10 倍压缩率下,每页仅需 64-100 个视觉标记,即可达到 96% 以上的准确率;在 15-20 倍压缩率下,准确率仍可维持在 85-87% 左右。这表明该模型能够高效地编码大量文本,这为大型语言模型提供了在有限标记使用量的情况下处理更长文档的机会。

视觉 Tokens 精度 (%) 压缩率 (×)
64 Tokens 96.5% 10×
64 Tokens 85.8% 15×
100 Tokens 97.3% 10×
100 Tokens 87.1% 20×

OmniDocBench上的表现

在 OmniDocBench 上,DeepSeek-OCR 的表现超越了领先的 OCR 模型和视觉语言模型,实现了编辑距离 (ED) < 0.25 的准确率,接近人类水平。尽管 DeepSeek-OCR 每张图像使用的视觉标记数量不到 1000 个,但仍取得了如此令人印象深刻的成果,而其他模型(如 Qwen2.5-VL、InternVL3 或 GOT-OCR2.0)则需要使用超过 1500 个视觉标记才能达到相当的准确率。

模型 平均视觉标记数/图像 编辑距离(越低越好) 准确度区域 备注
DeepSeek-OCR (高达-M 200dpi) <1000 <0.25 高准确度 精度与效率的最佳平衡
DeepSeek-OCR (基础/大型) <1000 <0.25 高准确度 持续保持顶尖性能
GOT-OCR2.0 >1500 >0.35 中等 需要消耗更多视觉标记
Qwen2.5-VL / InternVL3 >1500 >0.30 中等 处理效率相对较低
SmolDocling <500 >0.45 低准确度 体积小巧但OCR质量较弱

小结

Deepseek-OCR 为文本读取提供了一种全新的创新方法。它通过使用视觉作为压缩层,显著减少了文本的 token 使用量(通常可降低 7-20 倍),同时仍保留了大部分信息。该模型是开源的,任何开发者都可以使用。

这对于能够以紧凑、高效的方式表示文本的人工智能来说意义重大。大多数 OCR 在处理手写文本(尤其是在医疗收据上)时都会失败。但 DeepSeek-OCR 在这方面也表现出色。它传递的信息超越了 OCR 本身,并指向了人工智能记忆和上下文管理的新可能性。

评论留言

闪电侠

(工作日 10:00 - 18:30 为您服务)

2026-01-29 20:09:57

您好,无论是售前、售后、意见建议……均可通过联系工单与我们取得联系。

您也可选择聊天工具与我们即时沟通或点击查看:

您的工单我们已经收到,我们将会尽快跟您联系!
取消
选择聊天工具: