返回更新列表
新发布Sep 17, 2026

remove-ai-watermarks v0.41.1

移除图像和视频中可见与不可见的 AI 水印及来源元数据。用于 SynthID、C2PA、EXIF、IPTC、XMP 以及常见生成式 AI 标记的 Python 库和 CLI。

分享

移除 AI 水印

从你自己生成的图像和视频中移除 AI 溯源标记:

  • 已知的可见标签,例如 Google Gemini 闪光水印和厂商文字标记;
  • 通过直接本地格式破坏或扩散再生成来移除不可见像素水印;
  • C2PA、EXIF、XMP、IPTC 及相关 AI 元数据。

视频支持涵盖溯源识别、完整的可见标记加元数据清理、目录批量处理、可见的 Sora、Veo、Seedance、Doubao、Dola、Hailuo AI 和 Kling AI 标记移除,以及用于视频 SynthID 移除的 oracle 认证 VAE 再生成。

raiw.cc 将此库作为托管服务运行,包含 GPU,无需安装任何东西。在那里,Standard 输出下最高 12 MP 的可见标记和元数据移除是免费的;高于 12 MP 的原始分辨率以及不可见水印移除是付费的。

PyPI Python Downloads License Tests Sponsor skills.sh

这是一个关于 AI 溯源信号的研究项目,用于对你拥有的内容进行合法使用。它按原样提供,不附带任何保证或责任,每位用户需对自己的使用方式负责。它不针对图库机构预览图或其他保护第三方付费内容的水印。某些司法管辖区(包括中国)限制移除 AI 标签或提供用于此目的的工具。请参阅范围、安全和法律说明。

选择你想做的事情

目标命令GPU
查找溯源信号和水印identify否
从像素对照片进行分类(可选加入,非溯源)classify否
移除已知的可见 AI 标记visible否
擦除你选择的区域erase否
剥离 AI 元数据metadata否
识别受支持的视频溯源video identify否
从视频中移除可见标记和 AI 元数据video all否
从视频中剥离 AI 元数据video metadata否
从视频中移除已注册的可见 AI 标记video visible否
处理视频目录video batch取决于模式
应用校准后的视频像素 SynthID 移除配置video invisible推荐
再生成图像以破坏不可见水印invisible必需(CUDA)
运行可见、不可见和元数据移除all推荐
处理目录batch取决于模式

Microsoft Paint 和 Photos InvisMark 声明会自动路由到像素再生成。all 命令会同时移除隐藏的像素水印及其关联的 C2PA 清单;仅剥离元数据只会移除清单。专门的 Python API 可以在不进行扩散的情况下检查并破坏已验证的本地 Watermarker.dll 载荷。

安装模式

需求安装
元数据检查和剥离remove-ai-watermarks
照片的 AI 与相机分类remove-ai-watermarks[classify]
OpenAI/Google/未知来源导出分类remove-ai-watermarks[source-classify]
可见检测和移除remove-ai-watermarks[visible]
可见视频处理remove-ai-watermarks[video]
视频 SynthID 移除remove-ai-watermarks[video,diffusion]
无 Torch 的 DWT-DCT 检测remove-ai-watermarks[detect]
直接本地 Paint InvisMark 破坏remove-ai-watermarks[pixels]
不可见图像移除(需要 CUDA)remove-ai-watermarks[qwen-zimage]
活动 Python 上所有可用的生产功能remove-ai-watermarks[all]

更低层级和专门的额外项包括 pixels、heif、trustmark、migan、lama、diffusion、classify-onnx 和 source-classify。安装指南记录了它们确切的依赖组成、Python 兼容性和模型要求。

快速开始

安装以元数据为重点的默认 CLI:

uv tool install remove-ai-watermarks

检查镜像:

remove-ai-watermarks identify image.png

要从像素对照片进行分类(AI 与相机,可选提供者),请安装额外组件并调用 classify。identify 永远不会启动它:

uv tool install --force "remove-ai-watermarks[classify]"
remove-ai-watermarks classify image.png

指南:照片像素分类。

若需在移除元数据后获得一个轻量级、可弃权的 OpenAI/Google/未知来源导出信号,请使用单独的 Python API。它不是 SynthID 检测器:

import remove_ai_watermarks as raiw

result = raiw.classify_source("image.png")
print(result.label, result.reason)

安装 remove-ai-watermarks[source-classify]。指南: source-pipeline classification。

签名溯源是 SynthID 支持的途径,identify 会读取它。 该包中没有本地 SynthID 像素检测器。关于 周期性晶格专家的研究位于 scripts/synthid_runtime/ 和 synthid-detector-research.md。

对于可见水印移除,请安装像素依赖:

uv tool install --force "remove-ai-watermarks[visible]"

然后移除已知的可见标记和 AI 元数据:

remove-ai-watermarks visible image.png -o clean.png

去除元数据,不运行可见的修复或扩散:

remove-ai-watermarks metadata image.png --remove -o clean.png

不带 -o 时,此命令会就地覆盖源文件。

检查或移除 MP4、MOV、M4V、WebM、MKV、AVI 或 FLV 文件中的 AI 元数据:

remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4

