DICOM Viewer for Desktop / Web / Mobile
DicomVision 是一套面向医学影像浏览、分析和教学验证场景的 DICOM Viewer。项目采用 C/S 架构:客户端基于 Vue、TypeScript 和 Electron 构建,后端基于 FastAPI、Socket.IO 和医学影像处理栈完成 DICOM 解析、渲染、重建、分析和导出,并将结果实时推送到桌面端、Web 端和移动端界面。
- 在线预览:https://dicom.zhaolin.online/
- Client 仓库:https://github.com/l5769389/DicomVisionClient
- Server 仓库:https://github.com/l5769389/DicomVisionServer
- 当前发布:DicomVision v3.1.2
DicomVision 将重计算任务放在后端执行,前端负责交互、工具组织和结果呈现。这样可以让浏览器、移动端和桌面端复用同一套影像能力,也便于在局域网、云服务器或桌面内置后端环境中部署。
本项目特别适合客户端显存有限、但仍需要使用统一 DICOM 浏览和后端 2D/3D 渲染能力的场景。对于显存充足且追求本地 GPU 交互性能的工作站,建议优先评估 C3D 等原生方案;对于需要将计算与界面部署在同一进程中的场景,也可以选择 Python/C++ 等前后端不分离的实现。DicomVision 的 C/S 架构主要面向跨端复用、集中式渲染和轻量客户端接入。
- 数据导入:支持 DICOM 文件、文件夹、拖拽导入、浏览器上传、服务端样例数据,以及 PACS DICOMweb/DIMSE 查询和下载。
- 2D 浏览:支持窗宽窗位、缩放、平移、滚动、翻转、旋转、伪彩、同步浏览、Compare、Layout、多序列和多视图工作区。
- MPR 与 4D:支持 AX/COR/SAG 三视图、斜切 MPR、十字线同步、MPR 播放、4D phase 播放、FPS 控制和时相同步。
- 3D 可视化:支持 VR 体渲染、Surface 渲染、MIP/XRay 类模板、AAA/CT/CTA/MR/CBCT 自适应预设、3D 参数面板、去床板、自由形状裁剪和移动端触控 3D。
- PET/CT Fusion:支持 PET/CT 融合浏览、PET-only、SUV/强度范围控制、手动配准、配准保存、Fusion 四宫格和单视口切换。
- 测量与标注:支持线段、矩形、椭圆、角度、曲线、自由形状测量,箭头和文本标注,实时 draft 与 ROI 指标。
- 分割与 QA:支持 MPR 阈值分割、球形 VOI、分割 overlay、分割导入导出、MTF/FWHM、水模 QA 和结果报告。
- DICOM 与导出:支持 DICOM Tag 树查看、VR 感知编辑、批量 Tag 修改、脱敏导出、PNG、DICOM、DICOM SR 和 DICOM GSPS 导出。
- 多端体验:支持桌面端、Web 端和移动端响应式界面,提供深色、浅色和蓝色主题;桌面安装包内置后端服务。
公开 Web 预览适合体验 UI、基础流程和远程渲染能力。真实 PACS、本地大数据量、桌面端内置后端和隐私数据场景,建议使用本地部署或桌面端。
| 工作区首页 | 已加载序列 |
|---|---|
![]() |
![]() |
| PET/CT 融合 | PET/CT 手动配准 |
|---|---|
![]() |
![]() |
| MPR 与斜切 | 4D 时相 |
|---|---|
![]() |
![]() |
| MTF/FWHM | 分割与 VOI |
|---|---|
![]() |
![]() |
| 水模 QA | 浅色主题 |
|---|---|
![]() |
![]() |
| 移动端首页 | 移动端 2D |
|---|---|
![]() |
![]() |
| 移动端 MPR | 移动端 4D |
|---|---|
![]() |
![]() |
| 移动端 PET/CT | 移动端设置 |
|---|---|
![]() |
![]() |
| PACS 数据源 | PACS Browser |
|---|---|
![]() |
![]() |
| 测量工具 | DICOM Tag |
|---|---|
![]() |
![]() |
| 拖拽导入 | 脱敏导出 |
|---|---|
![]() |
![]() |
cd ../DicomVisionServer
uv sync
uv run python run.py默认地址:
- HTTP:
http://127.0.0.1:8000 - OpenAPI:
http://127.0.0.1:8000/docs - Socket.IO:
http://127.0.0.1:8000/socket.io
cd ../DicomVisionClient
npm install
npm run dev如果需要指定后端:
$env:DICOM_VISION_SERVER_ORIGIN = "http://127.0.0.1:8000"
npm run devnpm run dev:webnpm run build:web生产环境变量示例:
VITE_BACKEND_ORIGIN=https://your-backend.example.com
VITE_WEB_APP_MODE=web常用脚本:
npm run dev:启动 Electron 桌面开发运行时。npm run dev:web:启动 Web Vite 开发服务。npm run build:构建 Electron main、preload 和 renderer。npm run build:web:构建独立 Web 前端到dist-web/。npm run preview:web:本地预览 Web 静态构建。npm run generate:api-types:从 Server OpenAPI 重新生成前端 API 类型。npm run typecheck:运行 TypeScript 类型检查。npm run test:run:运行 Vitest。npm run release:win:构建后端桌面 bundle 并打包 Windows 安装器。npm run release:mac:在 macOS 上构建后端桌面 bundle 并打包 macOS 桌面端。npm run release:mac:publish -- --tag vX.Y.Z:在 macOS 本地构建 DMG/ZIP、生成校验文件并上传到 GitHub Release。
- Windows / Web / Windows Server:推送
vX.Y.Z标签后,由.github/workflows/release-windows.yml自动构建并发布。 - macOS:在 macOS 本地运行
npm run release:mac:publish -- --tag vX.Y.Z。脚本会使用官方 Electron Builder 二进制源,构建 DMG/ZIP,生成SHA256SUMS-macos.txt,并将资产上传到同一个 GitHub Release。 - 发布前需要先将 Client 和 Server 的同名版本标签推送到远端,并完成
gh auth login。macOS 也支持--skip-build,用于上传已经生成的本地资产。
后端 API、Socket.IO 事件、部署和桌面 bundle 细节见:
如有问题、建议或希望参与改进,欢迎联系:5769389@qq.com























