15.6k Star!这个开源项目让 AI 水印形同虚设!

· 2026-08-23 20:23 · 2 阅读

开源星探 2026-08-23 20:23 新加坡

以下文章来源于:开源星探

开源星探

专注于分享GitHub上优质、有趣、实用的开源项目、工具及学习资源,为互联网行业爱好者提供优质的科技技术资讯。

8月初,Anthropic 一纸公告,所有 Claude 模型生成的内容将嵌入隐形水印,全球生效,且不提供任何关闭选项。

你用 Claude 写的每一段文字,都会被悄悄打上「AI 出生证明」。

文本层面通过 token 采样偏置植入统计性水印——哪怕你复制粘贴、甚至大幅改写后,水印依然可能残留;文件层面则直接给 PNG、JPG、SVG 等格式盖上 C2PA 数字签名元数据,相当于一个甩不掉的 AI 溯源标签。

就在网友们还在群里吐槽的时候,真正的狠人已经动手了。

Anthropic 发布技术博客的第二天,一位名叫 Guillaume Meyer 的开发者——同时也是 AI 初创公司 Memo 的创始人——就在 GitHub 上推出了一个叫 watermarks-remover 的开源项目。

结果呢?24 小时收获 2600 颗星,几天内突破 11000 星,现在已经冲到了 16.5k Star。

它到底是什么?

watermarks-remover 本质上是一套「Agent Skill + 纯 Python 标准库 HTTP 服务」的组合工具。

它的目标很明确——清洗多厂商 AI 来源标记,为你自己的内容做隐私防护和内容卫生。

不是只会对付 Claude 一家。项目设计之初就瞄准了多厂商生态,覆盖:

  • • Claude 的统计性水印和 C2PA 签名

  • • Gemini / SynthID-Text 的文本水印

  • • OpenAI 的来源表面标记

  • • 开源 LLM 的 Kirchenbauer 式水印

最妙的是,核心脚本只依赖 Python 3.10+ 标准库,零第三方依赖,几乎零安装成本就能跑。

三层防御突破体系

watermarks-remover 不是一个简单的「查找替换」脚本。它采用了一套精密的三层架构,针对不同类型的水印攻击面进行定向清理。

第一层:Unicode 文本卫生层(确定性清除)

AI 模型有时会在输出中嵌入不可见的 Unicode 字符作为标记,比如:

  • • 零宽空格(Zero-Width Space, U+200B)

  • • 零宽非连接符(Zero-Width Non-Joiner)

  • • 双向文本覆盖字符(Bidirectional overrides)

  • • 标签字符(Tag characters)

  • • 异体选择符(Variation selectors)

这一层通过确定性的 Python 脚本,将这些「隐形墨水」彻底擦除。好处是可验证、可测试——清理前后你可以精确统计移除了多少个可疑字符,明明白白。

第二层:统计性水印重写层(最大努力策略)

这才是整个项目的技术深水区,也是对抗 Claude 核心水印机制的关键。

Claude 的水印并不藏在字符里,而是藏在词语选择的概率分布中。模型在生成文本时,会按照一个伪随机规则(基于密钥播种)微妙地偏袒某些 token。这种统计信号不依赖任何可见字符,传统的文本清理对它完全无效。

watermarks-remover 的应对方式是重写攻击(Rewrite Attack)

  • • 通过同义替换、句法重组、连接词变换、句子边界调整等手段,打乱原有的 token 分布模式

  • • 支持多种重写强度:从温和的「释义」(paraphrase)到激进的「人性化」(humanize)

  • • 针对代码还有专门模式——保留行为的前提下重命名局部变量、改写注释

  • • 提供多候选生成,通过 bigram Jaccard 距离自动选择词汇差异最大的版本,确保与原文的统计指纹最大程度偏离

第三层:文件元数据剥离层(容器级清理)

针对 C2PA、EXIF、XMP、文档属性等文件级溯源标记,项目提供了全面的容器清理能力。

格式类型

支持格式

清理内容

图像

PNG, JPEG, WebP, BMP, GIF, TIFF, SVG

C2PA manifest、EXIF、XMP、ICC profile

文档

PDF, DOCX, ODT, EPUB, XLSX, PPTX

文档属性、自定义 XML、嵌入式元数据

网页/文本

