
这是开源项目 make-look-scanned(Go + MuPDF)的 Python 图形化重写版。
功能
pdf文章盖章还要重复扫描。我们把电子档文档和电子档公章导入软件。生成即可。省掉纸张。
给 PDF 模拟 “老旧扫描件” 效果:灰度、纸张泛黄、失焦模糊、扫描噪点、
边缘暗角、随机倾斜,并以低质量 JPEG 重新打包成 PDF。
提供可视化窗口:选文件、拖滑块调参数、多页实时预览(可翻页浏览每一页的做旧效果)、一键转换。
参数说明(与原版 CLI 对齐)
| 参数 | 默认 | 说明 |
| dpi | 150 | 渲染分辨率 |
| skew | 0.6 | 最大随机倾斜角度 (度),0 关闭 |
| grayscale | 勾选 | Rec.601 灰度化 |
| paper_tone | 0.6 | 暖白纸色强度 0..1 |
| noise | 0.08 | 扫描颗粒噪点 0..1 |
| blur | 0.4 | 高斯模糊 σ |
| edge_shadow | 0.15 | 边缘暗角 0..1 |
| jpeg_quality | 70 | JPEG 压缩质量 (越低扫描感越强) |
任一数值参数为 0 即关闭对应特效(与原版一致)。
确定性
默认种子由 PDF 内容哈希 (FNV-1a 64) 生成:同一文件 + 同一参数 →
每一页的画面内容逐字节完全一致。在界面 “固定种子” 框填任意整数可换一种观感;
填 0 表示自动。
说明:输出 PDF 文件级的二进制 /ID 标识由封装库 (PyMuPDF) 每次随机生成,因此
整个 .pdf 文件字节会略有不同,但这不影响任何阅读器 / 打印显示,画面完全一致。
算法等价性
特效顺序与原版一致:灰度 → 泛黄 → 模糊 → 噪点 → 暗角 → 倾斜。
所有公式逐像素复刻 Go 源码(含纸色 RGB、black_lift、噪声标准差、暗角 12% 带、
倾斜双线性插值 + 越界纸色填充)。PDF 渲染用 PyMuPDF (与 go-fitz 同源 MuPDF)。
注意:因 Go 与 Python 随机数算法不同,本版输出与原版 Go 二进制不逐字节一致,
但本版自身完全确定性,观感等价。