目标:在本地 GPU 服务器上运行 DeepSeek-OCR,支持图像/PDF 输入,输出结构化 Markdown 或纯文本。


一、环境要求

表格

组件 要求
OS Linux(推荐 Ubuntu 22.04+)
GPU NVIDIA A100/A10/L4 等(≥24GB 显存,A100-40G 可跑 PDF 模式)
CUDA ≥11.8
Python 3.12.9(官方指定)
PyTorch 2.6.0 + cu118
vLLM 0.8.5(官方提供 wheel)
Disk ≥20GB(模型约 15GB)

⚠️ 注意:不支持 CPU 推理,必须使用 GPU。


二、环境配置(Conda + 官方依赖)

bash

编辑

<em>1</em><em># 1. 克隆仓库</em><em>2</em>git clone https://github.com/deepseek-ai/DeepSeek-OCR.git<em>3</em>cd DeepSeek-OCR<em>4</em><em>5</em><em># 2. 创建 Conda 环境(Python 3.12.9)</em><em>6</em>conda create -n deepseek-ocr python=3.12.9 -y<em>7</em>conda activate deepseek-ocr<em>8</em><em>9</em><em># 3. 安装 PyTorch(CUDA 11.8)</em><em>10</em>pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 \<em>11</em>    --index-url https://download.pytorch.org/whl/cu118<em>12</em><em>13</em><em># 4. 下载并安装 vLLM 0.8.5(官方提供 wheel)</em><em>14</em><em># 从 https://github.com/vllm-project/vllm/releases/tag/v0.8.5 下载对应 wheel</em><em>15</em>wget https://github.com/vllm-project/vllm/releases/download/v0.8.5/vllm-0.8.5+cu118-cp312-abi3-manylinux1_x86_64.whl<em>16</em>pip install vllm-0.8.5+cu118-cp312-abi3-manylinux1_x86_64.whl<em>17</em><em>18</em><em># 5. 安装其他依赖</em><em>19</em>pip install -r requirements.txt<em>20</em>pip install flash-attn==2.7.3 --no-build-isolation

✅ requirements.txt 包含 transformers、Pillow、pdf2image 等。


三、模型下载

模型托管于 Hugging Face:

🔗 模型地址https://huggingface.co/deepseek-ai/DeepSeek-OCR

自动下载(通过代码)

首次运行推理脚本时会自动从 HF 下载(需登录):

bash

编辑

<em>1</em>huggingface-cli login  <em># 输入你的 HF Token(需同意协议)</em>

手动下载(可选)

bash

编辑

<em>1</em>git lfs install<em>2</em>git clone https://huggingface.co/deepseek-ai/DeepSeek-OCR ./models/DeepSeek-OCR

然后在代码中指定 model_name="./models/DeepSeek-OCR"


四、推理方式选择

DeepSeek-OCR 提供两种后端:

表格

方式 优点 适用场景
vLLM 高吞吐(PDF 达 2500 tokens/s) 批量处理、生产部署
Transformers 调试友好、支持 infer() 接口 单图测试、结果可视化

五、调用示例

方式 1:使用 Transformers(单图测试)

python

编辑

<em>1</em>from transformers import AutoModel, AutoTokenizer<em>2</em>import torch<em>3</em><em>4</em>model_name = "deepseek-ai/DeepSeek-OCR"<em>5</em>tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)<em>6</em>model = AutoModel.from_pretrained(<em>7</em>    model_name,<em>8</em>    _attn_implementation="flash_attention_2",<em>9</em>    trust_remote_code=True,<em>10</em>    use_safetensors=True,<em>11</em>    torch_dtype=torch.bfloat16<em>12</em>).eval().cuda()<em>13</em><em>14</em><em># 推理</em><em>15</em>result = model.infer(<em>16</em>    tokenizer=tokenizer,<em>17</em>    prompt="<image>\n<|grounding|>Convert the document to markdown.",<em>18</em>    image_file="your_doc.jpg",<em>19</em>    output_path="./output",<em>20</em>    base_size=1024,<em>21</em>    image_size=640,<em>22</em>    crop_mode=True,<em>23</em>    save_results=True,<em>24</em>    test_compress=True<em>25</em>)<em>26</em><em>27</em>print("OCR Result:\n", result["text"])

方式 2:使用 vLLM(高并发)

编辑 DeepSeek-OCR-vllm/config.py 设置路径,然后运行:

bash

编辑

<em>1</em>cd DeepSeek-OCR-vllm<em>2</em>python run_dpsk_ocr_image.py  <em># 处理单图</em><em>3</em>python run_dpsk_ocr_pdf.py    <em># 处理 PDF(A100-40G 支持)</em>

