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

DeepSeek-OCR实战(05):DeepSeek-OCR-WebUI部署(Docker)

前一章调试了官方推理代码,官方代码并没有UI界面,输入输出都不直观。DeepSeek-OCR-WebUI 是一个基于DeepSeek-OCR 模型的图像识别web应用,提供直观的用户界面和识别功能。

相当于给官方的推理代码套了一层外衣。

仓库地址:https://github.com/neosun100/DeepSeek-OCR-WebUI

1.DeepSeek-OCR-WebUI介绍

1.1核心亮点

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

1.2 功能特性

7 种识别模式

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

📄 PDF 支持(v3.2 新功能)

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

📈 技术架构

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

作者使用的是 transformers而非 vLLM, 理由是:

特性transformersvLLM
稳定性⭐⭐⭐⭐⭐⭐⭐⭐
兼容性⭐⭐⭐⭐⭐⭐⭐⭐
速度⭐⭐⭐⭐⭐⭐⭐⭐⭐
功能支持⭐⭐⭐⭐⭐⭐⭐⭐⭐
部署难度⭐⭐⭐⭐⭐⭐⭐

作者结论:transformers 引擎更稳定,兼容性更好,非常适合生产环境。

2.环境准备(Docker)/下载代码

操作系统环境为环境为 ubuntu-24.04.3 Server

2.1安装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"],"registry-mirrors": ["https://docker.1ms.run","https://dockerpull.org","https://cjie.eu.org","https://docker.1panel.dev","https://docker.foreverlink.love","https://dytt.online","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com","https://docker.xn--6oq72ry9d5zx.cn","https://docker.zhai.cm","https://docker.5z5f.com","https://a.ussh.net","https://docker.cloudlayer.icu","https://docker.linkedbus.com","https://hub.littlediary.cn","https://hub.crdz.gq","https://docker.unsee.tech","https://docker.kejilion.pro","https://registry.dockermirror.com","https://hub.rat.dev","https://dhub.kubesre.xyz","https://docker.nastool.de","https://docker.udayun.com","https://docker.rainbond.cc","https://hub.geekery.cn","https://docker.1panelproxy.com","https://docker.m.daocloud.io","https://mirror.ccs.tencentyun.com","https://4hxooktm.mirror.aliyuncs.com","https://ginger20240704.asia","https://lynn520.xyz","https://docker.mrxn.net","https://dockerhub.icu","https://hub.rat.dev","https://docker.wanpeng.top","https://doublezonline.cloud","https://atomhub.openatom.cn","https://docker.fxxk.dedyn.io","https://hub.geekery.cn"],"log-driver":"json-file","log-opts": {"max-size":"100m", "max-file":"3"}  
}
EOFsudo systemctl daemon-reload && sudo systemctl restart docker && sudo systemctl enable docker

2.2下载代码

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

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

2.3环境检查

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

nvidia-smi

2.4 VS Code 连接项目代码

下载到的源代码需要修改一下,我们用vs code进行连接。

项目提供了 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/

4.安装 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 官方驱动 安装请参考 我前面的文章:《DeepSeek-OCR实战(01):基础运行环境搭建-Ubuntu》

  • 查看是否安装成功
nvidia-ctk --version
NVIDIA Container Toolkit CLI version 1.18.0
commit: f8daa5e26de9fd7eb79259040b6dd5a52060048c
  • 设置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 版本):说明配置正确

