周末翻周刊的工具那一栏,看到一个东西:把 PDF 拖进网页,几秒钟,出来一份看起来像用纸扫过的文件——有纸张的纹路,有一点点歪斜,还有影印机特有的那种灰。
我盯着它看了很久。事务所里天天在跟「扫描件」打交道:有些单位只收扫描件,有些旧档案要统一外观,有些文件在电子档和纸之间转来转去,转到后来没人分得清哪一份是最早的。
我用一份自己打的文件试了。效果比我预想的好,好到有点不舒服——它让那份文件看起来就像我曾在影印机上放了一张纸。
然后我意识到,这份东西现在如果寄出去,对方大概会以为我扫描了一张真的纸。
问题就在这里。工具本身没有恶意,它只是让外观变旧。可是文书这件事,外观和内容从来不是分开的两件事。一份文件「看起来像扫描件」,已经在暗示「它来自一张真实的纸」;而那张纸到底存不存在,是另一回事。
前辈讲过一句话,我一直记着:判断一件事能不能做,别问自己有没有坏心,要问别人会不会因此误会。
这跟上次改别人代码那次有点像。那回是改了一个数字,这回事改的是一份文件的样子——工具本身都不带立场,界线是后来自己划的。
所以这篇我想把它写清楚:这东西怎么用,以及什么场合不能用。
这个工具是什么
它叫 make-look-scanned。做的事情很单纯:把 PDF 的每一页渲染成图片,加上纸张色调、轻微倾斜、扫描噪点、边缘阴影和一点 JPEG 压缩的痕迹,再拼回一个新的 PDF。
有一个细节很重要:出来的文件没有文字层。不能搜索,不能复制,和真正的扫描件一样。这也是它和「把 Word 另存为 PDF」最根本的区别。
它有两种用法,网页版和命令行版。我用的网页版,因为不用装任何东西。
怎么用
网页版:打开 overflowy.github.io/make-look-scanned,把 PDF 拖进去,调几个滑块,下载。
值得调的就四个:倾斜角度、纸张色调、噪点强度、JPEG 质量。其余保持默认就好。我一开始把噪点拉太高,看起来像传真机坏了,反而假。
命令行版,适合要批量处理的人。它用 Go 写,要自己编译:
go build -o make-look-scanned .
make-look-scanned in.pdf
make-look-scanned in.pdf -o out.pdf --noise 0.4 --skew 2.5 --jpeg-quality 30
不加 -o 的话,输出文件叫 in.scanned.pdf。另外它是确定性的:同一个文件每次生成的结果完全一样,不会每次都不一样。
什么时候可以用
- 需要一份不可编辑、不可复制的归档副本,比如对外发送的定稿,不希望对方直接复制文字。
- 做演示或教学材料,需要「扫描件」的观感。
- 测试文档识别、OCR 流程时,拿来造测试样本。
这三件事的共同点是:那张纸存不存在,不重要。
什么时候不能用
- 让人以为你手上有一份纸质原件。
- 交给机关、法院、客户,冒充「已签署原件的扫描」。
- 任何需要证明文件来源的场合。
界线只有一句话:这份文件的「纸」存在吗?不存在,就不要让它看起来存在。
误会一旦发生,解释权就不在你手上了。
今天学到的
- 扫描件的外观,和文件是否真的被扫描过,是两件事。能改的只有前者,而别人看的是后者。
- 文书一旦流出去,「看起来像原件」就会替制作者做出一层推定,而推定的后果不由制作者控制。
- 判断风险别问动机,问效果:别人会不会因此对真实性产生误解。
- 好用的工具不需要坏心思也能被用错,所以写清界线比藏起来有用。
说点什么