刚开源 2 天狂揽 7700+ Star!这个水印移除工具火了
刚开源 2 天狂揽 7700+ Star!这个水印移除工具火了
你从 Claude 复制了一段文字,从 Midjourney 下载了一张图,从 Gemini 导出过一份文档。你觉得这些内容是你生成的——你花钱买的会员、你花时间调的 prompt,想怎么用就怎么用。
但你可能不知道,这些内容被 AI 厂商打了标记。有些你看得见(比如图片信息里写着”Generated by AI”),更多的你根本看不见。
前几天 GitHub 上冒出一个项目,专门干一件事——清除 AI 内容的”隐形水印”。项目叫 watermarks-remover,8 月 14 号开源,两天 Star 从 0 冲到 7700,杀到 GitHub 日榜第二。等我写这篇文章的时候,已经 11.6k 了。
两天涨了一万多颗星。说明有大量的人意识到了这个问题,或者被困扰了很久。
但这个工具不是我们平时说的那种”去图片水印”——把图片上的 Logo 抹掉那种。它去的是你看不见的水印。
先说一个冷知识:AI 水印不是一种,是三种
AI 厂商到底在内容上做了什么标记?我查了一圈资料,发现所谓的”AI 水印”其实分三层。
第一层:藏在文字缝隙里的”隐形墨水”
你从 Claude 复制一段文字,粘贴到编辑器里,看起来就是普通文本。
但如果你用 hex 查看器打开,会发现里面藏着”幽灵字符”——零宽空格、零宽连接符、双向文本标记。这些 Unicode 字符有内容但不显示,就像用隐形墨水写的字。
AI 厂商会在生成文本里插入这些不可见字符,形成一种”指纹”。后续检测这些字符,就能判断内容是不是自己的 AI 生成的。
效果: 你从 AI 复制了一段文字,这段文字带着一串你看不见的”身份证号”。
第二层:藏在用词习惯里的”统计签名”
这一层更隐蔽。
AI 生成文本时,每个词的选择是个概率游戏——这个词 80% 选 A,20% 选 B。厂商可以微调概率:让本来 10% 的词变成 15%。大量微调累积起来,形成统计上的”签名”。
就像每个人的说话习惯不同——有人爱说”其实”,有人爱说”怎么说呢”。AI 的”说话习惯”被刻意调整了,这个调整模式就是水印。
这种水印不需要插入额外字符,文本本身的不同就是水印。也是最难去除的——它长在文字本身里。
第三层:藏在文件头里的”身份证”
如果你用 AI 生成了一张图片,文件里会嵌入一段 C2PA 标准的元数据,记录”这张图由 AI 生成,模型是 XX”。你右键查看图片属性就能看到——但大多数人不知道去看。
DOCX 文档的”属性”里会写着”生成工具:Claude”,PDF 文件里也嵌入了类似的溯源信息。
这三层水印藏在不同的位置,也需要用不同的方式清除。

watermarks-remover 正好做了这三层的事。
这个工具到底怎么做到的?

核心设计是”分层处理、尽力清理”。不是打包票说”100% 清除”,而是针对每一层给出对应方案:
- A 层(Unicode 层): 确定性清理。零宽空格、不可见字符、双向文本标记这些,脚本扫一遍就能删干净,可以做到 100%。
- B 层(统计层): 尽力而为。通过 AI 重写文本抹掉统计水印,代价是原文措辞会改变。项目 README 说得很诚实——“best-effort”。
- 文件层(元数据/C2PA): 也是确定性清理。删除图片的 EXIF/C2PA 数据、清理文档属性、重写 PDF 结构,也能做到 100%。
支持的格式覆盖了 8 种:PNG、JPEG、WebP、SVG、PDF、DOCX、ODT、HTML、Markdown。日常用的文件类型基本都在里面了。
支持的 AI 厂商覆盖了主流几家:Claude、Gemini/SynthID-Text、OpenAI 的溯源表面、以及开源的 open-LLM 水印。
实操:怎么跑起来?

