工具推荐·阅读约 2 分钟·
watermarks-remover:一个剥离 AI 水印的开源工具,上线一周拿下 13K Stars

watermarks-remover:一个剥离 AI 水印的开源工具,上线一周拿下 13K Stars

Anthropic 宣布给所有 Claude 输出加语义水印的同一天,这个 MIT 许可的开源项目出现了——它用三层机制剥离文本统计水印、不可见 Unicode 和文件元数据里的 AI 溯源标记。

原文来源:GitHub — guillaumemeyer/watermarks-remover — 一个多厂商 AI 溯源标记剥离工具,覆盖不可见 Unicode、统计文本水印和 C2PA 元数据三层,上线一周即获 13.2K Stars。

为什么这个工具一周就火了

2026 年 8 月,Anthropic 宣布根据欧盟新规,所有 Claude 模型生成的文本都将被"水印化"——通过语义层面的统计特征(绿名单/红名单词选择)在文本里留下可检测的指纹。这个决定在开发者社区引发了强烈反弹,Daring Fireball 的 John Gruber 直接发文称其为"对写作的亵渎"。

就在这个时间点前后,一个名为 watermarks-remover 的开源项目出现了:它能在你自己拥有的内容上剥离各种 AI 溯源标记,从不可见 Unicode 字符到统计文本水印,再到图片和文档里的 C2PA 元数据。8 月 11 日创建,8 月 17 日已经积累了 13.2K Stars,MIT 许可,纯 Python 实现。

作者在 README 里把定位说得很清楚:为隐私和文本卫生服务,适用于你拥有合法权利的内容——而不是帮你伪造文本来源。

—— 广告 ——

三层剥离机制

这个项目把 AI 溯源标记分成三层,分别处理:

A 层:不可见 Unicode 字符。许多水印方案会在文本里藏零宽字符、异体空格、双向控制符、标签字符等。这一层用确定性 Python 脚本清洗,不涉及模型调用,速度快、可审计。

B 层:统计文本水印。这是 Anthropic、Google SynthID-Text 这类语义水印的核心——模型在生成时会偏向选择"绿名单"词而非"红名单"词,留下可统计检测的指纹。这一层的剥离方式是 agent 重写:让 LLM 用自然语言改写文本,破坏词选择统计特征,同时保留语义。项目提供了一个 rewrite_text.py 钩子,默认只打印改写提示(不调用模型),可选接入本地 Ollama 或任意 OpenAI 兼容端点。

文件层:C2PA / EXIF / XMP 元数据。图片、PDF、DOCX 等文件里的溯源清单和 AI 生成元数据。支持 PNG、JPEG、WebP、BMP、GIF、TIFF、SVG、PDF、DOCX、EPUB、ODT、HTML、Markdown 等格式,可选配合 c2patool(C2PA 清单检查)、exiftool(残留元数据清理)和 qpdf(PDF 结构重建)。

架构设计:agent skill + HTTP 服务

这个项目的架构值得单独说一下。它不是一个传统意义上的 CLI 工具,而是设计成两层

  • Agent skillskills/remove-ai-marks/):薄客户端,只有 Markdown 说明文件,不含任何代码。安装到 Grok 或 Cursor 的 skills 目录后,agent 会通过 HTTP 调用服务端完成实际工作。
  • Python 服务service/scripts/server.py):纯 Python 3.10+ 标准库实现,无第三方依赖、无 Docker 要求,一个命令启动:
code
make serve   # 或 python3 service/scripts/server.py --host 127.0.0.1 --port 8765

服务端提供 GET /healthGET /capabilitiesPOST /inspect(检查文件是否含水印)和 POST /clean(清理)四个端点,自动根据文件扩展名和魔数判断类型,支持 base64 传输,可配 API Key 认证,默认只绑定回环地址。

这种设计的好处:agent 宿主机器不需要装 Python 依赖,所有重型逻辑都在服务端;而服务端又是一个独立的、可被任何 Web 应用集成的 HTTP 服务——不用把整个仓库 vendor 进来。

快速上手

单条命令清理一个文件:

code
python3 service/scripts/clean_file.py draft.md -o draft.cleaned.md
python3 service/scripts/clean_file.py photo.png -o photo.cleaned.png
python3 service/scripts/clean_file.py notes.docx -o notes.cleaned.docx

文本检查与统计重写:

code
# 检查文本里的不可见字符
python3 service/scripts/inspect_text.py draft.md
 
# 统计水印重写(默认只打印提示词,不调模型)
python3 service/scripts/rewrite_text.py draft.md --backend print-prompt --strength paraphrase
 
# 接入本地 Ollama
WATERMARKS_REWRITE_BACKEND=ollama WATERMARKS_REWRITE_MODEL=llama3.2 \
  python3 service/scripts/rewrite_text.py draft.md -o draft.rewritten.md

全量基础设施(含 MarkLLM 文本水印测试套件、MarkDiffusion 图像水印套件等)可用 Docker Compose 拉起,支持 --profile harness--profile heavy 分层启动。注意两个"重"服务(CtrlRegen 像素级水印移除、reverse-SynthID 评分器)因为上游许可问题永远不会发布到容器镜像,只能本地构建。

技术要点与限制

  • 文本工具拒绝二进制输入inspect_text.py 等文本工具会对 .docx.pdf 或图片文件直接报错并提示用 inspect_file.py——因为把压缩字节当文本来扫会得到跟踪压缩而非内容的噪音数据,早期版本甚至会把这些损坏的字节写回去毁掉文件。
  • 默认保守强度:项目引用了 2026 年的一篇论文(《Removing the Watermark Is Not Enough》),说明剥离后仍可能留下取证痕迹,因此默认采用保守策略,不承诺"绝对干净"。
  • AI 生成代码需谨慎:B 层重写本质上是让另一个 LLM 改写文本,意味着内容经过了模型处理——如果你要剥离水印的文本本身是敏感材料,需要注意这一层会把内容发送给本地或远程模型。
  • 参考实现丰富:README 引用了 Kirchenbauer 水印、SynthID-Text(Nature 2024)、C2PA、MarkLLM、MarkDiffusion、CtrlRegen 等十几篇论文和项目,作为各层剥离方案的依据。

适合谁用

这个工具适合三类人:一是内容创作者,不希望自己润色过的文本被误判为 AI 生成——Anthropic 的水印方案连"模型处理过"的文本(比如校对、摘要)都会打标,引用一段 AI 协助过的文字可能让整篇文档被标记;二是隐私敏感的个人用户,不想让文本里残留来源指纹;三是研究水印技术的开发者,项目里的 inspect/clean 工具链本身就是理解各类水印方案的好教材。

不适合的场景也很明确:不要用它伪造文本来源、规避合规要求,或者在你不拥有权利的内容上使用。项目本身的许可(MIT)和定位都是围绕"你拥有的内容"展开的。

在 AI 厂商与用户之间关于文本溯源的拉锯战中,这个工具代表了"用户自主权"这一边。它的出现和爆火本身,就是社区对强制水印最直接的态度表达。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/tools/watermarks-remover-ai-provenance