NotebookLM 导出的 PDF,每一页右下角都盖着一个固定角标。这个工具把它抹掉, 其余像素一个不动。
这不是一个在线服务。你下载它,装在自己电脑上,PDF 从头到尾没离开过你的硬盘 —— 程序只监听本机地址,压根没有上传这个动作。这一页只是说明书。
整页是一张图、角标烙在像素里的那种。
上图是示意,不是实际截图。
如果角标是可选中的文字,那它是一个独立的文本对象,用 PDF 编辑器直接删掉就行, 比涂像素干净得多。所以这个工具遇到有文字层的页会主动跳过,不去趟那趟浑水。
不靠内置模板图,所以换字体、换版本、换成别家的角标,一样认得出来。
水印的定义就是「内容在变,它不变」的那部分像素。所以做法是把若干页的右下角叠起来求交集 —— 在几乎每一页的同一个坐标都长得一样的,才算数。
两路投票,先找深色的,找不到再找浅的:
要是找出来的区域超过整页的 0.5%,或者形状不像一行角标(太小、长宽比不对), 一律判为认错了,直接中止不处理。宁可交还给你一个没动过的文件,也不乱涂一气。
127.0.0.1,你的 PDF 不出这台电脑需要电脑上有 Python 3.10 或更新的版本。
有 git 就用这条;没有的话,去 GitHub 页面点 Code → Download ZIP 也一样。
git clone https://github.com/avatartulkun/unmark.git
cd unmark
python3 -m pip install -r requirements.txt
Mac 上双击 启动去水印网页.command 就行,浏览器会自己打开。
也可以用命令行:
python3 server.py
然后把 PDF 拖进页面,等进度跑完,看「处理前 / 处理后」的放大对比,确认没问题再下载。
也可以当成 Python 库直接调用:
from unwatermark import clean_pdf
result = clean_pdf("输入.pdf", "输出.pdf")
print(result.success, result.message)
| 情况 | 说明 |
|---|---|
| 输出文件更大 | 例如 15.9 MB 变成 19.3 MB。因为中间图用 PNG 无损重编码,而原件是 JPEG。 要的是像素不失真,代价就是体积。 |
| 有文字层的页会跳过 | 那种水印多半是能直接删除的文本对象,不该用涂像素的办法处理。 |
| 一次只能处理一个文件 | 暂时还不支持批量导入。 |
| 认不出来就不动手 | 检测不到、或者检测结果不合理,程序会明确告诉你「未处理」,而不是硬涂一块。 |