我试了两种方式。
方式一:Docker 一键部署(推荐,5 分钟搞定)
不想折腾 Python 环境的话,这是最省事的。
docker pull ghcr.io/guillaumemeyer/watermarks-remover:latest
docker run -p 8765:8765 ghcr.io/guillaumemeyer/watermarks-remover:latest
两条命令,等一两分钟,服务就跑起来了。访问 http://localhost:8765,能看到项目的 HTTP API 界面。
核心接口有三个:
/health— 检查服务是否正常运行/inspect— 分析文件,返回”这个文件上有什么水印标记”/clean— 执行清理,返回清理后的文件
我拿一张从 AI 工具生成的 PNG 试了一下。先用 /inspect 查看,返回结果显示文件头里嵌着 C2PA 元数据,记录了模型信息和生成时间。然后调用 /clean 清理,下载回来的图片小了大概 30KB——元数据段被删掉了。图片画质不受影响,看起来和原来一模一样。
方式二:本地 Python 运行
有 Python 3.10+ 环境的话,也可以直接拉项目跑:
git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
make serve
# 或者 python3 service/scripts/server.py --host 127.0.0.1 --port 8765
项目用纯 Python 标准库编写,不需要额外装依赖,拉到本地就能跑。
逐层测试:效果到底怎么样?
A 层测试:Unicode 隐形字符清理
我从 Claude 复制了一段大约 500 字的文案,用 hex 工具查看,发现里面确实有零宽空格(U+200B)和零宽非连接符(U+200C)——大概十几个,分布在全文各处。
运行 A 层清理后,这些不可见字符全部被移除。原文内容没有变化,只是”隐形的东西”被剔除了。 清除后完全感觉不到任何变化,但”指纹”确实没了。
文件层测试:图片元数据清理
从 AI 图片工具下载了一张 WebP 格式的图,用 /inspect 查看,文件头里嵌着完整的 C2PA 信息,包括生成时间、模型版本、甚至一些处理参数。
清理后 C2PA 段被移除,文件大小从 2.1MB 变成 2.07MB。图片画质无损,但”AI 生成的痕迹”被抹掉了。
B 层测试:统计性文本水印清理(这个地方需要老实说)
这一层是三个里面最”玄学”的。
我拿了一段 AI 写的产品介绍文案跑了一遍 B 层改写。水印确实被抹掉了——因为原文被彻底重写了一遍。
但代价是原文的节奏、语气、用词偏好都被”扁平化”了。就像你把一篇写得还不错的文章,交给另一个水平一般的人去重写——意思还是那个意思,但读起来没那么流畅了。
项目 README 自己也是这么说的:“重写不是重构。” 它改的是措辞,不是结构。原文质量越高,改写后的”降级感”越明显。
我的建议: 对原文质量要求高的话,跳过 B 层,只做 A 层和文件层清理。B 层更适合那些”不需要保留原文风格”的场景。
谁适合用这个工具?
我跑了一圈测试之后,觉得这几类人最需要它:
内容创作者。 用 AI 辅助写作,写完后想清理掉 AI 生成的”痕迹”,保护自己的内容隐私。清理 A 层和文件层就够了,不影响原文质量。
隐私敏感用户。 不希望 AI 厂商通过文件元数据追踪内容来源和去向。这个工具能帮你把”尾巴”剪掉。
技术研究者。 研究 AI 水印机制,了解不同厂商的标记方式——它的 /inspect 功能本身就是一个很好的学习工具。
企业文档管理。 对外发布的文档,如果不小心带着”生成工具:Claude”这样的元数据,可能暴露内部工作流。清理一下再发出,更安全。
那谁不适合用?
想绕过 AI 检测做学术造假的人——项目作者明确反对,我们也反对。对技术完全零基础且不想学 Docker 的人——确实需要一点技术门槛,纯小白用起来会有点吃力。
诚实地说:这个工具不是万能的
有几个限制必须说清楚。
第一,B 层统计性水印没有完美方案。 项目 README 写得挺直白——“没有工具能诚实地认证’这通过了官方检测’。” 翻译过来就是:我只能尽力,但不敢打包票。
第二,PDF 清理需要额外工具。 如果只用 exiftool 清 PDF,会遗留原始元数据字节,文件反而变大。需要配合 qpdf 做结构性重写才能彻底清理。
第三,项目还很新。 当前版本 v0.5.0,总共 96 次提交。功能框架搭得不错,但离”稳定成熟”还有距离。要用在生产环境的话,建议持续关注更新。
第四,作者建议了一个反直觉的操作: 如果要清理 Claude 生成内容的统计水印,最好别用 Claude 来改写——“不要用 Claude 重写 Claude 的文本,否则又打上了新的标记。” 建议用不同模型来做改写。这个细节挺有意思的,说明 AI 水印这个领域的水比我们想象的深。
一个必须讨论的问题:去水印,到底对不对?

