当前位置: 首页 > news >正文

Docker 部署 DeepSeek-OCR 和WebUI

在这里插入图片描述

相关链接

  • DeepSeek-OCR-WebUI: https://github.com/neosun100/DeepSeek-OCR-WebUI
  • DeepSeek-OCR 官方仓库: https://github.com/deepseek-ai/DeepSeek-OCR
  • MinerU 在线 Demo: https://opendatalab.com/OpenSourceTools/Extractor/PDF/

1 核心亮点

DeepSeek-OCR-WebUI介绍
• 🎯 7 种识别模式 - 文档、OCR、图表、查找、自定义等
• 🖼️ 边界框可视化 - Find 模式自动标注位置
• 📦 批量处理 - 支持多张图片逐一识别
• 📄 PDF 支持 - 上传 PDF 文件,自动转换为图片
• 🎨 现代化 UI - 炫酷的渐变背景和动画效果
• 🌐 多语言支持 - 简体中文、繁体中文、英语、日语
• 🍎 Apple Silicon 支持 - Mac M1/M2/M3/M4 原生 MPS 加速
• 🐳 Docker 部署 - 一键启动,开箱即用
• ⚡ GPU 加速 - 基于 NVIDIA GPU 的高性能推理
• 🌏 ModelScope 自动切换 - HuggingFace 不可用时自动切换

2 功能特性

7 种识别模式

模式图标说明适用场景
文档转Markdown📄保留格式和布局合同、论文、报告
通用OCR📝提取所有可见文字图片文字提取
纯文本提取📋纯文本不保留格式简单文本识别
图表解析📊识别图表和公式数据图表、数学公式
图像描述🖼️生成详细描述图片理解、无障碍
查找定位 ⭐🔍查找并标注位置发票字段定位
自定义提示 ⭐自定义识别需求灵活的识别任务

PDF 支持(v3.2 新功能)
DeepSeek-OCR-WebUI 现已支持 PDF 文件上传!上传 PDF 文件后,系统会自动将每一页转换为独立的图片,并保持后续的所有处理逻辑(OCR识别、批量处理等)。

技术架构
• 引擎: transformers(稳定可靠)
• 模型: deepseek-ai/DeepSeek-OCR
• GPU: NVIDIA L40S (自动检测)
• 推理模式: bfloat16
• 批处理: 逐一顺序处理

操作系统环境为环境为 ubuntu-24.04.4 Server 安装docker 自行处理

# 1. 更新软件包索引:
sudo apt-get update# 2. 安装必要的软件包,以允许apt通过HTTPS使用仓库:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common# 3. 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 4. 添加Docker的稳定仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 5. 再次更新软件包索引
sudo apt-get update# 6. 安装最新版本的Docker CE(社区版)
sudo apt-get install docker-ce# 7. 验证Docker是否安装成功并运行:
sudo systemctl status docker
# 查看docker版本
sudo docker --version# 8. 非root用户也能运行Docker
# *********这句代码执行后,请重新登录SSH 连接*********
sudo usermod -aG docker ${USER}# 9. 镜像配置 下载的docker镜像将会被存放到 /data/docker 目录中
sudo tee /etc/docker/daemon.json <<-'EOF'
{"data-root": "/data/docker","exec-opts":["native.cgroupdriver=systemd"],"log-driver":"json-file","log-opts": {"max-size":"100m", "max-file":"3"}  
}
EOFsudo systemctl daemon-reload 
sudo systemctl restart docker
sudo systemctl enable docker

源代码中已经为我们编写好了docker-compose.yml文件

git clone https://github.com/neosun100/DeepSeek-OCR-WebUI.git
cd DeepSeek-OCR-WebUI

该项目要求GPU驱动版本必须大于等于580.82

nvidia-smi

项目提供了 Dockerfile, 这样我们可以在本地服务器上构建docker 镜像,但是在构建docker镜像之前,我们需要修改一下Dockerfile,添加一些依赖和 pip 国内镜像加速

