如何用 Immich 重复工具审阅并合并重复照片的元数据
【免费下载链接】immichHigh performance self-hosted photo and video management solution.项目地址: https://gitcode.com/GitHub_Trending/im/immich
如果你通过多台设备、多次备份或外部导入在 Immich 中积累了大量视觉相似的照片,需要手动判断哪些该保留、哪些该移除,并且希望被移除照片上的收藏、评分、描述、标签等元数据能集中到保留的照片上,那么 Web 界面里的"Review duplicates"工具就是完成这件事的路径。这篇文章基于官方文档说明完整流程:重复组如何产生、如何在审阅页选择保留项、元数据合并的触发条件,以及解决(resolve)之后如何判断结果。前提是你已经按 安装文档 部署了 Immich 并导入了资产。
重复组是怎么产生的:先确认检测任务已完成
重复检测依赖机器学习,默认启用,无需额外安装组件(功能文档)。它不是上传时立即完成的,而是随资产处理流水线运行,顺序为:
资产上传 → 元数据提取 → 存储模板迁移 → 缩略图生成 → Smart Search → 重复检测重复检测排在 Smart Search 之后(Jobs and Workers)。只有资产被处理并加入某个重复组(duplicate group)后,才会出现在审阅页。
在开始审阅之前,建议先到Administration → Jobs页面确认检测类任务已经跑完,避免只处理了一部分资产就下"没有重复"的结论。周期性任务(如 nightly 批次)的运行时间可以在System Settings → Nightly Tasks Settings中调整。
如果检测结果偏少或偏多,可以在System Settings → Machine Learning Settings → Duplicate Detection中调整Maximum detection distance:它是判定两张图像视为重复的最大距离,取值范围 0.001–0.1。数值越大检出的重复越多,但可能出现误报(System Settings 文档)。
进入审阅页并选择保留与移除
在 Web 界面打开Utilities → Review duplicates(页面路径utilities/duplicates)。该页面按重复组列出资产,允许你逐组选择哪些资产保留(keep)、哪些移入回收(trash)。文档明确的操作语义只有"保留/移入回收"两种,不存在物理删除按钮路径。
使用 "Deduplicate All" 或查看建议时,Immich 会自动预选要保留的资产,依据两个条件(功能文档):
- 文件大小(字节)——更大的文件优先,因为通常质量更高;
- EXIF 数据量——元数据更多的资产优先。
预选只是起点,仍需要人工核对。当一组中保留了多个资产时,界面提供把保留资产自动放进一个堆叠(stack)的选项,方便后续查看而不必逐个处理。
审阅页面还内置了键盘快捷键(快捷键定义见前端路由源码web/src/routes/(user)/utilities/duplicates/):
| 按键 | 作用 |
|---|---|
a | 全选当前组的重复资产 |
d | 取消全选 |
s | 查看(打开预览) |
⇧ + C | 解决当前组(resolve) |
⇧ + S | 堆叠当前组(stack) |
元数据合并的触发条件与同步范围
这是审阅时最需要想清楚的一步:元数据同步只在一个精确条件下发生——组内恰好保留 1 个资产,且至少移入回收 1 个资产。
- 保留恰好 1 个 + 回收 ≥1 个:被回收资产的元数据自动同步到保留资产。
- 保留多个资产:不发生任何合并。这些资产保留各自的元数据,只是被移出重复组(此时可选择堆叠)。
也就是说,如果你的目的是把散落在多张重复照片上的元数据集中起来,必须只留下 1 张。满足条件时同步的内容如下(功能文档):
| 元数据 | 同步规则 |
|---|---|
| Album(相册) | 保留资产会加入组内其他资产所属的每一个相册 |
| Favorite(收藏) | 组内任一资产被收藏,保留资产也会被加入收藏 |
| Rating(评分) | 取组内最高评分同步到保留资产 |
| Description(描述) | 各资产的描述合并后写入保留资产 |
| Visibility(可见性) | 对保留资产应用最严格的可见性 |
| Location(位置) | 仅当组内所有含地理坐标的资产坐标相同时才复制 |
| Tag(标签) | 合并组内所有资产的标签并应用到保留资产 |
注意两条边界:Location 只有在坐标完全一致时才复制,不同坐标不会"取其一";Rating 是取最高值而不是求和或平均。
解决之后如何判断结果
点击解决(⇧ + C或界面上的 Resolve 按钮)后,按文档与前端逻辑判断结果:
- 成功:当前组从重复组列表中移除,页面自动跳到下一个组;若本组有资产被移入回收,界面会弹出提示,说明被移到回收站(或已被永久删除)的资产数量。
- 失败:页面给出"unable to resolve duplicate"错误提示,组仍保留在列表中,可检查后重试。
- 被处理资产的去向:移入回收的资产是否进入可恢复的回收站,取决于实例是否启用回收站(trash)功能——未启用时,被标记的资产是永久删除而不是移入回收站(该行为由前端源码中的 trash 功能开关决定)。如果你的实例未开启回收站,解决前请确认保留选择无误。
解决完成后,可以回到Administration → Jobs页面复核任务状态,或再次打开审阅页确认该组已不在列表中。
限制与注意
- 检测基于视觉相似(机器学习的 CLIP embeddings 距离),不是文件哈希比对;哈希级别的去重属于上传时的另一套逻辑(见 FAQ 中关于外部库去重的说明),两者不要混淆。
- 元数据合并是单向的:被回收资产的元数据进入保留资产后,保留资产自身的元数据不会反向扩散到组外。
- "保留多个资产"路径只做移出重复组/可选堆叠,不会合并相册、收藏、描述和标签——这是文档明确给出的行为,不是遗漏。
- 审阅与解决都发生在 Web 界面;文档没有提供命令行或 API 批量入口供这个流程使用。
【免费下载链接】immichHigh performance self-hosted photo and video management solution.项目地址: https://gitcode.com/GitHub_Trending/im/immich
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考