写到这里,必须正面回应一个绕不开的问题。
这个工具会不会被用来做坏事?
会的。任何工具都可能被滥用。项目作者在 README 里明确写了:“这个工具用于保护你的隐私,而不是学术造假或伪造’人类原创’声明。”
我的看法是:工具无罪,但使用方式决定了是非。
你用这个工具清理自己 AI 内容的元数据,和保护自己的隐私——这和删除照片的 EXIF 信息没有本质区别。你用自己的账号、花自己的钱生成的 AI 内容,你有权决定它的”归属状态”。
但有些事是不该做的:
- 把 AI 生成的内容冒充为原创论文,用于学术造假
- 用去水印工具伪造内容来源,冒用他人身份
- 规避内容审核,用于生成和传播违规内容
请合法合规使用这个工具。 技术是中立的,但使用技术的人需要有自己的判断。
ICML 2024 有一篇论文论证过,在某些条件下,水印是”理论上不可能被完全去除”的。对任何号称”100% 去水印”的说法保持 skepticism,是健康的。
和同类工具比怎么样?
目前市面没有直接竞品——watermarks-remover 是第一个系统性地覆盖多种 AI 水印的开源工具。
之前如果你想手动清理:
- 用 exiftool 删图片元数据——只覆盖文件层,不管文本水印
- 用 ChatGPT 改写文本——只能处理统计性水印,不涉及 Unicode 和文件层
- 手动查文档属性、手动删除——麻烦且容易遗漏
watermarks-remover 的优势是三层覆盖,一个工具全搞定。劣势是项目还很新,可能有未发现的 bug。
写在最后
watermarks-remover 让我看到了一个有趣的现象:AI 厂商在”追踪生成内容”这件事上,做了比我们想象中多得多的工作。
那些看不见的字符、藏在文件头里的元数据、经过微调的统计分布——这些都在说明,AI 生成内容不是”无主之物”,它是有”标签”的。
这个工具的出现,本质上是一场关于”内容自主权”的博弈。AI 厂商想给你的内容打上标记,用户想把这些标记清除掉。两边都有自己的理由。
我的建议是: 如果你好奇自己的 AI 内容上有什么”标记”,可以用 /inspect 查一下,看看那些看不见的东西。你不一定要清除它们,但至少应该知道它们的存在。
互动话题: 你知道 AI 生成的内容还有这些”隐形水印”吗?你觉得”去水印”这件事是合理的隐私保护,还是灰色地带的操作?评论区聊聊你的看法。
项目信息:
- 项目名称:watermarks-remover
- GitHub:https://github.com/guillaumemeyer/watermarks-remover
- 协议:MIT 开源
- 技术栈:Python 3.10+,可选 Docker 部署
- 支持格式:PNG/JPEG/WebP/SVG/PDF/DOCX/ODT/HTML/Markdown
- 当前版本:v0.5.0
如果觉得这篇文章有用,点个「在看」分享给更多人。 关注善忘技术夹,每周分享真实好用的工具和效率技巧。
关注「善忘技术夹」全媒体矩阵
扫描上方宣传海报二维码,第一时间获取最新技术文章、开源项目与免安装小程序体验。