最近发现一款开源工具,能清除 AI 生成的图片和视频里的水印,叫 Remove-AI-Watermarks。
图片方面,支持移除 Gemini、Nano Banana 的星标,还有豆包、即梦、Qwen、可灵、元宝、百度这些平台的角标。视频方面,支持 Sora、Veo、Seedance、Hailuo、Kling 这些平台。
传送门:github.com/wiltodelta/remove-ai-watermarks
可见水印和隐藏水印都能处理,包括谷歌的 SynthID。
隐藏水印靠模型重绘打散,效果好,但需要 CUDA 显卡;只想清元数据的话,CPU 就够。
有一点得提醒:这工具只建议用来处理你自己拥有的内容,别拿它去动图库预览图这类保护他人付费内容的水印。
另外作者还放了一个在线体验的 Demo,可见水印和元数据移除,直接就能用。
githu原文:
移除你自己生成的图片和视频中的AI来源标记:
- 已知可见标签,如双子星闪光和供应商文字标记;
- 通过扩散再生实现的隐形像素水印;
- C2PA、EXIF、XMP、IPTC 及相关 AI 元数据。
视频支持包括来源识别、完整的可见及元数据 清理、目录批次、可见的Sora、Veo、Seedance、Dola、Hailuo,以及 Kling 标记去除及 Oracle 认证的视频 SynthID VAE 再生 移除。
raiw.cc 将该库作为托管服务运行,GPU 包含在内,且无需安装。可见标记和元数据移除是免费的 在那里;隐形水印去除费用已付费。
本项目适用于您拥有的内容的合法使用。它不针对股票 代理预览或其他保护第三方付费内容的水印。 详见范围、安全和法律说明。
| 目标 | 指挥 | 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 |
| 视频合成ID移除 | remove-ai-watermarks |
| 无焊炬DWT-DCT检测 | remove-ai-watermarks[detect] |
| 隐形图像去除(需要CUDA) | remove-ai-watermarks[qwen-zimage] |
| 所有在激活 Python 上可用的生产功能 | remove-ai-watermarks[all] |
低级别且专业化的额外内容包括 、 、 、 、 和 。安装指南详细记录了它们 依赖组合、Python 兼容性及模型需求。pixelsheiftrustmarkmiganlamadiffusion
安装以元数据为重点的默认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
该命令不转码视频或音频流。不像 上述image命令,省略时写入和 保留原件。MP4和MOV 检查中包含本地TC260标签,包括在媒体载荷后方放置的标签, 以及豆宝iOS导出时写入的QuickTime表单变体(作为直接子节点的裸盒子和无密钥元数据列表)。 MKV和WebM检查读取规范性放置。AVI 使用 ,而 FLV 用途。非ISOBMFF格式则通过流进行重制混 复制,待删除。video metadata-o<source>_cleanAIGCmoov.udta.meta.keys/ilstmoovmetametamoovhdlr=mdirSegment.Tags.Tag.SimpleTagLIST/INFO/AIGCscript.onMetaData.AIGC
使用面向产品的视频路径来识别或清理文件:
uv tool install --force "remove-ai-watermarks"
remove-ai-watermarks video identify input.mp4
remove-ai-watermarks video all input.mp4 -o clean.mp4
video all在存在且始终存在时,移除稳定注册的可见标记 剥离经过验证的AI元数据。如果两个信号都找不到,它仍然写入 同一容器直通,因此应用调用者得到一个可预测的输出 合同。默认排除专有的隐形视频移除功能。 选择加入有损、经过 Oracle 认证的视频 SynthID 配置文件。--invisible
处理一个具有相同契约的目录:
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填充后端。音频被复制 无需重新编码,并被允许自然达到终点;视频流 是因为像素发生变化而被转码。默认情况下,是受保护的光学流 通过运动对齐前一个接受的填充,并仅在 附近的资料背景也同意;用来禁用它。 编码器保留支持 8位源色度采样、色彩标签和MP4/MOV轨道时间尺度 而是依赖FFMPEG隐含的原始BGR默认值。可变帧间隔为 通过带时间戳的内存内NUT桥保持,而非被压缩 到平均帧率。非零源起始时间戳被保留 连同复制的音频偏移量一起。默认情况下,一次解码扫描所有提供者,并选择第一个稳定匹配 特异性顺序如下所示。通过明确标记限制检测 给一个供应商。 Sora覆盖了移动的Sora 2吉祥物和词标记。Veo涵盖了当前的两项 四点钻石与传承文本。Seedance覆盖固定盒标签,Dola覆盖固定文本,Hailuo覆盖复合标签,Kling覆盖右下角标签及其版本后缀。完成的编码会以原子形式发布。不 当找不到稳定标记时,输出会被写入。 HDR、PQ/HLG以及大于8位的输入会被拒绝,而是在编码之前 然后通过OpenCV的8位BGR边界静默地减少。--no-temporal-consistency--mark autoVeoAIDola AIMINIMAX | hailuo AIKLING AI
移除视频合成ID:
uv tool install --force "remove-ai-watermarks"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4
该路径重生成完整序列,共享一个潜在噪声场 跨越时间,复制完整音频,剥离源元数据,并发布 完成原子编码。默认配置文件都通过了 双载波校准和完整的公开八秒Veo预言机 有。谷歌不发布本地解码器,所以需要重新检查服务商 对于异常重要的文件或供应商变更后仍然有用,但 不是产品结果状态。noise_std=0.15
为了去除隐形水印,安装额外的。一块NVIDIA GPU 需要:两个配置文件均仅支持 CUDA,且无 CPU 或 MPS 的备用。qwen-zimage
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
请参阅CLI的清单指南 模式、兼容性限制和预言者注意事项。
请参阅自制、UV、可选安装指南 功能和开发设置。
| 之前 | 之后 |
|---|---|
![]() |
![]() |
qwen-zimage是默认配置文件:在Canny下方进行Qwen-Image-2512闪电传输 ControlNet,随后对任何检测到的人脸进行SAM掩蔽Z图像修复。该 替代方案,将全局阶段替换为SDXL,并保持相同的面貌 舞台。两者都只支持CUDA。sdxl-zimage
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
| OpenAI 之前的示例 | OpenAI 示例如下 |
|---|---|
![]() |
![]() |
| 双子座之前的例子 | 双子座示例 |
|---|---|
![]() |
![]() |
这些精确的输出文件被匹配的提供者验证者核对。那个 结果适用于这些文件,而非所有种子、图片或未来的水印 版本。
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
额外应用在未安装学习后端时使用OpenCV修复。 对于更难的背景,后端的学习附加内容也包括同样的内容 像素依赖自动:visible
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间移动模型组件来降低CUDA内存压力 以及以速度为代价的GPU。
remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
可见标记支持包括:
- 谷歌Gemini和Nano Banana闪光;
- 豆宝、集梦、问、克灵、元宝、百度、LibLibAI和RunningHub标签;
- 一款经过校准的三星Galaxy AI标签变体。
元数据和来源检测涵盖C2PA、EXIF、XMP、IPTC、通用 生成器参数、中国TC260 AIGC标签及若干厂商专用标签 信号。可选解码器支持开放的DWT-DCT水印和Adobe 信任马克。
精确的支撑矩阵,包括重要的位置和探测器极限,都存在 在支持信号中。
可见的去除步骤有三个:
- 在预期区域内检测到注册商标。
- 在标记周围做一个面具。
- 只用 OpenCV、MI-GAN 或 LaMa 填充掩码区域。
元数据移除使用格式敏感的剥离。JPEG元数据移除保留 编码后的图像扫描而不是重新压缩。原生MP4/MOV TC260值 在不改变盒大小或介质偏移的情况下被消黑。其他支持的 容器使用其对应的元数据路径。
隐形移除则不同。它通过扩散重新生成图像 流水线以破坏像素和频域水印。这会改变 图像,无法保证专有验证者会拒绝所有 输出。
可见移除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元数据 书面结果。
请参阅 Python API 指南,了解可见的移除、完整和流水线、来源检测、元数据 剥离和扩散使用。remove_allremove_batch
独立的ComfyUI“去除AI水印”包提供了可见去除、检测、区域擦除和 隐形移除。
- 缺少本地信号意味着未知,而非干净。专有像素 元数据被剔除后,水印可能会保留。
- 可见的移除重建了一个小区域。结果取决于背景 并选择了填充后端。
- 隐形移除会改变整张图片,并可能改变人脸、文字或细节 细节。
- 可见的视频移除识别了移动的Sora 2字标,即当前的Veo 钻石加遗产文本、种子盒标签,以及固定 Dola、Hailuo和Kling品牌。它无法识别较早的Sora Turbo 这些供应商提供的角落旋涡或未注册布局。 经典的OpenCV后端可以模糊结构化背景;使用 MI-GAN 或 当恢复质量重要时,LaMa。
VeoAI - 视频合成ID的再生会改变分辨率、帧率和图像细节。 出厂配置文件是 Oracle 认证的,但没有公共本地解码器能做到 在运行时认证任意输出。重新检查异常重要的输出 在更换医疗服务提供者之后。
- 隐形水印去除需要CUDA。两个配置文件都拒绝使用其他资料 设备在施工时进行,而不是退回无法运行的设备。 可以明显移除、元数据剥离,而且还能在任何地方运行。
identify - 供应商的水印系统可能会变化。用 当有供应商时,他们会自行验证。
shipping命令使用认证配置文件。配套研究背带构建 匹配的重编码控制加上VAE重新生成的候选对象,留下 验证者裁决空白:video invisiblenoise_std=0.15scripts/video_synthid_sweep.py
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
要统计输出的实际成本,请使用: 在重新调整大小和编码之前,会测量发动机自身的PSNR,因此只有 探测器看到了交付的图像。scripts/video_fidelity_probe.py
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
对照必须仍为SynthID正,阴性候选方才能 算作驱逐证据。在2026-07-29的双夹校准中,两者都匹配了 Gemini内置SynthID验证器中的对照结果为阳性;越强 候选人对两家运营商均为否定,而较弱的候选人则为 一号阴性。后来的对抗性后续问题要求普通双子座 重新解释返回的像素结果;那个后续报道并不是 验证器重运行,并不会使内置判决失效。A 2026-07-31 对公开的八秒Veo样本进行完整弹夹检查,仍检测到。 而且没有被检测到,所以现在是认证默认。该 可重复的哈希和判决存在于 。UNAVAILABLE0.100.150.15data/evaluations/video-synthid-oracle.csv
先从文档索引开始。
研究笔记和历史实验单独列在文档索引中。他们解释了过去的决定,但并没有 定义当前的公共API。
安装开发环境并运行项目门:
uv sync --frozen --extra dev
bash maintain.sh
在更换子系统前,请先查看模块内部结构 并有文档中的不变量。
Apache 2.0。版权所有 2025-2026 Wiltodelta。

















暂无评论内容