Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
remove-ai-watermarks — 移除图像和视频中可见与不可见的 AI 水印及来源元数据。用于 SynthID、C2PA、EXIF、IPTC、XMP 以及常见生成式 AI 标记的 Python 库和 CLI。 | Kitploit
工具/GitHubGitHub/wiltodelta/remove-ai-watermarks
通用工具OSINT (开源情报)取证分析隐写术数据恢复数字取证密码学隐私保护学习与教育
GitHubwiltodelta/remove-ai-watermarks

remove-ai-watermarks

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

查看仓库
4.5k42411天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

移除 AI 水印

移除您自己生成的图像和视频中的 AI 来源标记:

  • 已知的可见标签,例如 Gemini 闪光标记和厂商文字标记;
  • 通过扩散再生移除不可见的像素水印;
  • C2PA、EXIF、XMP、IPTC 及相关的 AI 元数据。

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

如果您不想在本地安装 Python 或运行扩散模型,可以在 raiw.cc 在线试用。

PyPI Python Downloads License Tests Sponsor

本项目仅用于您所拥有内容的合法使用。它不针对图库预览图或其他保护第三方付费内容的水印。请参阅范围、安全与法律说明。

选择您想执行的操作

安装模式

较低层级和专用的扩展包括 pixels、heif、trustmark、migan、lama 和 diffusion。安装指南 记录了它们精确的依赖组成和模型要求。

快速开始

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

root@kitploit:~
uv tool install remove-ai-watermarks

检查图像:

root@kitploit:~
remove-ai-watermarks identify image.png

要进行可见水印移除,请安装像素依赖:

root@kitploit:~
uv tool install --force "remove-ai-watermarks[visible]"

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

root@kitploit:~
remove-ai-watermarks visible image.png -o clean.png

在不运行可见修复或扩散的情况下剥离元数据:

root@kitploit:~
remove-ai-watermarks metadata image.png --remove -o clean.png

在不使用 -o 的情况下,此命令会就地覆盖源文件。

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

root@kitploit:~
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 格式在移除时会通过流复制进行重新封装。

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

root@kitploit:~
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 配置。

使用相同的契约处理目录:

root@kitploit:~
remove-ai-watermarks video batch ./videos --mode all

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

root@kitploit:~
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:

root@kitploit:~
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 回退。

root@kitploit:~
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png

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

root@kitploit:~
remove-ai-watermarks invisible image.png -o clean.png --force

有关 Homebrew、uv、可选功能和开发环境设置,请参阅安装指南。

示例

可见的 Gemini 标记

之前之后
带有可见 Gemini 水印的图像可见水印移除后的图像

高质量不可见移除

qwen-zimage 是默认配置:在 Canny ControlNet 下进行 Qwen-Image-2512 Lightning 阶段,随后对检测到的任何面部进行 SAM 掩码 Z-Image 修复。另一个选项 sdxl-zimage 将全局阶段换成 SDXL,并保留相同的面部阶段。两者均为 CUDA 专用。

root@kitploit:~
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
OpenAI 示例之前OpenAI 示例之后
OpenAI 肖像网格在 qwen-zimage 之前OpenAI 肖像网格在 qwen-zimage 之后
Gemini 示例之前Gemini 示例之后
Gemini 标志在 qwen-zimage 之前Gemini 标志在 qwen-zimage 之后

这些确切的输出文件已使用匹配的提供商验证器进行了检查。该结果仅适用于这些文件,而非每一个种子、图像或未来的水印版本。

常用方案

移除所有检测到的可见标记

root@kitploit:~
remove-ai-watermarks visible image.png -o clean.png

默认的 --mark auto 会检查所有已注册的可见标记并移除每一个匹配项。如果您能看到该标记但检测器未能识别,请显式选择其区域:

root@kitploit:~
remove-ai-watermarks erase image.png \
  --region 1640,1930,400,100 \
  -o clean.png

--region 使用 x,y,width,height 格式,并且可以重复。

使用学习型填充后端

当未安装学习型后端时,visible 扩展使用 OpenCV 修复。对于更复杂的背景,学习型后端扩展会自动包含相同的像素依赖:

