remove-ai-watermarks:一个把 AI 水印清理拆成四层操作的 Python 工具
AI水印去除器。 CLI 和 Python 库可从图像中去除可见和不可见的 AI 水印(Gemini / Nano Banana Sparkle、SynthID)和来源元数据(C2PA、EXIF、IPTC)。
秒懂
- 它是什么?
- remove-ai-watermarks 同时处理可见标记、隐形像素水印和 C2PA 等元数据,覆盖图片与视频。它把任务拆成可独立安装的模块,但隐形水印清除依赖 CUDA 和扩散模型,不是所有机器都能跑。
- 适合谁用?
- 如果你是自己生成 AI 图片或视频、需要在上传前去掉 Gemini 或 SynthID 痕迹的创作者,这个工具值得试。它把可见标记、元数据、隐形水印拆成独立命令,metadata 和 visible 模式在 CPU 上就能跑,安装成本低。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是哪一类问题
现在主流 AI 生成工具会在输出里留下多层痕迹。Google Gemini 的 sparkle 标记是可见的,SynthID 是嵌在像素里的隐形水印,C2PA、EXIF、IPTC 这些元数据则记录了生成来源。remove-ai-watermarks 把这些全部纳入一个命令行工具,目标用户是那些生成了内容、想在发布前清理掉这些痕迹的人。项目主页 raiw.cc 直接运行这套库作为托管服务,说明作者也清楚不是每个人都愿意装 Python 环境。它明确声明只针对用户自己拥有的内容,不碰图库预览这类保护第三方付费内容的标记。
四条命令对应四种清理粒度
工具把操作拆成 identify、visible、metadata、invisible 四个基本命令,外加 all 和 batch。identify 只做检测,不修改文件,也不需要 GPU。visible 处理已知的可见标记,比如 Gemini 的 sparkle 和厂商文字标,走的是 OpenCV、MI-GAN 或 LaMa 填充。metadata 命令剥离 C2PA、EXIF、XMP、IPTC 等元数据。invisible 命令针对 SynthID 这类像素级水印,做法是扩散模型重新生成图像,文档里写明需要 CUDA。all 命令把三者串起来,batch 处理目录。这种分层意味着你可以只装 metadata 模块,不碰任何像素操作。
安装方式按需拆分,不是一装全装
默认安装只带元数据功能:uv tool install remove-ai-watermarks。要处理可见标记,装 remove-ai-watermarks[visible];要处理视频,装 [video];要清视频 SynthID,装 [video,diffusion];要清图片隐形水印,装 [qwen-zimage],这个扩展明确标注需要 CUDA。还有 [detect] 提供无 Torch 的 DWT-DCT 检测。这种拆分对磁盘和依赖管理都友好,但代价是功能分散,用户得先搞清楚自己需要哪个扩展。文档里列了 pixels、heif、trustmark、migan、lama、diffusion 等更细的扩展,安装指南 docs/installation.md 里有完整依赖组成和 Python 兼容性说明。
视频清理的细节比图片多
视频部分不是简单复用图片逻辑。video metadata 命令不转码视频和音频流,只处理容器层面的元数据,MP4 和 MOV 会读取 moov.udta.meta.keys/ilst 里的 TC260 AIGC 标签,MKV 和 WebM 读 Segment.Tags.Tag.SimpleTag,AVI 用 LIST/INFO/AIGC,FLV 用 script.onMetaData.AIGC。移除时非 ISOBMFF 格式会用流复制方式 remux。video visible 命令只接受在相邻帧稳定重复的标记,先扫描整个序列再改像素,音频直接复制不重编码,视频流因为像素变了所以必须转码。它还保留了源视频的色度采样、色彩标签和轨道时间尺度,可变帧间隔通过内存中的 NUT 桥保留,不会压成平均帧率。这些细节说明作者真的处理过真实世界的视频文件,而不是只写个演示脚本。
隐形水印清除是有代价的
invisible 命令用扩散模型重新生成图像来打乱像素水印,这需要 CUDA,而且不是简单擦除,是重新生成,意味着画质可能变化。视频 SynthID 清除用的是 oracle 认证的 VAE 方案,文档明确说这是有损的。默认情况下 video all 不启用隐形视频清除,要加 --invisible 才会走这个有损配置。对照片级内容,这种重生成可能改变细节纹理,不适合对保真度要求高的场景。另外,metadata 剥离只移除清单,如果隐形水印还在,光清元数据不够,文档里说 all 命令会同时处理像素水印和 C2PA 清单。这说明不同水印层的清除是独立的,用户得理解自己到底需要哪一层。
与托管服务的边界
raiw.cc 是官方托管服务,GPU 由服务方提供,用户不用装任何东西。免费额度是 Standard 输出最高 12 MP 的可见标记和元数据移除,超过 12 MP 或要清隐形水印就得付费。这给不想折腾 Python 环境的人一条捷径,但也意味着隐形水印清除的计算成本确实高,作者选择把它放在付费墙后面。自托管的话,你需要自己准备 CUDA 显卡和模型文件,安装指南里应该有模型下载说明,但 README 没给出具体显存要求。如果你只有 CPU 机器,能用的只有 identify、visible、metadata 和视频元数据操作,invisible 基本跑不动。
维护状态与许可
项目使用 Apache-2.0 许可,最近一次提交在 2026 年 8 月,版本号到了 v0.34.1,说明还在活跃迭代。仓库没有标记为归档,GitHub Actions 有测试工作流,PyPI 上有发布。Apache-2.0 允许商用和修改,但如果你要集成到自己的产品里,需要注意保留版权声明和许可文本。项目主页托管服务的存在意味着作者有商业动机,但这不影响你自托管使用。文档里专门有 docs/legal-and-safety.md 说明安全与法律边界,强调只用于合法内容,这一点在采用前应该读一遍。
编辑结论
如果你是自己生成 AI 图片或视频、需要在上传前去掉 Gemini 或 SynthID 痕迹的创作者,这个工具值得试。它把可见标记、元数据、隐形水印拆成独立命令,metadata 和 visible 模式在 CPU 上就能跑,安装成本低。但隐形图片水印清除强制要求 CUDA,视频 SynthID 清除走的是有损且需要 oracle 认证的 VAE 方案,普通用户未必接受画质损失。在采用前,先确认你的显卡满足 qwen-zimage 扩展的显存要求,并检查目标平台是否允许移除水印。项目明确声明只针对你拥有的内容,不处理图库预览等第三方付费内容,这一边界要在使用前自行核对。
社区笔记