news 2026/9/28 20:24:55

DeepSeek-OCR-2 vLLM部署指南:用AsyncLLMEngine构建流式输出OCR推理服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek-OCR-2 vLLM部署指南:用AsyncLLMEngine构建流式输出OCR推理服务

DeepSeek-OCR-2 vLLM部署指南:用AsyncLLMEngine构建流式输出OCR推理服务

【免费下载链接】DeepSeek-OCR-2Visual Causal Flow项目地址: https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2

DeepSeek-OCR-2 是 DeepSeek 推出的新一代视觉因果流(Visual Causal Flow)OCR 大模型,支持将文档图片高保真地转换为 Markdown。本文带你用 vLLM 部署 DeepSeek-OCR-2,通过AsyncLLMEngine实现逐 token 流式输出,并掌握图片流式推理与 PDF 高并发批处理两种服务模式,快速搭建你的 OCR 推理服务。

项目亮点:为什么选择 DeepSeek-OCR-2

DeepSeek-OCR-2 的视觉编码器DeepEncoder V2采用"LM as Vision Encoder"设计——用 Qwen2 语言模型代替传统 CLIP 作为视觉编码器,并引入因果可读顺序(new reading order),让模型像人眼一样按阅读顺序"扫描"文档。

对比 v1 架构可以看到,v2 在 non-causal 的 Tokenizer 之后新增了 causal 的 LM 视觉编码层,这正是文档理解能力跃升的关键。

环境准备:一键安装步骤

官方推荐环境为CUDA 11.8 + PyTorch 2.6.0 + vLLM 0.8.5:

# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2 cd DeepSeek-OCR-2/DeepSeek-OCR2-master/DeepSeek-OCR2-vllm # 2. 创建 Python 环境 conda create -n deepseek-ocr2 python=3.12.9 -y conda activate deepseek-ocr2 # 3. 安装依赖(torch cu118 + vllm 0.8.5 whl + flash-attn) 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 # 需提前下载该 whl pip install -r ../../requirements.txt pip install flash-attn==2.7.3 --no-build-isolation

⚠️ 安装时若提示vllm 0.8.5+cu118 requires transformers>=4.51.1的版本冲突,可忽略——vLLM 与 Transformers 双端运行不受影响。

核心原理:AsyncLLMEngine 如何实现流式输出

流式推理的核心在 run_dpsk_ocr2_image.py 的stream_generate函数,关键只有三步:

  1. 注册模型:将自定义的多模态模型 DeepseekOCR2ForCausalLM 注册到 vLLM 的ModelRegistry;
  2. 构建异步引擎:AsyncLLMEngine.from_engine_args(AsyncEngineArgs(...)),设置max_model_len=8192、gpu_memory_utilization=0.75;
  3. 异步迭代增量文本:
async for request_output in engine.generate(request, sampling_params, request_id): full_text = request_output.outputs[0].text new_text = full_text[printed_length:] # 只打印新增部分 print(new_text, end='', flush=True) printed_length = len(full_text)

async for每轮拿到的是累计全文,用printed_length切出增量即可实现打字机效果——这是构建 SSE 流式 OCR API 的标准做法。

此外还挂载了NoRepeatNGramLogitsProcessor(见 process/ngram_norepeat.py),通过 n-gram 去重防止长表格输出陷入重复循环,并对<td>、</td>加白名单保护 HTML 结构不被误杀。

场景一:图片流式 OCR(推荐入门)

python run_dpsk_ocr2_image.py

运行流程:

  • 读取INPUT_PATH图片 →DeepseekOCR2Processor动态分块编码(见 process/image_process.py);
  • AsyncLLMEngine 逐 token 流式输出 Markdown;
  • 自动后处理:解析<|ref|>定位框 → 在图上绘制彩色边界框、裁出内嵌图片,最终产出 3 样文件:
    • result.mmd:干净版 Markdown(含图片引用)
    • result_with_boxes.jpg:带布局框标注的可视化图
    • images/:从文档中裁剪出的子图

动态分辨率默认 (0~6)×768×768 + 1×1024×1024 分块,最大仅 256+144 个视觉 token,显存占用非常友好。

场景二:PDF 高并发批处理

python run_dpsk_ocr2_pdf.py

PDF 场景改用同步LLM接口 +max_num_seqs=MAX_CONCURRENCY(默认 100 并发),配合 64 个预处理的线程池,整体速度与 DeepSeek-OCR 持平。流程为:PDF 逐页 144 DPI 渲染 → 批量推理 → 合并输出带分页标记的.mmd,并用img2pdf回排出布局标注 PDF。

关键参数调优清单

所有参数集中在 config.py,上手必改 3 处:

参数说明建议
MODEL_PATH模型路径填本地权重目录或deepseek-ai/DeepSeek-OCR-2
INPUT_PATH/OUTPUT_PATH输入输出目录按你的数据改
MAX_CONCURRENCY并发数显存不足时调低(如 32)
PROMPT推理提示词见下方两种模式
NUM_WORKERS图像预处理线程CPU 核多可上调

两种官方提示词:

  • 文档转 Markdown(带布局):<image>\n<|grounding|>Convert the document to markdown.
  • 纯文字 OCR(无布局):<image>\nFree OCR.

批量评测基准(如 OmniDocBench v1.5)则使用 run_dpsk_ocr2_eval_batch.py。

常见问题速查

  • 显存不够 OOM?调低gpu_memory_utilization与MAX_CONCURRENCY,或换 24G 以上显存的 GPU;
  • 输出表格无限重复?确认已启用NoRepeatNGramLogitsProcessor,PDF 场景可关闭SKIP_REPEAT观察;
  • 图片方向错乱?推理脚本内置 EXIF 转正(ImageOps.exif_transpose),无需手动处理;
  • 想用 HuggingFace 直接推理?见 DeepSeek-OCR2-hf/run_dpsk_ocr2.py,基于flash_attention_2,适合快速验证而非高吞吐服务。

总结

DeepSeek-OCR-2 的 vLLM 部署路径非常清晰:AsyncLLMEngine负责单图流式输出、LLM批量接口负责 PDF 高并发,二者共享同一套模型注册与动态分辨率编码逻辑。按照本指南 30 分钟内即可跑通首个流式 OCR 请求,并在此基础上轻松封装为 HTTP/SSE 推理服务。

【免费下载链接】DeepSeek-OCR-2Visual Causal Flow项目地址: https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 20:22:36

从Splat到网格:Spirula Studio的Meshing表面提取流程全解析

从Splat到网格&#xff1a;Spirula Studio的Meshing表面提取流程全解析 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

作者头像 李华
网站建设 2026/9/28 20:21:54

怎么改别人电脑里面的MySQL密码

MySQL密码忘记了&#xff0c;怎么改第 1 步&#xff1a;以管理员身份打开 CMD键盘按 Win 键&#xff0c;输入 cmd看到「命令提示符」→ 右键​ → 选 「以管理员身份运行」一定要管理员&#xff0c;不然后面会报错。第 2 步&#xff1a;停掉 MySQL 服务net stop MySQL80如果提示…

作者头像 李华
网站建设 2026/9/28 20:20:29

别再自建网关!2026年企业级AI大模型API聚合平台深度测评

AI 大模型正在加速企业数字化转型&#xff0c;2026 年"基础设施"层面的变革步入深水区&#xff1a;企业想同时用上 GPT、Claude、Gemini、DeepSeek、Qwen、Llama 等主流模型&#xff0c;还要保障网络连通性、统一结算与合规管控&#xff0c;难度不小&#xff0c;国内…

作者头像 李华