HTML, Markdown

Generator meta tags、frontmatter AI 标记

特别值得一提的是 PDF 的处理。普通的 exiftool 对 PDF 的清理是「增量式」的——原数据字节仍留在文件中,只是被标记为「未引用」。而 watermarks-remover 会进一步调用 qpdf --linearize 对 PDF 进行「结构性重写」,彻底丢弃这些残留数据。这种对细节的执着,体现了作者的安全工程素养。

支持格式一览

项目目前支持超过 20 种格式,覆盖你日常可能用到的所有文件类型:

文本类

  • • TXT、MD、DOCX、ODT、EPUB

  • • HTML、XLSX、PPTX

图像类

  • • PNG、JPEG、WebP、AVIF、BMP、GIF、TIFF、SVG

PDF

  • • PDF(支持深度结构性清理)

音视频

  • • MP3、MP4

快速上手指南

方式一:脚本直接使用(最简单)

核心脚本零依赖,几条命令就能上手:

# 设置脚本路径变量
SCRIPTS=service/scripts
# 检查文件里藏了什么标记
python3 "$SCRIPTS/inspect_file.py" draft.md
# 清理文本层 + 文件元数据
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md
# 清理图片
python3 "$SCRIPTS/clean_file.py" photo.png -o photo.cleaned.png
# 清理文档
python3 "$SCRIPTS/clean_file.py" notes.docx -o notes.cleaned.docx
# 单独清理文本层(带统计信息)
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats
# 图像专项检查和清理
python3 "$SCRIPTS/inspect_image.py" shot.png
python3 "$SCRIPTS/clean_image.py" shot.png -o shot.cleaned.png

方式二:HTTP 服务(推荐)

启动一个本地 HTTP 服务,随时随地通过 API 调用:

# 方式一:用 make 一键启动
make serve
# 默认地址:http://127.0.0.1:8765
# 方式二:直接运行
python3 service/scripts/server.py --host 127.0.0.1 --port 8765

服务启动后,可以通过 curl 调用:

WM="http://127.0.0.1:8765"
# 检查服务健康状态
curl -s "$WM/health"
# 返回:{"ok": true, "version": "..."}
# 查看服务能力
curl -s "$WM/capabilities"
# 清理文件(发送 base64 编码的文件)
curl -s -X POST "$WM/clean" -H 'Content-Type: application/json' \
  -d "{\"file\": \"$(base64 -w0 notes.md)\", \"name\": \"notes.md\"}"

API 接口支持:

方法

路径

功能

GET

/health

健康检查

GET

/capabilities

查看可选工具/后端

GET

/openapi.json

OpenAPI 3.0.3 规范

POST

/inspect

检查文件水印

POST

/clean

清理文件水印

如果需要设置 API Key 保护,只需设置环境变量 WATERMARKS_SERVER_API_KEY,之后每次请求需要带上 Authorization: Bearer <key>

方式三:Docker 部署

# 构建并运行核心服务
docker run --rm -p 127.0.0.1:8765:8765 --read-only --tmpfs /tmp watermarks-remover
# 或者使用 docker compose
docker compose up -d
# CLI 方式使用 Docker
docker run --rm -v "$(pwd):/data" watermarks-remover \
  /app/scripts/clean_file.py /data/notes.md -o /data/notes.cleaned.md

写在最后

抛开星标泡沫,watermarks-remover 真正的意义不在「100% 去水印」,而在于它把「内容溯源攻防」这条战线,从大厂实验室搬到了每个人的终端。

当 C2PA 与 SynthID 正被推成行业标配,开源社区同步长出了反向工具——这场围绕 AI 内容出身的拉锯,才刚刚开始。

更重要的是,这个项目体现了一种难得的克制感

  • • 一切皆可选,不强制任何组件

  • • 默认只清理可验证的内容

  • • 清洗报告精确到 Unicode 码点

  • • 对局限性坦诚相告,不做夸大宣传

这种工程严谨度,在同类开源工具中相当突出。

GitHub:https://github.com/guillaumemeyer/watermarks-remover

END

未闻 Code·知识星球开放啦!

一对一答疑爬虫相关问题

职业生涯咨询

面试经验分享

每周直播分享

......

未闻 Code·知识星球期待与你相见~

跳转微信打开