root@kitploit:~
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
root@kitploit:~
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama

减少 CUDA 内存使用

root@kitploit:~
remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force

CPU 卸载通过在 CPU 和 GPU 之间移动模型组件来降低 CUDA 内存压力,但以速度为代价。

处理目录

root@kitploit:~
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all

该工具能识别什么

可见标记支持包括:

  • Google Gemini 和 Nano Banana 闪光标记;
  • Doubao、Jimeng、Qwen、Kling、Yuanbao、Baidu、LibLibAI 和 RunningHub 标签;
  • 一种已校准的三星 Galaxy AI 标签变体。

元数据和来源检查涵盖 C2PA、EXIF、XMP、IPTC、常见生成器参数、中国 TC260 AIGC 标签以及若干厂商特定信号。可选解码器增加了对开放 DWT-DCT 水印和 Adobe TrustMark 的支持。

精确的支持矩阵(包括重要的区域设置和检测器限制)位于受支持信号。

工作原理

可见移除遵循三个步骤:

  1. 在预期区域检测已注册的标记。
  2. 在标记周围构建掩码。
  3. 仅使用 OpenCV、MI-GAN 或 LaMa 填充掩码区域。

元数据移除使用格式感知剥离。JPEG 元数据移除会保留编码后的图像扫描数据,而不是重新压缩。原生 MP4/MOV TC260 值会被置空,而不会更改 box 大小或媒体偏移。其他受支持的容器使用其对应的元数据路径。

不可见移除则不同。它通过扩散流程重新生成图像,以破坏像素域和频域水印。这会改变图像,并且无法保证专有验证器会拒绝每一个输出。

完整的技术边界请参阅受支持信号和已知限制。

Python API

可见移除 API 需要 remove-ai-watermarks[visible]。

root@kitploit:~
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

独立的 ComfyUI Remove AI Watermarks 包提供了用于可见移除、检测、区域擦除和不可见移除的节点。

重要限制

  • 本地信号缺失意味着未知,而非干净。专有像素水印在元数据被剥离后可能仍然存在。
  • 可见移除仅重建一个小区域。结果取决于背景和所选的填充后端。
  • 不可见移除会改变整张图像,可能会改变面部、文字或精细细节。
  • 可见视频移除能够识别移动的 Sora 2 字标、当前 Veo 菱形加上旧版 Veo 文字、Seedance 框式 AI 标签,以及固定的 Dola、Hailuo 和 Kling 标签。它无法识别较早的 Sora Turbo 角落旋涡标记或这些提供商的未注册布局。经典 OpenCV 后端可能会在结构化背景上产生涂抹痕迹;当恢复质量很重要时,请使用 MI-GAN 或 LaMa。
  • 视频 SynthID 再生会改变分辨率、帧率和图像细节。随附的配置已通过 oracle 认证,但没有公开的本地解码器可以在运行时认证任意输出。在提供商变更后,请重新检查特别重要的输出。
  • 不可见水印移除需要 CUDA。两个配置在构造时会拒绝任何其他设备,而不会回退到无法运行它们的设备。可见移除、元数据剥离和 identify 仍然可以在任何设备上运行。
  • 提供商的水印系统可能会发生变化。当提供商提供自己的验证器时,请使用它来验证重要输出。

随附的 video invisible 命令使用经认证的 noise_std=0.15 配置。配套的研究工具 scripts/video_synthid_sweep.py 构建一个匹配的重新编码对照以及 VAE 再生的候选集,并将验证器判定留空:

root@kitploit:~
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/

要评估输出实际付出的代价,请使用 scripts/video_fidelity_probe.py:引擎自身的 PSNR 在缩放和编码之前测量,因此只有探针能看到最终交付的画面。

root@kitploit:~
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。

文档

从文档索引开始。

  • 安装
  • CLI 指南
  • Python API
  • 受支持信号
  • 已知限制
  • 范围、安全与法律说明
  • 模块内部结构
  • 发布与分发

研究笔记和历史实验在文档索引中单独列出。它们解释了过去的决策,但不定义当前的公共 API。

贡献

安装开发环境并运行项目门禁:

root@kitploit:~
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 配置移除视频 SynthIDvideo 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]