
remove-ai-watermarks v0.26.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,无需安装任何东西。在那里,标准输出下最高 12 MP 的可见标记和元数据移除是免费的;超过 12 MP 的原始分辨率和不可见水印移除是付费的。
本项目用于对你拥有的内容进行合法使用。它不针对图库机构预览图或其他保护第三方付费内容的水印。 参见范围、安全和法律说明。
选择你想做的事情
| 目标 | 命令 | 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:```bash uv tool install remove-ai-watermarks
检查镜像:```bash
remove-ai-watermarks identify image.png
要从像素对照片进行分类(AI 与相机,可选提供者),请安装额外组件并调用 classify。identify 永远不会启动它:```bash
uv tool install --force "remove-ai-watermarks[classify]"
remove-ai-watermarks classify image.png
指南:[照片像素分类](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md)。
若需在移除元数据后获得一个轻量级、可弃权的 OpenAI/Google/未知来源导出信号,请使用单独的 Python API。它并非 SynthID 检测器:```python
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。
对于可见水印移除,请安装像素依赖:```bash uv tool install --force "remove-ai-watermarks[visible]"
然后移除一个已知的可见标记和 AI 元数据:```bash
remove-ai-watermarks visible image.png -o clean.png
去除元数据,而不运行可见的修复或扩散:```bash remove-ai-watermarks metadata image.png --remove -o clean.png
不带 `-o` 时,此命令会就地覆盖源文件。
检查或移除 MP4、MOV、M4V、WebM、MKV、AVI 或 FLV 文件中的 AI 元数据:```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4
video metadata 命令不会对视频或音频流进行转码。与上面的 image 命令不同,当省略 -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 格式通过流复制进行重封装以移除。
使用面向产品的视频路径来识别或清理文件:```bash 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 配置文件。
使用相同契约处理目录:```bash
remove-ai-watermarks video batch ./videos --mode all
移除受支持的可见视频标记:```bash 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 AI 覆盖复合的
`MINIMAX | hailuo AI` 标签,Kling AI 覆盖右下角的 `KLING AI` 或
`KlingAI` 标签及其版本后缀。完成的编码以原子方式发布。未找到稳定标记时不写入任何输出。
HDR、PQ/HLG 以及大于 8 位的输入会在编码前被拒绝,而不是通过 OpenCV 的 8 位 BGR 边界被静默降级。
应用校准后的视频像素 SynthID 移除配置文件:```bash
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。```bash
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
如果本地检测器无法确认不可见水印,但你知道该图像来自 AI 生成器,请添加 `--force`:```bash
remove-ai-watermarks invisible image.png -o clean.png --force
排版密集型图像可以选择启用实验性的已验证文本后处理。
它接受人工审核过的字符串和行框,或操作员验证过的
仅几何清单;它从不将原始 OCR 输出视为基准真值,也不会
自动运行:```bash
uv tool install --force "remove-ai-watermarks[text-restoration]"
remove-ai-watermarks invisible image.png -o clean.png
--text-manifest verified-lines.json --force
有关 manifest 模式、兼容性限制和 oracle 注意事项,请参阅 [CLI 指南](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text)。
有关 Homebrew、uv、可选功能和开发环境设置,请参阅 [安装指南](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md)。
## 示例
### 可见的 Gemini 标记