Watermarks-Remover:多厂商 AI 溯源标记剥离工具
项目地址:https://github.com/guillaumemeyer/watermarks-remover 授权:MIT · 约 15.5k ⭐ 定位:Agent skill + stdlib Python service to strip multi-vendor AI provenance marks
一、这是什么
一个用来剥离多厂商 AI 溯源标记的工具,面向"内容你所拥有"的隐私与卫生处理场景(例如去掉自己文件里被平台注入的隐形标识)。核心两部分:
- 瘦客户端 Skill:无代码,纯 HTTP 调用
- Python stdlib HTTP 服务:承载所有实际处理逻辑
二、覆盖范围
厂商 / 生态(类别级)
- Claude
- Gemini / SynthID-Text
- OpenAI 溯源面
- 开源 LLM 的 Kirchenbauer 绿名单 与 keyed-Gumbel / EXP (Aaronson) 标记
文件格式
- 图片:PNG / JPEG / WebP / AVIF / HEIC / BMP / GIF / TIFF / SVG
- 文档:PDF / DOCX / XLSX / PPTX / EPUB / ODT / HTML / Markdown
- 音视频:MP4 / MOV / M4A / M4V / WAV / MP3
平台
macOS / Linux / Windows(含 PowerShell 引导脚本 + 登录自启动文档),也提供 Docker / compose。
三、技术原理(三层)
| 层 | 处理方式 |
|---|---|
| Layer A — 确定性 | 清除不可见 Unicode、异形空格、bidi、tag 字符、noncharacters、reserved default-ignorable 等;对表情连接符、脚本连接符做上下文保护,避免误删 |
| Layer B — 尽力而为 | 针对基于采样的统计文本水印,通过 LLM 改写攻击(paraphrase / humanize / code 等 strength 模式)。新版引入迭代式改写:每轮生成 N 个候选,用检测器评估直到通过;evaluator 优先级 gumbel > MarkLLM > 双字母 Jaccard 词汇发散度 |
| 文件层 | 剥离 C2PA / EXIF / XMP / docProps 等。PDF 需要 qpdf 做结构性重写,因为 exiftool 只做增量编辑,原始元数据字节仍可恢复 |
四、可选外部组件
| 组件 | 用途 |
|---|---|
| reverse-SynthID | 图像 SynthID 像素域打分(非商业研究许可,不打包发布) |
CtrlRegen (noai-watermark) | 像素域水印移除(ControlNet + DINOv2 再生),默认强度保守 0.25 |
| MarkLLM | 文本水印同配置验证(KGW / SynthID-Text) |
| MarkDiffusion | 图像水印同方案生成/检测 + DiffusionPurification 盲再生 |
| keyed-Gumbel 检测器 | stdlib-only 的同密钥重放,无需模型或 GPU |
五、安装与使用
最简:起 HTTP 服务
sh
make serve # 起在 http://127.0.0.1:87651
暴露端点:/health、/inspect、/clean、/detect、/capabilities、/openapi.json,以及批量端点。
Skill 安装
软链接到 .grok/skills/ 或 ~/.grok/skills/;Cursor 用户跑 python3 install_skill.py。
Docker
sh
docker pull ghcr.io/guillaumemeyer/watermarks-remover:latest1
Harness / heavy profile 服务用 compose 拉起。
配置
走 .env(gitignored),支持 API Key bearer 鉴权(WATERMARKS_SERVER_API_KEY),默认仅回环绑定。
六、亮点
- 核心零依赖:Python 3.10+ stdlib,HTTP 接口任何语言/前端可集成
- 能力划分诚实:明确区分"可验证"与"尽力而为",Layer B 不承诺 vendor 检测器一定失败
- 强化写入路径:原子写、拒符号链接、资源上限、SSRF 防护、CI SHA 固定、CodeQL、pip-audit
- 文本工具拒绝二进制输入:避免把 DOCX/PDF 解码成"乱码文本"再写回去毁掉原文件
- 生态封装:MetaClean(Tauri GUI)、unmark-web(浏览器端)等第三方前端
七、限制(作者写得很直白)
- 风格代价:Layer B 改写会 "flatten tone, voice, and precision" —— 水印藏在措辞里,去它就要动语气。作者反问:既然要用便宜模型重写,为什么不一开始就用便宜模型生成?
- 超出范围:
- C2PA soft binding(内容中植入、可重连远程 manifest 的软绑定)
- 训练后门
- 音频 / 视频像素水印移除
- 检测能力限制:MarkLLM 和 keyed-Gumbel 都是同配置 / 同密钥重放,不是 vendor oracle —— 负结果证明不了什么
- PDF 兜底:无
qpdf时会降级并给出警告 - 重型组件不发布:CtrlRegen / SynthID scorer 因上游许可只能本地构建;模型下载数 GB,强烈建议 GPU
一句话总结
Watermarks-Remover 把"去 AI 水印"这件常被过度承诺的事,用一个 stdlib HTTP 服务 + 三层清理(确定性 / 改写 / 文件元数据)诚实地做了出来——覆盖十几种文件格式和多家厂商标记,明确划清"可验证"与"尽力而为"的边界。适合两种人:想清理自己内容里被平台埋点的溯源标记,以及想研究 AI 水印攻防的开发者。