dicom-cli 是面向 DICOM 文件处理和 DIMSE SCU 操作的命令行工具。它将单文件
检查、校验和编辑,与面向文件或目录的脱敏、转换、转码和 C-STORE 操作放在同一
可脚本化入口中。
它实际提供以下能力:
- 检查、校验和编辑单个 DICOM 文件。
- 以 DICOM Basic Application Level Confidentiality Profile 为基础进行脱敏。
- 导出 DICOM 图像帧或元数据 JSON,并将受支持的 PNG/JPEG 封装为 Secondary Capture DICOM。
- 按当前二进制注册的 codec 转换传输语法。
- 通过明文 TCP 执行 C-ECHO 和 C-STORE。
从 GitHub Releases 下载与操作系统和 CPU 架构相符的归档,解压后直接运行:
| 平台 | 归档 |
|---|---|
| Windows x64 | dicom-cli_<version>_windows_amd64.zip |
| Linux x64 | dicom-cli_<version>_linux_amd64.tar.gz |
| Linux ARM64 | dicom-cli_<version>_linux_arm64.tar.gz |
| macOS Intel | dicom-cli_<version>_darwin_amd64.tar.gz |
| macOS Apple Silicon | dicom-cli_<version>_darwin_arm64.tar.gz |
Windows 的可执行文件为 dicom-cli.exe,Linux 和 macOS 为 dicom-cli。归档还
包含本 README、完整使用手册 以及可直接修改的配置和规则示例。
从源码构建使用 go.mod 指定的 Go 版本:
go build -o dicom-cli.exe ./cmd/dicom-cli
.\dicom-cli.exe --helpgo build -o dicom-cli ./cmd/dicom-cli
./dicom-cli --helpdicom-cli inspect study/image.dcm
dicom-cli inspect --tag PatientName --tag StudyInstanceUID study/image.dcm
dicom-cli validate --strict --json --output validation.json study/image.dcminspect、validate 和 edit 只接收单个常规文件。validate --strict 会把
warning 也作为校验失败处理。
dicom-cli config init dicom-cli.yaml
dicom-cli config target update local-pacs \
--host pacs.example.test --port 11112 \
--calling-ae DICOMCLI --called-ae PACS
dicom-cli echo --config dicom-cli.yaml --target local-pacsconfig init 写入包含 local-pacs 示例目标的起始配置。生产环境应替换示例主机
和 AE Title;首版 DIMSE 连接仅使用明文 TCP。
dicom-cli anonymize --recursive --output anonymized study源文件不会被改写。目录默认只扫描当前层,使用 --recursive 才遍历子目录。命令直接
使用 go-dicom 内置的 Basic Profile;--option 选择该标准 profile 的可选项,不支持
命名 profile、筛选条件或规则文件。
dicom-cli convert image --input study/image.dcm --format png --output image.png
dicom-cli convert image --input study/multiframe.dcm --all-frames --output frames
dicom-cli convert json --input study/image.dcm --output metadata.json
dicom-cli convert xml --input study/image.dcm --output metadata.xml
dicom-cli convert pixeldata --input study/image.dcm --output pixels.bin
dicom-cli transcode formats
dicom-cli transcode --input study/image.dcm --to rle --output compressed.dcm
dicom-cli transcode --input study/image.dcm --to jpeg2000-lossless --output j2k-lossless.dcm
dicom-cli transcode --input study --recursive --to rle --output compressed-studyconvert image 的 --frame 从 1 开始计数,省略时导出首帧。convert json 和
convert xml 只导出元数据,不包含 PixelData;需要原始像素字节时使用
convert pixeldata。该命令按帧顺序写入存储载荷,不解码或转码,且不包含 DICOM
元素头、Basic Offset Table 或 fragment Item 头。转码前应先用
transcode formats 确认目标别名或 UID 在当前二进制中可用。transcode 使用
--input/-i 明确指定一个输入路径:输入是文件时 --output 为新 .dcm 文件,输入
是目录时 --output 为输出目录。旧的尾部位置参数仍可用,但不能与 --input 同时
传入;不支持多个输入文件或 stdin 路径清单。
例如 JPEG 2000 Lossless 可写为 --to "JPEG 2000 Lossless"、
--to jpeg2000-lossless 或 --to 1.2.840.10008.1.2.4.90。完整、随二进制变化的清单会直接显示在
dicom-cli transcode --help 和 dicom-cli transcode formats 中;两处均按
“标准名称 / --to 短名称 / UID”显示。
dicom-cli send --config dicom-cli.yaml --target local-pacs --recursive study
Get-Content failed-paths.txt | dicom-cli send --target local-pacs -send 会尽量复用 Association;进度写入 stderr,汇总写入 stdout。目标不接受
源传输语法时,它不会自动转码,应先使用 transcode。
| 命令 | 适用场景 |
|---|---|
inspect <file> |
输出单个文件的摘要、指定标签或完整元素清单。 |
validate <file> |
执行内置和命名规则 profile 校验。 |
edit <file> |
写出经标签、UID 或字符集修改的新文件。 |
anonymize <file-or-directory> |
按 go-dicom 内置 Basic Profile 脱敏。 |
| `convert image | json |
encapsulate image <input> |
将受支持的 PNG/JPEG 写为未压缩 Secondary Capture DICOM。 |
transcode --input <path> |
将一个 DICOM 文件或一个目录转码至指定传输语法。 |
transcode formats |
列出当前二进制实际注册的编解码能力。 |
echo / send <input> |
运行 C-ECHO 或 C-STORE。 |
config / rules |
生成、校验和维护运行配置、目标与规则。 |
| `lang <en | zh-CN>` |
completion <shell> |
输出 shell 自动补全脚本。 |
使用手册 说明所有参数、配置发现优先级、文件/目录输出规则、DIMSE
超时和批处理行为。每个版本的最终命令契约以 dicom-cli <命令> --help 为准。
运行配置的 language 支持 en(默认)和 zh-CN。lang 与
config language 会保存所选语言;当没有发现配置文件时,lang 会在当前目录
创建 dicom-cli.yaml。命令名、flag、JSON 字段和值、规则 DSL、DICOM Tag/UID 和
退出码始终保持不变。
业务结果通常写入 stdout,日志和 send 进度写入 stderr。二进制输出到 stdout 的
模式只允许一个结果;完整约束见使用手册。
| 退出码 | 含义 |
|---|---|
0 |
命令成功完成。 |
1 |
文件处理、批处理、网络或 DIMSE 操作失败。 |
2 |
命令参数、配置或规则输入无效。 |
3 |
DICOM 校验失败;validate --strict 也会因 warning 返回此代码。 |
CI 和归档 smoke test 使用合成 fixture。真实 DICOM、真实 PACS 和外部 codec 的
互操作须在受控环境中单独验收。transcode formats 中标记为 experimental 的 HTJ2K
不能视为已完成生产互操作验证。