笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
ShadowAqueduct/watermark-remover:多厂商AI水印清除利器,从Unicode到C2PA的全栈净化
一个用于清除多厂商AI生成内容水印(Unicode、C2PA、元数据)的Python开源工具库。
背景:AI水印的“猫鼠游戏”与真实痛点
随着ChatGPT、Claude、Gemini、Midjourney等AI生成工具的普及,厂商为了保护版权、追踪内容来源,开始在输出中嵌入各种形式的“水印”。这些水印并非传统图片上的可见logo,而是隐藏在文本字符、文件元数据、图像像素甚至C2PA(Coalition for Content Provenance and Authenticity)标准中的数字指纹。
对于普通用户来说,这些水印带来几个实际困扰:
- 文本水印破坏排版与语义:某些AI模型会在输出中插入零宽字符(Zero-Width Characters)或同形异义字(Homoglyphs),这些字符肉眼不可见,但在复制粘贴、文本处理或发布到某些CMS时会导致格式错乱、搜索索引异常,甚至被内容安全系统误判。
- C2PA元数据泄露来源:很多AI工具(如OpenAI的DALL·E 3、Adobe Firefly)会在生成的图片中嵌入C2PA签名,记录“由AI生成”及模型版本、时间戳等信息。如果用户希望匿名发布或二次创作,这些信息会成为隐私隐患。
- 文件级元数据残留:PNG、JPEG、SVG、PDF、DOCX等文件格式中,AI工具会写入自定义的元数据字段(如
prompt、model、seed),这些字段可能包含用户输入的关键词,造成敏感信息泄露。
ShadowAqueduct/watermark-remover正是针对上述痛点,提供了一套统一的、可扩展的Python接口,帮助开发者或高级用户批量清除这些水印,同时保留文件的核心内容与可用性。
项目核心功能与技术架构
1. 多类型水印清除管线
项目采用模块化管线设计,每个水印类型对应一个独立的处理模块,通过统一的PurgeResult返回处理状态。核心模块包括:
- Unicode文本净化:检测并移除零宽空格(
\u200B)、零宽非连接符(\u200C)、零宽连接符(\u200D)、零宽断行符(\uFEFF)等。同时支持同形异义字替换(例如将Cyrillic字母'а'替换为Latin 'a'),需配合--unicode-normalize选项。 - 统计重写钩子(Statistical Rewrite Hooks):这是项目的一大特色。对于无法通过字符映射清除的文本水印(如基于词频或句法特征的隐式水印),项目提供了一套基于统计的改写接口。用户可以注入自定义的改写函数(例如同义词替换、句式变换),通过
--rewrite-hook参数指定Python模块路径。 - C2PA清除:解析PNG、JPEG文件的C2PA chunk(
CAI、C2PA等),移除整个manifest块,并重写文件头以保持格式合法。 - 元数据清理:针对不同格式提供专用清理逻辑:
- PNG:删除
tEXt、zTXt、iTXt中的AI相关键(如prompt、parameters)。 - JPEG:删除EXIF、XMP中的特定标签。
- SVG:移除
<metadata>元素及data-*属性。 - PDF:通过
pikepdf重写对象流,剔除/Metadata引用。 - DOCX:删除
docProps/core.xml和docProps/app.xml中的自定义属性。 - HTML:移除
<meta name="generator">及data-*属性。 - Markdown:清除YAML front-matter中的AI字段。
- PNG:删除
2. 命令行与Python API双接口
项目提供两种使用方式,满足不同场景需求。
命令行安装与使用
bash
安装(推荐使用虚拟环境)
pip install watermark-remover
清除单个文件的所有水印
watermark-remover purge image.png
递归处理目录下所有文件
watermark-remover purge ./docs/ --recursive
仅清除文本中的Unicode水印,不处理文件元数据
watermark-remover purge text.txt --unicode-only
使用自定义统计改写钩子
watermark-remover purge article.md --rewrite-hook my_rewriter.py
输出JSON格式的详细报告
watermark-remover purge image.png --report-json
Python API 示例
python
from watermark_remover import WatermarkRemover, PurgeOptions
初始化清理器
remover = WatermarkRemover()
定义选项
options = PurgeOptions(
unicode_normalize=True,
remove_c2pa=True,
metadata_fields=["prompt", "seed", "model"],
rewrite_hook="my_rewriter" # 可选,指定模块路径
)
执行清理
result = remover.purge("generated_image.png", options)
检查结果
print(result.success) # True
print(result.removed_watermarks) # ['c2pa', 'png_textual_metadata']
print(result.rewritten_text) # 如果应用了文本改写,这里返回新文本
处理内存中的文本
cleaned_text = remover.purge_text("Hello\u200BWorld")
assert cleaned_text == "HelloWorld"
3. 核心亮点
- 多厂商覆盖:内置针对OpenAI、Anthropic、Google、Midjourney、Stability AI等主流厂商水印的特征库,并允许用户通过JSON规则文件扩展。
- 无损处理优先:对于图片和PDF,项目尽可能保留原始像素和排版,仅删除水印相关数据块,避免重新编码导致的质量损失。
- 可审计性:每次清理操作都会生成详细的
PurgeResult,记录移除的水印类型、位置、字节数,方便用户验证。 - 性能优化:使用
lxml处理XML(SVG/HTML),pikepdf处理PDF,Pillow处理图片,均为C扩展,处理速度远超纯Python实现。 - 安全设计:默认不修改原始文件,而是生成
_cleaned后缀的新文件,避免误操作。
适用场景
- 内容创作者与博主:从AI工具生成文章后,需要去除隐藏的Unicode字符,确保在WordPress、Medium等平台正常排版。
- 数据科学家与NLP研究者:清洗从AI模型采集的文本语料,去除零宽字符干扰,保证模型训练数据的纯净性。
- 匿名发布者:对AI生成的图片进行C2PA剥离,防止通过元数据追踪到作者身份。
- 企业内容安全团队:在将AI输出集成到内部知识库前,批量清除元数据,防止提示词泄露。
- 文档管理系统管理员:批量清理上传的DOCX/PDF文件,确保合规性。
与同类项目的对比
| 特性 | watermark-remover | exiftool | c2pa-toolkit | text-unidecode |
|---|---|---|---|---|
| 支持Unicode零宽字符清除 | ✅ 原生支持 | ❌ | ❌ | ✅ 仅字符映射 |
| 支持C2PA清除 | ✅ 自动检测并移除 | ❌ | ✅ 但仅限C2PA | ❌ |
| 支持PDF元数据重写 | ✅ 通过pikepdf | ✅ 有限支持 | ❌ | ❌ |
| 支持统计改写钩子 | ✅ 插件机制 | ❌ | ❌ | ❌ |
| 批量处理目录 | ✅ 递归 | ✅ | ❌ | ✅ 文本文件 |
| 输出审计报告 | ✅ JSON/文本 | ✅ 文本 | ✅ 部分 | ❌ |
| 多厂商特征库 | ✅ 内置+可扩展 | ❌ | ❌ | ❌ |
exiftool是元数据处理的瑞士军刀,但它不处理Unicode文本水印,也不理解C2PA的语义结构。c2pa-toolkit是官方C2PA参考实现,功能强大但仅限C2PA格式,且依赖Rust环境。text-unidecode仅做字符转写,无法处理零宽字符和统计水印。
watermark-remover的独特优势在于:统一处理文本、图片、文档三类载体,且提供可扩展的改写钩子,这是其他工具无法比拟的。
局限性与注意事项
- 统计改写钩子需要自定义:内置的改写逻辑仅提供基础的同义词替换模板,针对特定模型(如GPT-4的隐式水印)需要用户自行训练或编写规则。
- C2PA清除可能违反服务条款:某些AI厂商明确禁止移除水印,请务必遵守当地法律和平台协议。
- 对图像像素级水印无效:如果AI在图片像素中嵌入隐式水印(如通过傅里叶变换),本工具无法检测或清除,需依赖专用算法。
- PDF重写可能导致格式微调:使用pikepdf重写对象流时,极少数复杂PDF可能出现字体或布局细微变化。
项目活跃度与社区
项目在GitHub上已获得829颗星,Python实现,依赖较少(Pillow、pikepdf、lxml),安装简单。目前维护活跃,Issue响应较快。适合有Python基础的中高级开发者使用,也适合作为安全研究或内容治理的工具链组件。
总结
ShadowAqueduct/watermark-remover并非一个“破解AI版权保护”的灰色工具,而是一个内容治理与隐私保护的实用库。它解决了AI生成内容在真实世界落地时的格式污染、元数据泄露和溯源追踪问题。对于需要批量处理AI输出的开发者、内容平台运营者以及注重隐私的个人用户,这是一个值得纳入工具箱的高效解决方案。