或直接 API 调用(参考官方 vLLM 示例):

python

编辑

<em>1</em>from vllm import LLM, SamplingParams<em>2</em>from vllm.model_executor.models.deepseek_ocr import NGramPerReqLogitsProcessor<em>3</em>from PIL import Image<em>4</em><em>5</em>llm = LLM(<em>6</em>    model="deepseek-ai/DeepSeek-OCR",<em>7</em>    enable_prefix_caching=False,<em>8</em>    mm_processor_cache_gb=0,<em>9</em>    logits_processors=[NGramPerReqLogitsProcessor]<em>10</em>)<em>11</em><em>12</em>image = Image.open("invoice.png").convert("RGB")<em>13</em>prompt = "<image>\n<|grounding|>Convert the document to markdown."<em>14</em><em>15</em>sampling_params = SamplingParams(<em>16</em>    temperature=0.0,<em>17</em>    max_tokens=8192,<em>18</em>    extra_args=dict(<em>19</em>        ngram_size=30,<em>20</em>        window_size=90,<em>21</em>        whitelist_token_ids={128821, 128822}  <em># <td>, </td></em><em>22</em>    ),<em>23</em>    skip_special_tokens=False<em>24</em>)<em>25</em><em>26</em>outputs = llm.generate(<em>27</em>    {"prompt": prompt, "multi_modal_data": {"image": image}},<em>28</em>    sampling_params<em>29</em>)<em>30</em><em>31</em>print(outputs[0].outputs[0].text)

六、提示词(Prompt)模板

DeepSeek-OCR 使用特殊 token 控制行为:

表格

任务 Prompt
通用 OCR(无布局) <image>\nFree OCR.
文档转 Markdown `\n<
表格解析 <image>\nParse the table in markdown format.
图表理解 <image>\nParse the figure.
全文描述 <image>\nDescribe this image in detail.
关键词定位 `\nLocate <

✅ <|grounding|> 是关键 token,启用 layout-aware 模式。


七、输出示例

输入一张发票图片,输出 Markdown:

markdown

编辑

<em>1</em># 增值税专用发票<em>2</em><em>3</em>| 项目         | 内容                     |<em>4</em>|--------------|--------------------------|<em>5</em>| 发票代码     | 144032400110             |<em>6</em>| 发票号码     | 89237465                 |<em>7</em>| 开票日期     | 2024年05月01日           |<em>8</em>| 销售方名称   | 深圳市科技有限公司       |<em>9</em>| 金额(不含税)| ¥1,280.00               |<em>10</em><em>11</em>> 备注:此发票仅用于内部报销。

八、Docker 化部署(可选)

虽然官方未提供 Dockerfile,但可自行构建:

dockerfile

编辑

<em>1</em><em># Dockerfile</em><em>2</em>FROM nvidia/cuda:11.8-devel-ubuntu22.04<em>3</em><em>4</em>ENV DEBIAN_FRONTEND=noninteractive<em>5</em>RUN apt update && apt install -y python3.12 python3-pip git wget<em>6</em><em>7</em>WORKDIR /app<em>8</em>COPY . /app<em>9</em><em>10</em>RUN pip install torch==2.6.0+cu118 torchvision==0.21.0+cu118 torchaudio==2.6.0 --extra-index-url https://download.pytorch.org/whl/cu118<em>11</em>RUN pip install vllm-0.8.5+cu118-cp312-abi3-manylinux1_x86_64.whl<em>12</em>RUN pip install -r requirements.txt<em>13</em>RUN pip install flash-attn==2.7.3 --no-build-isolation<em>14</em><em>15</em>EXPOSE 8000<em>16</em>CMD ["python", "DeepSeek-OCR-vllm/run_dpsk_ocr_image.py"]

构建 & 运行:

bash

编辑

<em>1</em>docker build -t deepseek-ocr .<em>2</em>docker run --gpus all -v $(pwd)/input:/input -v $(pwd)/output:/output deepseek-ocr

九、性能与限制

表格

模式 分辨率 Vision Tokens 显存占用 速度(A100-40G)
Tiny 512×512 64 ~12GB 极快
Base 1024×1024 256 ~20GB
Large 1280×1280 400 ~28GB
PDF(动态) Gundam n×640 + 1×1024 ~35GB ~2500 tok/s

💡 建议:普通文档用 Base 模式,表格/复杂布局用 Large


十、参考链接


✅ 至此,你已掌握 DeepSeek-OCR 的完整部署链路。该模型在中文票据、学术 PDF、表格重建等场景表现优异,是当前开源 OCR 领域的 SOTA 方案之一。