返回目录
开源项目其他开源工具类新手

GitHub - deepseek-ai/DeepSeek-OCR: Contexts Optical Compression

📥 Model Download | 📄 Paper Link | 📄 Arxiv Paper Link | DeepSeek-OCR: Contexts Optical Compression Explore the boundaries of visual-text compression. Release - [2026/01/27]🚀🚀🚀🚀🚀🚀 We present DeepSeek-OCR2 - [2025/10/23]🚀🚀🚀 DeepSeek-OCR is now

0 次阅读2026/09/14 发布
GitHub - deepseek-ai/DeepSeek-OCR: Contexts Optical Compression 来源图片

社区作者 · zZz

它解决什么问题

📥 Model Download | 📄 Paper Link | 📄 Arxiv Paper Link |

DeepSeek-OCR: Contexts Optical Compression

Explore the boundaries of visual-text compression.

Release

  • [2026/01/27]🚀🚀🚀🚀🚀🚀 We present DeepSeek-OCR2
  • [2025/10/23]🚀🚀🚀 DeepSeek-OCR is now officially supported in upstream vLLM . Thanks to the vLLM team for their help.
  • [2025/10/20]🚀🚀🚀 We release DeepSeek-OCR, a model to investigate the role of vision encoders from an LLM-centric viewpoint.

Contents

  • Install
  • vLLM Inference
  • Transformers Inference

Install

Our environment is cuda11.8+torch2.6.0.

  • Clone this repository and navigate to the DeepSeek-OCR folder
命令
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
可复制命令
Conda
命令
conda create -n deepseek-ocr python=3.12.9 -y
命令
conda activate deepseek-ocr
  • Packages
  • download the vllm-0.8.5 whl
命令
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
命令
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
命令
pip install -r requirements.txt
命令
pip install flash-attn==2.7.3 --no-build-isolation

Note: if you want vLLM and transformers codes to run in the same environment, you don't need to worry about this installation error like: vllm 0.8.5+cu118 requires transformers>=4.51.1

vLLM-Inference

  • VLLM:

Note: change the INPUT_PATH/OUTPUT_PATH and other settings in the DeepSeek-OCR-master/DeepSeek-OCR-vllm/config.py

命令
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
  • image: streaming output
命令
python run_dpsk_ocr_image.py
  • pdf: concurrency ~2500tokens/s(an A100-40G)
命令
python run_dpsk_ocr_pdf.py
  • batch eval for benchmarks
命令
python run_dpsk_ocr_eval_batch.py

[2025/10/23] The version of upstream vLLM :

命令
uv venv

source .venv/bin/activate

Until v0.11.1 release, you need to install vLLM from nightly build

命令
uv pip install -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly

from vllm import LLM , SamplingParams from vllm . model_executor . models . deepseek_ocr import NGramPerReqLogitsProcessor from PIL import Image

Create model instance

llm = LLM ( model = "deepseek-ai/DeepSeek-OCR" , enable_prefix_caching = False , mm_processor_cache_gb = 0 , logits_processors = [ NGramPerReqLogitsProcessor ] )

Prepare batched input with your image file

image_1 = Image . open ( "path/to/your/image_1.png" ). convert ( "RGB" ) image_2 = Image . open ( "path/to/your/image_2.png" ). convert ( "RGB" ) prompt = "<image> \n Free OCR."

model_input = [ { "prompt" : prompt , "multi_modal_data" : { "image" : image_1 } }, { "prompt" : prompt , "multi_modal_data" : { "image" : image_2 } } ]

