分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

guillaumemeyer/watermarks-remover

安全

从自有内容中移除 AI 溯源水印、隐藏 Unicode、C2PA 元数据和统计文本信号的隐私工具。

25,841
2,943
Python
MIT
创建于 2 个月前

项目介绍

watermarks-remover 是一个用 Python 编写的工具集和本地 HTTP 服务,用于从你拥有或获得授权处理的内容中移除 AI 溯源标记。它同时处理几类不同通道:文本中的不可见 Unicode 载体(零宽字符、双向控制符、标签字符、空格同形字)、图片/PDF/Office 文档中的 C2PA 与生成器元数据,以及生成文本中基于 token 选择的统计水印。

README 把工作分成两层。Layer A 处理文本编辑型载体和文件元数据,其移除结果可验证(Unicode 计数、元数据操作)。Layer B 通过大幅改写攻击采样水印,作者明确将其定位为尽力而为。项目也提供检测入口:/detect 对文本运行厂商检测器和文体分析,对图片运行可选的 SynthID 像素评分;/watermark 生成带水印文本用于往返测试 项目 README。

适用对象是需要清理自己的手稿、文档、网页文案、照片和文档的人,而不是用于伪造「人类写作」声明。README 的伦理部分限定只能处理自己拥有或获授权的内容。

快速使用

核心服务和脚本只需要 Python 3.10+ 和标准库。c2patool、exiftool、qpdf 是可选系统工具,存在时自动使用;Docker 镜像已内置这些工具 README。

启动本地 HTTP 服务:

make serve
# 或直接运行:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765

然后对文件运行命令行工具。先检查,再清理到新路径:

SCRIPTS=service/scripts
python3 "$SCRIPTS/inspect_file.py" draft.md
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md

同样的命令适用于图片和容器格式,例如 photo.png -o photo.cleaned.png 或 notes.docx -o notes.cleaned.docx。图片和容器元数据清理开箱即用;通过 HTTP /clean 清理文本需要配置 Layer B 改写后端(transformers 加 RoBERTa-large 的 MLM 步骤,以及 WATERMARKS_REWRITE_* 的 LLM 配置),否则文本清理会返回 HTTP 400 配置说明。

要在 Claude Code 中使用 agent skill,先添加内置插件市场再安装:

/plugin marketplace add guillaumemeyer/watermarks-remover
/plugin install watermarks-remover@watermarks-remover

该 skill 本身不含代码,只通过 HTTP 调用服务,因此服务必须运行且可达;如果不是 http://127.0.0.1:8765,需要设置 WATERMARKS_SERVICE_URL skill 安装。Codex、Cursor、Cowork、Grok 等其他宿主有各自的 install_skill.py 安装路径。

使用约束

  • 通过 HTTP 清理文本需要 Layer B 配置;没有配置时,文本请求会失败,而不是静默降级。
  • 文本工具拒绝二进制输入,无法识别的格式不会被自动清理:clean_file.py 在不加 --as text 或 --force-text 时以退出码 2 结束且不写输出 README。
  • PDF 的真正元数据清理需要 qpdf 做结构重建,因为 exiftool 以增量方式写 PDF,原始元数据字节仍留在文件里。即便如此,qpdf 也不会深入 PDF 内部的图片 XObject PDF 处理说明。
  • 像素级移除(SynthID 类、StegaStamp、Tree-Ring、StableSignature)依赖外部后端。CtrlRegen 预计需要约 10 GB 模型下载,强烈建议使用 GPU;部分上游模型受限,需要在环境变量中设置 HF_TOKEN。reverse-SynthID 评分器不随项目分发,仍受上游非商业研究许可证约束 CtrlRegen 说明。
  • 清理无法保证厂商检测器一定失败;README 把残留的软绑定和像素水印列为已知风险 残留风险。
  • 项目采用 MIT 许可证,伦理部分限定只处理拥有或获授权的内容。

HotRepo 点评

在 2026-11-01 的 Python 周榜记录中,该项目新增 1,025 星,总星数 25,841、Fork 2,943,并在该榜单上排到第 8 位。对于一个文本侧功能被明确写成「尽力而为」而非保证擦除的工具,这个成绩相当显眼。更有意思的是项目的表述方式:README 把可验证的 Layer A 移除与统计性的 Layer B 改写分开,按厂商和通道公布覆盖矩阵,并记录残留风险,而不是宣称能绕过检测。在水印移除这个过度宣称常见的领域,这一点是榜单数字本身无法体现的。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Show HN: Watermarks Remover: Clean LLM watermarks from text and files
▲ 5 · 1 条评论 · 2026年8月28日
Watermarks-remover: Strip multi-vendor AI provenance marks
▲ 3 · 0 条评论 · 2026年8月13日