加这段代码:RUN  apt-get update && apt-get install -y \libgl1 \libglib2.0-0 \pkg-config \python3-dev \build-essential \&& rm -rf /var/lib/apt/lists/*# 添加pip国内镜像加速
RUN pip config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple/

安装 NVIDIA Container Toolkit[重要]
Docker 默认不支持直接访问 GPU。要让容器使用 NVIDIA GPU,必须安装并配置 NVIDIA Container Toolkit(以前叫 nvidia-docker2)。
如果没有正确安装或配置,当你在 docker run 命令中使用 --gpus all 或在 docker-compose.yml 中指定 deploy.resources.reservations.devices 等 GPU 相关选项时,Docker 就无法找到名为 “nvidia” 的设备驱动,从而报错。

官方文档: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
# 1:确认已安装 NVIDIA 驱动
# 如果命令成功输出 GPU 信息(驱动版本、GPU 型号等),说明驱动已装好。
# 如果提示命令未找到或驱动未加载,请先安装 NVIDIA 官方驱动。
nvidia-smi# 2.安装 NVIDIA Container Toolkit
# 安装依赖工具
sudo apt-get update && sudo apt-get install -y --no-install-recommends curl gnupg2# 添加 NVIDIA Container Toolkit 的 GPG 密钥和软件源
# 从 NVIDIA 官方地址下载 GPG 公钥, 下载 NVIDIA 提供的 APT 源列表文件
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 启用 experimental 软件源(可选)
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get update# 设置环境变量 NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.0-1(方便统一指定版本)。
# libnvidia-container1:底层库,用于在容器内设置 NVIDIA 驱动环境。
# libnvidia-container-tools:配套工具(如 nvidia-container-cli)。
# nvidia-container-toolkit-base:基础运行时钩子(hook)配置。
# nvidia-container-toolkit:集成到 Docker 的 CLI 工具,提供 --gpus 支持。
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.0-1sudo apt-get install -y \nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

NVIDIA 官方驱动 安装请参考

检查是否存在开源驱动nouveau
lsmod | grep nouveau
有输出说明存在。 开源驱动会与NVIDA 驱动冲突。我的是有输出的

如果存在,则需要关闭 nouveau 驱动

sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF
# 更新initramfs
sudo update-initramfs -u
# 重启
sudo reboot # 重启后确认,如果没有输出则表示已经关闭了
sudo lsmod | grep nouveau

驱动下载

https://www.nvidia.cn/drivers/lookup/

在这里插入图片描述
将下载的文件存放到 /data/soft目录备用

cd /data/soft
# 添加可执行权限chmod +x NVIDIA-Linux-x86_64-580.105.08.run
# 执行安装sudo ./NVIDIA-Linux-x86_64-580.105.08.run

安装的时候,会让你选择许可证,我们直接选择 NVIDIA Proprietary即可

选项许可证特点推荐选择
NVIDIA Proprietary专有许可证• 传统的NVIDIA专有驱动
• 经过长期测试,稳定性高
• 与各种NVIDIA功能完全兼容
大多数用户
MIT/GPL开源许可证• 较新的开源内核模块
• 更好的内核兼容性
• 遵循开源协议
特定场景用户
如果操作系统安装的是字符界面,则会出现一个警告:

WARNING: nvidia-installer was forced to guess the X library path ‘/usr/lib64’ and X module path ‘/usr/lib64/xorg/modules’;

这个警告信息表明NVIDIA安装程序无法自动检测到X Window系统的开发文件位置,解决这个警告你需要安装X.Org的开发包和pkg-config工具,

这个警告不会影响CUDA计算功能,只会影响图形显示,如果你只在字符界面使用Rocky Linux进行计算任务,可以暂时忽略这个警告

若输出显示显卡信息、驱动版本,则安装成功

nvidia-smiCUDA Version: 13.0 表示支持的 cuda 版本最高到 13.0 版本

3.安装CUDA

UDA 是 Compute Unified Device Architecture 的缩写,是NVIDIA推出的并行计算平台和编程模型。**本质:**让GPU不仅能处理图形,还能进行通用计算的平台**作用:**允许开发者使用C/C++等语言直接在GPU上编写程序**应用领域:**AI/深度学习、科学计算、数据分析、图形渲染等前提条件,需要先安装 NVIDIA 驱动nvidia-smi  # 有输出,则确认驱动正常工作
RTX 2080 Ti 的最优 CUDA 版本为 11.711.8,我们选择 11.8 版本下载,
下载地址:https://developer.nvidia.com/cuda-toolkit-archive ,
找到对应的版本,选择合适的环境下载。下载后,文件存放到 /data/soft
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

安装的时候,会出现错误:unsupported compiler version: 14.2.1. Use --override to override this check. 此时使用下面命令跳过检查。 原因是当前系统版本的gcc版本过高 ,cuda_11.8.0 不识别这个gcc版本。生产环境可以降低 gcc版本,比如gcc 10 版本。因为现在是测试,直接跳过检查

sudo sh cuda_11.8.0_520.61.05_linux.run --override

因为驱动已经安装了,所以这里需要将 “Driver” 选项去掉
安装完毕后,Toolkit 被安装在了 /usr/local/cuda-11.8, 同时有个链接文件 /usr/local/cuda指向了这个目录

环境变量配置

# 编辑bash配置文件
sudo vim ~/.bashrc# 添加以下内容
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda# 使配置生效source ~/.bashrc

查看是否安装成功

nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0# 检查CUDA工具包版本
nvidia-smi  # 查看右上角的CUDA Version
nvidia-ctk --version
NVIDIA Container Toolkit CLI version 1.18.0
commit: f8daa5e26de9fd7eb79259040b6dd5a52060048c

nvidia-smi 显示的CUDA版本是驱动程序支持的最高 CUDA版本,不是实际安装的CUDA版本,使用 nvcc --version显示的才是实际安装的版本。

安装Conda
Conda 是一个开源的包管理和环境管理系统,最初由 Anaconda 公司开发,主要用于 Python 及其他语言(如 R、Ruby、Lua、Perl、Haskell、C/C++)的包管理和环境管理。它可以安装、更新、卸载软件包,并创建隔离的虚拟环境,使得不同项目之间的依赖不会相互干扰。

# 下载安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh# 执行安装
sh Miniconda3-latest-Linux-x86_64.sh# 手动激活 base环境
eval "$(/data/miniconda3/bin/conda shell.bash hook)"# 接收许可
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r# 查看源
conda config --show-sources
==> /data/miniconda3/.condarc <==
channels:- defaultsconda config --set show_channel_urls yesconda config --show channels# 自动激活base环境
conda config --set auto_activate_base true

设置docker默认使用nvidia-runtime

这个命令实际上是把配置写到 daemon.json文件中

sudo nvidia-ctk runtime configure --runtime=dockersudo cat /etc/docker/daemon.json
{# 增加以下内容"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}}
}

• 重启docker

sudo systemctl restart docker

• 测试容器内是否可以使用GPU

docker run --rm --gpus all nvidia/cuda:13.0.1-runtime-ubuntu22.04 nvidia-smi
要用NVIDIA官方发布的镜像进行测试,因为内置了 **nvidia-smi** 工具输出类似以下内容(显示 GPU 型号、驱动版本、CUDA 版本):说明配置正确

启动服务

cd  DeepSeek-OCR-WebUI

此时会按照docker-comoose.yml 中的配置 构建镜像

docker compose up -d 

下面命令只显示了 NAME, STATUS , PORTS 字段

docker compose ps --format "table {{.Name}}\t{{.Status}}\t{{.Ports}}"
NAME                 STATUS                            PORTS
deepseek-ocr-webui   Up 2 minutes (health: starting)   6006/tcp, 8888/tcp, 0.0.0.0:8001->8001/tcp

查看docker日志

docker logs -f deepseek-ocr-webui

首次启动会很久,因为要下载各种依赖。 服务启动的时候,会到 HUGGINGFACE 和 ModelScope 去加载模型。 如果没有科学上网,可能 HUGGINGFACE 的模型无法加载到。
所以首次启动,要等待模型下载完毕。模型文件被下载到了**~/DeepSeek-OCR-WebUI/models/**** 文件夹中**

GPU监控

# 实时监控 GPU 使用
watch -n 1 nvidia-smi# 查看当前 GPU 使用
nvidia-smi

重启服务(代码已更新后)

docker restart deepseek-ocr-webui

完全重启(重新加载模型)

docker compose restart

停止服务

docker compose down

重新构建并启动

docker compose up -d --build

查看资源使用

docker stats deepseek-ocr-webui

访问UI页面

  • UI界面: http://172.16.17.113:8001/
  • API文档: http://172.16.17.113:8001/docs
  • 健康检查: http://172.16.17.113:8001/health

下载源码:

# 切换到用户目录
cd ~
# 克隆项目源码
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd ~/DeepSeek-OCR

安装依赖:

首先下载 vllm-0.8.5,
下载地址:https://github.com/vllm-project/vllm/releases/download/v0.8.5/vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
下载后存放到 /data/soft目录中备用
# 1. 查看当前已经安装的环境,默认情况下,Conda会有一个base环境,即根环境
# 上一章已经创建了 DeepSeek-OCR环境,如果你没有可以创建
(base) conda env list# 2. 创建 Conda 环境。 如果已有,测跳过
(base) conda create -n DeepSeek-OCR python=3.12 # 3. 激活环境
(base) conda activate DeepSeek-OCR# 4.添加国内加速
(DeepSeek-OCR) pip config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple/# 5. 安装 vllm , 确保文件vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl已经在 ~/soft目录中
cd ~/soft
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl# 6. 安装依赖
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118# 7. 安装项目依赖
cd ~/DeepSeek-OCR
pip install -r requirements.txt# 安装加速组件(可选但推荐),因为我的显卡是 2080Ti,不支持flash-attn,所以就不再安装它
# pip install flash-attn==2.7.3 --no-build-isolation
安装过程中如果出现一下错误,这个错误可以忽略,不影响代码运行

• DeepSeek-OCR-master 主要代码目录
• assets资源文件
• requirements.txt依赖包列表
• README.md项目说明文档

DeepSeek-OCR-hf 与DeepSeek-OCR-vllm

DeepSeek-OCR-master目录下还有两个目录DeepSeek-OCR-hf与 DeepSeek-OCR-vllm

模型版本对比

对比维度DeepSeek-OCR-hf
(基于 Hugging Face Transformers)
DeepSeek-OCR-vllm
(基于 vLLM)
核心框架🤗 Hugging Face Transformers⚡ vLLM (专为LLM服务优化的推理引擎)
主要目标研究、实验与原型开发高吞吐、低延迟的生产环境部署
性能特点灵活性高,便于调试和实验推理速度更快,尤其擅长批量处理,能显著提高吞吐量
适用场景适合模型测试、微调 (fine-tuning) 和功能验证适合API服务、云端部署及需要处理大量文档的企业级应用
使用便捷性通常更贴近研究人员和开发者的实验习惯,易于上手需要一些服务化的部署知识,但能提供更稳定、高效的服务
技术关联利用 Transformers 库的通用接口加载和使用模型与 vLLM 推理栈深度集成,优化计算资源使用

安装 modelscope依赖

pip install modelscope

创建模型存放目录

mkdir -p ~/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm
打开的项目中创建python文件download.py, 其完整路径为 /data/DeepSeek-OCR/DeepSeek-OCR-master/DeepSeek-OCR-vllm/download.py
# /data/DeepSeek-OCR/DeepSeek-OCR-master/DeepSeek-OCR-vllm/download.py
# 模型下载
from modelscope import snapshot_download# 指定下载存放的路径 
model_dir = snapshot_download('deepseek-ai/DeepSeek-OCR',cache_dir='/data/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm')

执行命令行:

python download.py

注意,下载后模型完整路径是:
/data/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm/deepseek-ai/DeepSeek-OCR/,
因为下载的时候指定了 cache_dir为 /data/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm

修改模型路径

配置文件:/data/DeepSeek-OCR/DeepSeek-OCR-master/DeepSeek-OCR-vllm/config.py, 主要修改 MODEL_PATH指定为:/data/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm/deepseek-ai/DeepSeek-OCR/# /data/DeepSeek-OCR/DeepSeek-OCR-master/DeepSeek-OCR-vllm/config.py

注意必须是模型完整路径,这个路径下会有一个模型配置文件 config.json

MODEL_PATH = ‘/data/models/modelscope/deepseek-ai/DeepSeek-OCR-Vllm/deepseek-ai/DeepSeek-OCR/’

到这里就完成安装和编译了 就可以使用啦

http://www.dtcms.com/a/605765.html

相关文章:

  • 长沙h5网站建设什么软件可以发布广告信息
  • 如何保证数据库与 Redis 的数据一致性
  • redis连接服务
  • Linux systemd闲谈杂话(第一篇:概述)
  • Spring 核心技术解析【纯干货版】- XII:Spring 数据访问模块 Spring-R2dbc 模块精讲
  • 手机什么网站可以设计楼房关于网站建设的调查问卷
  • 零基础网站建设教学申请自己邮箱域名
  • JVM 内存结构、堆细分、对象生命周期、内存模型全解析
  • 网络安全编程——基于Python实现的SSH通信(Windows执行)
  • WAF防护:应用层安全的核心堡垒
  • 【OpenCV图像处理】图像去噪:cv.fastNlMeansDenoising()
  • 基于AI Agent模板:快速生成 SQL 测试数据
  • 无锡网站建设方案企业计划书
  • 做购票系统网站网站开发推广方案策划书
  • JVM GC 垃圾回收体系完整讲解
  • JVM 内存结构的详细介绍
  • Linux命令-egrep命令(文本搜索工具)
  • 《Flutter全栈开发实战指南:从零到高级》- 14 -网络请求与数据解析
  • 模板网站配置文件seo难不难
  • div2 1052 个人补题笔记
  • 【1.10】基于FPGA的costas环开发4——鉴相器模块开发
  • C语言编译软件 | 如何选择适合自己的编译器
  • 怎么做网站外贸wordpress 本地 域名绑定
  • DSP中断工作原理
  • 【LeetCode】109. 有序链表转换二叉搜索树
  • Verilog 利用伪随机,时序,按键消抖等,实现一个(打地鼠)游戏
  • 【音视频】均衡器(Equalizer)技术详解
  • win11安装mysql社区版数据库
  • 菏泽定制网站建设推广花艺企业网站建设规划
  • 哪些网站可以做推广婚庆公司网站源码