3.启动服务

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/**** 文件夹中**

3.1GPU监控:

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

3.2容器管理

# 重启服务(代码已更新后)
docker restart deepseek-ocr-webui# 完全重启(重新加载模型)
docker compose restart# 停止服务
docker compose down# 重新构建并启动
docker compose up -d --build# 查看资源使用
docker stats deepseek-ocr-webui

5.访问UI页面

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

5.1 通用OCR测试

选中通用OCR,然后上传一张图片。

识别结果:

============================================================
图片 1: fCOdj4aJI.png
============================================================慢慢来,你又不差
你所有的压力,都是因为你太想要了,你所
有的痛苦,都是因为你太较真了。有些事,不能尽
你心意,就是在提醒了该转变了。
如果事事都如意,那就不叫生活了,所以
睡前原谅一切,醒来不问过证,珍惜所有的
不期而遇,看游所有的不详而别。
人生一站有一站的风景,一岁有一岁的味
道,你的年龄应该成为你生命的勋章,而
不是你伤感的理由。
生活嘛,慢慢来,你又不差。

5.2 图像描述测试

选中“图像描述”,上传一张从互联网上找到的图片:

识别结果,目前输出的是英文(中文是我翻译过来的文字):

An outdoor winter scene where snow is falling gently against a clear blue sky backdrop. In the foreground stands a young woman dressed warmly for cold weather; she wears a black coat adorned with white polka dots on her sleeves and gloves that match her coat's color scheme. Her long brown hair cascades down past her shoulders as she smiles broadly at the camera while extending both arms outward to catch or play with the swirling snowflakes around her hands. Behind her are several houses covered lightly by fresh snow, indicating recent snowfall. The closest house has light-colored siding and dark roofing, partially obscured behind utility poles running vertically across the frame from left to right. A fence made up of wooden posts connected by wire stretches horizontally nearer to the bottom edge of the photo, separating what appears to be someone’s yard from another area beyond it. Power lines crisscross above everything else, adding depth to the composition through perspective lines leading towards distant structures barely visible due to the focus being primarily on the central figure amidst the serene wintry setting.一幅冬日户外场景:雪花轻柔飘落,背景是清澈的蓝天。前景中站着一位年轻女子,她穿着保暖的冬装——一件黑色外套,袖子上点缀着白色波点;她的手套也与外套的配色相呼应。她留着长长的棕色秀发,披散至肩下,正对着镜头灿烂微笑,同时张开双臂,仿佛要接住或嬉戏于围绕双手飞舞的雪花之中。她身后是几栋覆盖着薄薄新雪的房屋,表明刚刚下过雪。最近处的房子外墙为浅色,屋顶为深色,部分被从画面左侧延伸至右侧的电线杆遮挡。靠近照片底部边缘处,一道由木桩和铁丝组成的围栏横向延伸,将一处庭院与远处区域分隔开来。上方纵横交错的电线进一步增强了画面的纵深感,其透视线条引向远方隐约可见的建筑,而整个画面的焦点则集中在雪景中这位神情愉悦的中心人物身上,营造出宁静祥和的冬日氛围。

5.3 定位查找

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

相关文章:

  • CI/CD自动化部署革命:“三分钟流水线“背后的工程实践
  • 【工具】PixPin 电脑实用截图工具!带免费OCR截图/贴图/录屏/文字识别
  • 京东关键字搜索接口逆向:从动态签名破解到分布式请求调度
  • 第三章 大语言模型基础学习笔记
  • 莱芜网站设计公司制作图片文字的软件
  • 自己做本地视频网站商城网站开发的任务书
  • 通过 API 与 Gradio 构建 AI 应用
  • 【C++进阶】二叉树进阶
  • 【C++】多态(2):纯虚函数多态底层原理
  • C++/Linux小项目:自主shell命令解释器
  • MEMS振荡器MST8012抗冲击设计应对严苛振动环境
  • 【数据结构】常见的排序算法 -- 交换排序
  • Rust与主流编程语言的深度对比分析
  • NebulaChat 框架学习笔记:深入理解 Reactor 与多线程同步机制
  • 网站开发接口网站建设需要什么
  • 聚焦新“新双高计划”,高职学校如何进行数字化转型?
  • 全志V853视频输入驱动框架详解:从VIN模块到虚通道实战
  • 网站建设需要英语吗wordpress笑话主题模板
  • Azure OpenAI GPT-5 PTU 容量规划与弹性配置实践
  • [linux仓库]多线程同步:基于POSIX信号量实现生产者-消费者模型[线程·柒]
  • Linux 内核驱动加载机制
  • C语言编译软件 | 高效选择适合的C语言编译环境
  • 天津 网站策划微信、网站提成方案点做
  • 工业级部署指南:在西门子IOT2050(Debian 12)上搭建.NET 9.0环境与应用部署(进阶篇)
  • 食品网站建设网站定制开发做网站只买一个程序
  • 中小型项目前后端工时对比
  • C# 文件的输入与输出
  • Linux操作系统学习
  • idea创建javaweb项目
  • 【计网】基于OSPF 协议的局域网组建