video metadata 命令不会对视频或音频流进行转码。与上面的图像命令不同,当省略 -o 时,它会写入 <source>_clean 并保留原始文件。MP4 和 MOV 检查会包含 moov.udta.meta.keys/ilst 中的原生 TC260 AIGC 标签,包括位于媒体负载之后的 moov,以及豆包 iOS 导出所写入的 QuickTime 形式 meta 变体(作为 moov 直接子级的裸 meta box,以及无键的 hdlr=mdir 元数据列表)。同一元数据列表结构中带键的 workflow 和 prompt 条目也会被检测并移除,包括 ComfyUI 导出。MKV 和 WebM 检查会读取规范性的 Segment.Tags.Tag.SimpleTag 位置。AVI 使用 LIST/INFO/AIGC,而 FLV 使用 script.onMetaData.AIGC。非 ISOBMFF 格式通过流复制进行重封装以完成移除。

使用面向产品的视频路径来识别或清理文件:

uv tool install --force "remove-ai-watermarks[video]"
remove-ai-watermarks video identify input.mp4
remove-ai-watermarks video all input.mp4 -o clean.mp4

video all 在存在时移除稳定的已注册可见标记,并始终剥离已验证的 AI 元数据。如果两个信号都未找到,它仍会写入同容器透传,因此应用程序调用方获得一个可预测的输出契约。专有隐形视频移除默认被排除。 --invisible 选择加入有损的、经 oracle 认证的视频 SynthID 配置文件。

使用相同契约处理目录:

remove-ai-watermarks video batch ./videos --mode all

移除受支持的可见视频标记:

remove-ai-watermarks video visible input.mp4 -o clean.mp4
remove-ai-watermarks video visible veo.mp4 --mark veo -o veo_clean.mp4
remove-ai-watermarks video visible seedance.mp4 --mark seedance -o seedance_clean.mp4
remove-ai-watermarks video visible dola.mp4 --mark dola -o dola_clean.mp4
remove-ai-watermarks video visible hailuo.mp4 --mark hailuo -o hailuo_clean.mp4
remove-ai-watermarks video visible kling.mp4 --mark kling -o kling_clean.mp4

此路径在更改像素之前扫描完整序列。它仅接受在相邻帧中稳定位置重复出现的标记,然后复用与图像移除相同的 OpenCV、MI-GAN 或 LaMa 填充后端。音频直接复制而不重新编码,并允许其自然结束;视频流则因像素变化而进行转码。默认情况下,受保护的光流处理会对先前接受的填充进行运动对齐,并仅在附近源上下文一致时进行混合;使用 --no-temporal-consistency 可禁用它。 编码器保留受支持的 8 位源色度采样、色彩标签以及 MP4/MOV 轨道时间刻度,而不是依赖 ffmpeg 隐式的原始 BGR 默认值。可变帧间隔通过带时间戳的内存 NUT 桥接得以保留,而不是被展平为平均帧率。非零源起始时间戳与复制的音频偏移一起保留。默认的 --mark auto 在一次解码过程中扫描所有提供者,并按下面显示的特异性顺序选择第一个稳定匹配。有效的 Google AI 视频来源会打破 Sora/Veo 交叉匹配,偏向 Veo,当菱形嵌套在 Sora 区域内,或 Veo 在完整片段中持续存在而 Sora 不存在时。 传入显式标记可将检测限制为单个提供者。 Sora 覆盖移动的 Sora 2 吉祥物,无论是否带有文字标记;仅吉祥物匹配还要求完整的双眼形状。Veo 覆盖当前的四点菱形和旧版 Veo 文本。Seedance 覆盖固定的方框 AI 标签,Dola 覆盖固定的 Dola AI 文本,Hailuo AI 覆盖复合的 MINIMAX | hailuo AI 标签,Kling AI 覆盖右下角的 KLING AI 或 KlingAI 标签及其版本后缀。完成的编码以原子方式发布。未找到稳定标记时不写入任何输出。 HDR、PQ/HLG 以及大于 8 位的输入在编码前被拒绝,而不是通过 OpenCV 的 8 位 BGR 边界静默降级。

应用校准的视频像素 SynthID 移除配置文件:

uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4

此路径会重新生成完整序列,并在时间上共享一个潜在噪声场,复制完整音频,剥离源元数据,并以原子方式发布完成的编码。默认的 noise_std=0.15 配置通过了双载波校准以及完整的公开八秒 Veo oracle 检查。Google 不发布本地解码器,因此对于特别重要的文件或在提供商变更后,重新进行提供商检查仍然有用,但这并非产品结果状态。因此,CLI 描述的是视频像素重新生成,而不是声称对每个文件给出 SynthID 判定,并将复制的音频水印报告为 UNVERIFIED。

若要通过 CLI 或高级 API 移除不可见水印,请安装 qwen-zimage 附加组件。需要 NVIDIA GPU:所有扩散配置均为仅限 CUDA,且没有 CPU 或 MPS 回退方案。专用的本地 Paint API 使用 pixels 附加组件,无需 CUDA。

uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png

如果本地检测器无法确认不可见水印,但你知道该图像来自 AI 生成器,请添加 --force:

remove-ai-watermarks invisible image.png -o clean.png --force

排版密集型图像可以选择启用实验性的已验证文本后处理流程。 它接受人工审核过的字符串和行框,或操作员验证过的 仅几何清单;它从不将原始 OCR 输出视为真实基准,也不会 自动运行:

uv tool install --force "remove-ai-watermarks[text-restoration]"
remove-ai-watermarks invisible image.png -o clean.png \
  --text-manifest verified-lines.json --force

分类