sampling_param = SamplingParams ( temperature = 0.0 , max_tokens = 8192 ,

ngram logit processor args

extra_args = dict ( ngram_size = 30 , window_size = 90 , whitelist_token_ids = { 128821 , 128822 }, # whitelist: <td>, </td> ), skip_special_tokens = False , )

Generate output

model_outputs = llm . generate ( model_input , sampling_param )

Print output

for output in model_outputs : print ( output . outputs [ 0 ]. text )

Transformers-Inference

  • Transformers

from transformers import AutoModel , AutoTokenizer import torch import os os . environ [ "CUDA_VISIBLE_DEVICES" ] = '0' 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'

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 )

or you can

命令
cd DeepSeek-OCR-master/DeepSeek-OCR-hf
命令
python run_dpsk_ocr.py

Support-Modes

The current open-source model supports the following modes:

  • Native resolution:
  • Tiny: 512×512 (64 vision tokens)✅
  • Small: 640×640 (100 vision tokens)✅
  • Base: 1024×1024 (256 vision tokens)✅
  • Large: 1280×1280 (400 vision tokens)✅
  • Dynamic resolution
  • Gundam: n×640×640 + 1×1024×1024 ✅

Prompts examples

document: <image>\n<|grounding|>Convert the document to markdown.

other image: <image>\n<|grounding|>OCR this image.

without layouts: <image>\nFree OCR.

figures in document: <image>\nParse the figure.

general: <image>\nDescribe this image in detail.

rec: <image>\nLocate <|ref|>xxxx<|/ref|> in the image.

'先天下之忧而忧'

Visualizations

Acknowledgement

We would like to thank Vary , GOT-OCR2.0 , MinerU , PaddleOCR , OneChart , Slow Perception for their valuable models and ideas.

We also appreciate the benchmarks: Fox , OminiDocBench .

Citation

@article { wei2025deepseek , title = { DeepSeek-OCR: Contexts Optical Compression } , author = { Wei, Haoran and Sun, Yaofeng and Li, Yukun } , journal = { arXiv preprint arXiv:2510.18234 } , year = { 2025 } }

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

Install Our environment is cuda11.8+torch2.6.0.

  • Install
  • vLLM Inference
  • Transformers Inference
  • Clone this repository and navigate to the DeepSeek-OCR folder
命令
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
可复制命令
Conda
命令
conda create -n deepseek-ocr python=3.12.9 -y
命令
conda activate deepseek-ocr
  • Packages
  • download the vllm-0.8.5 whl
命令
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
命令
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
命令
pip install -r requirements.txt
命令
pip install flash-attn==2.7.3 --no-build-isolation

Note: if you want vLLM and transformers codes to run in the same environment, you don't need to worry about this installation error like: vllm 0.8.5+cu118 requires transformers>=4.51.1 vLLM-Inference

Note: change the INPUT_PATH/OUTPUT_PATH and other settings in the DeepSeek-OCR-master/DeepSeek-OCR-vllm/config.py

  • VLLM:
命令
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
  • image: streaming output
命令
python run_dpsk_ocr_image.py
  • pdf: concurrency ~2500tokens/s(an A100-40G)
命令
python run_dpsk_ocr_pdf.py
  • batch eval for benchmarks
命令
python run_dpsk_ocr_eval_batch.py

[2025/10/23] The version of upstream vLLM :

命令
uv venv

source .venv/bin/activate

Until v0.11.1 release, you need to install vLLM from nightly build

命令
uv pip install -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly

from vllm import LLM , SamplingParams from vllm . model_executor . models . deepseek_ocr import NGramPerReqLogitsProcessor from PIL import Image

Create model instance

llm = LLM ( model = "deepseek-ai/DeepSeek-OCR" , enable_prefix_caching = False , mm_processor_cache_gb = 0 , logits_processors = [ NGramPerReqLogitsProcessor ] )

Prepare batched input with your image file

image_1 = Image . open ( "path/to/your/image_1.png" ). convert ( "RGB" ) image_2 = Image . open ( "path/to/your/image_2.png" ). convert ( "RGB" ) prompt = "<image> \n Free OCR.

" model_input = [ { "prompt" : prompt , "multi_modal_data" : { "image" : image_1 } }, { "prompt" : prompt , "multi_modal_data" : { "image" : image_2 } } ] sampling_param = SamplingParams ( temperature = 0.0 , max_tokens = 8192 ,

ngram logit processor args

extra_args = dict ( ngram_size = 30 , window_size = 90 , whitelist_token_ids = { 128821 , 128822 }, # whitelist: <td>, </td> ), skip_special_tokens = False , )

Generate output

model_outputs = llm . generate ( model_input , sampling_param )

Print output

for output in model_outputs : print ( output . outputs [ 0 ]. text ) Transformers-Inference

from transformers import AutoModel , AutoTokenizer import torch import os os . environ [ "CUDA_VISIBLE_DEVICES" ] = '0' 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 )

  • Transformers

prompt = "<image>\nFree OCR. "

prompt = "<image> \n <|grounding|>Convert the document to markdown. " image_file = 'your_image.jpg' output_path = 'your/output/dir' 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 ) or you can

命令
cd DeepSeek-OCR-master/DeepSeek-OCR-hf
命令
python run_dpsk_ocr.py

来源教程配图

DeepSeek AI
配图 1 · DeepSeek AI查看原图
教程配图
配图 2 · 教程配图查看原图
教程配图
配图 3 · 教程配图查看原图
教程配图
配图 4 · 教程配图查看原图
教程配图
配图 5 · 教程配图查看原图
教程配图
配图 6 · 教程配图查看原图

适用场景

学习研究
开源项目实践