移除您自己生成的图像和视频中的 AI 来源标记:
视频支持涵盖来源识别、完整的可见标记与元数据清理、目录批量处理、可见的 Sora、Veo、Seedance、Dola、Hailuo 和 Kling 标记移除,以及用于视频 SynthID 移除的经 oracle 认证的 VAE 再生。
如果您不想在本地安装 Python 或运行扩散模型,可以在 raiw.cc 在线试用。
本项目仅用于您所拥有内容的合法使用。它不针对图库预览图或其他保护第三方付费内容的水印。请参阅范围、安全与法律说明。
较低层级和专用的扩展包括 pixels、heif、trustmark、migan、lama 和 diffusion。安装指南 记录了它们精确的依赖组成和模型要求。
安装以元数据为重点的默认 CLI:
uv tool install remove-ai-watermarks
检查图像:
remove-ai-watermarks identify image.png
要进行可见水印移除,请安装像素依赖:
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。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 在单次解码遍历中扫描所有提供商,并按下文所示的特异性顺序选择第一个稳定匹配。传入显式标记可将检测限制为单一提供商。Sora 涵盖移动的 Sora 2 吉祥物和字标。Veo 涵盖当前的四点菱形和旧版 Veo 文字。Seedance 涵盖固定的框式 AI 标签,Dola 涵盖固定的 Dola AI 文字,Hailuo 涵盖组合式 MINIMAX | hailuo AI 标签,Kling 涵盖带有版本后缀的右下角 KLING AI 标签。编码完成后会以原子方式发布。当未找到稳定标记时,不会写入任何输出。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 未发布本地解码器,因此对于特别重要的文件或在提供商变更后,重新进行提供商检查仍然有用,但它不是产品结果状态。
要进行不可见水印移除,请安装 qwen-zimage 扩展。需要 NVIDIA GPU:两个配置均为 CUDA 专用,没有 CPU 或 MPS 回退。
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
有关 Homebrew、uv、可选功能和开发环境设置,请参阅安装指南。
| 之前 | 之后 |
|---|---|
![]() | ![]() |
qwen-zimage 是默认配置:在 Canny ControlNet 下进行 Qwen-Image-2512 Lightning 阶段,随后对检测到的任何面部进行 SAM 掩码 Z-Image 修复。另一个选项 sdxl-zimage 将全局阶段换成 SDXL,并保留相同的面部阶段。两者均为 CUDA 专用。
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
这些确切的输出文件已使用匹配的提供商验证器进行了检查。该结果仅适用于这些文件,而非每一个种子、图像或未来的水印版本。
remove-ai-watermarks visible image.png -o clean.png
默认的 --mark auto 会检查所有已注册的可见标记并移除每一个匹配项。如果您能看到该标记但检测器未能识别,请显式选择其区域:
remove-ai-watermarks erase image.png \
--region 1640,1930,400,100 \
-o clean.png
--region 使用 x,y,width,height 格式,并且可以重复。
当未安装学习型后端时,visible 扩展使用 OpenCV 修复。对于更复杂的背景,学习型后端扩展会自动包含相同的像素依赖:
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama
remove-ai-watermarks invisible image.png -o clean.png \
--cpu-offload --force
CPU 卸载通过在 CPU 和 GPU 之间移动模型组件来降低 CUDA 内存压力,但以速度为代价。
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
可见标记支持包括:
元数据和来源检查涵盖 C2PA、EXIF、XMP、IPTC、常见生成器参数、中国 TC260 AIGC 标签以及若干厂商特定信号。可选解码器增加了对开放 DWT-DCT 水印和 Adobe TrustMark 的支持。
精确的支持矩阵(包括重要的区域设置和检测器限制)位于受支持信号。
可见移除遵循三个步骤:
元数据移除使用格式感知剥离。JPEG 元数据移除会保留编码后的图像扫描数据,而不是重新压缩。原生 MP4/MOV TC260 值会被置空,而不会更改 box 大小或媒体偏移。其他受支持的容器使用其对应的元数据路径。
不可见移除则不同。它通过扩散流程重新生成图像,以破坏像素域和频域水印。这会改变图像,并且无法保证专有验证器会拒绝每一个输出。
可见移除 API 需要 remove-ai-watermarks[visible]。
import remove_ai_watermarks as raiw
result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)
provenance = raiw.identify_video("input.mp4")
report = raiw.inspect_video_metadata("input.mp4")
complete = raiw.remove_video_all("input.mp4", "clean.mp4")
batch = raiw.remove_video_batch("videos", "videos_clean")
cleaned = raiw.remove_video_metadata("input.mp4")
synthid_cleaned = raiw.remove_video_invisible("input.mp4", "synthid_clean.mp4")
visible = raiw.remove_video_visible("input.mp4", "clean.mp4")
print(visible.mark)
veo = raiw.remove_video_visible("veo.mp4", "veo_clean.mp4", mark="veo")
seedance = raiw.remove_video_visible(
"seedance.mp4",
"seedance_clean.mp4",
mark="seedance",
)
dola = raiw.remove_video_visible("dola.mp4", "dola_clean.mp4", mark="dola")
高级 API 接受文件路径或 BGR NumPy 数组。对于路径输入,它还会读取来源元数据、保留 alpha 通道,并可从写入的结果中剥离 AI 元数据。
有关可见移除、完整的 remove_all 和 remove_batch 流程、来源检查、元数据剥离和扩散用法,请参阅 Python API 指南。
独立的 ComfyUI Remove AI Watermarks 包提供了用于可见移除、检测、区域擦除和不可见移除的节点。
Veo 文字、Seedance 框式 AI 标签,以及固定的 Dola、Hailuo 和 Kling 标签。它无法识别较早的 Sora Turbo 角落旋涡标记或这些提供商的未注册布局。经典 OpenCV 后端可能会在结构化背景上产生涂抹痕迹;当恢复质量很重要时,请使用 MI-GAN 或 LaMa。identify 仍然可以在任何设备上运行。随附的 video invisible 命令使用经认证的 noise_std=0.15 配置。配套的研究工具 scripts/video_synthid_sweep.py 构建一个匹配的重新编码对照以及 VAE 再生的候选集,并将验证器判定留空:
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
要评估输出实际付出的代价,请使用 scripts/video_fidelity_probe.py:引擎自身的 PSNR 在缩放和编码之前测量,因此只有探针能看到最终交付的画面。
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
在阴性候选可被视为移除证据之前,对照样本必须仍为 SynthID 阳性。在 2026-07-29 的双片段校准中,两个匹配的对照样本在 Gemini 内置的 SynthID 验证器中均为阳性;较强的候选样本在两个载波上均为阴性,而较弱的候选样本仅在一个载波上为阴性。随后一次对抗性跟进测试要求普通 Gemini 重新解释像素结果,返回了 UNAVAILABLE;该跟进测试并非验证器重跑,因此不会使内置判定无效。2026-07-31 对一个公开的八秒 Veo 样本进行的全片段检查发现 0.10 仍可被检测到,而 0.15 未被检测到,因此 0.15 现为认证默认值。可复现的哈希值和判定位于 data/evaluations/video-synthid-oracle.csv。
从文档索引开始。
研究笔记和历史实验在文档索引中单独列出。它们解释了过去的决策,但不定义当前的公共 API。
安装开发环境并运行项目门禁:
uv sync --frozen --extra dev
bash maintain.sh
在更改具有已记录不变量的子系统之前,请参阅模块内部结构。
Apache 2.0。版权所有 2025-2026 wiltodelta。
| 目标 | 命令 | GPU |
|---|
| 查找来源信号和水印 | identify | 否 |
| 移除已知的可见 AI 标记 | visible | 否 |
| 擦除您选择的区域 | erase | 否 |
| 剥离 AI 元数据 | metadata | 否 |
| 识别受支持的视频来源 | video identify | 否 |
| 移除视频中的可见标记和 AI 元数据 | video all | 否 |
| 剥离视频中的 AI 元数据 | video metadata | 否 |
| 移除视频中已注册的可见 AI 标记 | video visible | 否 |
| 处理一个视频目录 | video batch | 取决于模式 |
| 使用经认证的 VAE 配置移除视频 SynthID | video invisible | 推荐 |
| 重新生成图像以破坏不可见水印 | invisible | 需要 (CUDA) |
| 运行可见、不可见和元数据移除 | all | 推荐 |
| 处理一个目录 | batch | 取决于模式 |
| 需求 | 安装 |
|---|
| 元数据检查和剥离 | remove-ai-watermarks |
| 可见检测和移除 | remove-ai-watermarks[visible] |
| 可见视频处理 | remove-ai-watermarks[video] |
| 视频 SynthID 移除 | remove-ai-watermarks[video,diffusion] |
| 免 Torch 的 DWT-DCT 检测 | remove-ai-watermarks[detect] |
| 不可见图像移除(需要 CUDA) | remove-ai-watermarks[qwen-zimage] |
| 所有生产功能 | remove-ai-watermarks[all] |