make-look-scanned 是一个用 Go 编写的 PDF“仿扫描件”生成工具,可通过 CLI 或浏览器端 WebAssembly 使用。它会将 PDF 每一页栅格化为图片,添加倾斜、灰度、暖色纸张、扫描噪点、轻微虚焦、边缘阴影、JPEG 压缩痕迹等效果,然后重新组装为新的纯图片 PDF。默认输出具有确定性:同一输入文件会生成相同结果,也可通过 seed 生成不同但可复现的效果。
适用领域
PDF 处理 / 文档图像处理 / 命令行工具 / WebAssembly / Go 应用 / 办公自动化 / 数字文档仿真
配置难度
中等。普通用户可直接使用 CLI 参数完成转换;开发者构建时需要 Go 和 C 工具链,WebAssembly/离线 HTML 构建还涉及 wasm、PDF.js 和 task,集成到生产系统时还需要重点评估 AGPL-3.0 许可证。
商业价值
该项目适合用于文档处理测试、OCR 数据增强、扫描件视觉模拟和本地化 PDF 处理工具。对需要批量生成仿扫描样本的研发团队较有价值,也可作为内部办公自动化工具的一部分。但由于 AGPL-3.0 许可证限制较强,若要集成进商业闭源产品或 SaaS 服务,需要进行法律合规评估。
01
技术亮点
- 同时支持命令行和浏览器端 WebAssembly 使用。
- 浏览器版本可实现本地处理,避免上传敏感 PDF 到服务器。
- 效果参数丰富,包括 DPI、倾斜、灰度、纸张色调、噪点、模糊、边缘阴影和 JPEG 质量。
- 默认确定性输出,同一 PDF 会生成同样的扫描效果,便于测试和复现。
- 支持 seed 控制随机效果,可生成不同但可复现的版本。
- 支持 TOML preset,可复用扫描效果配置。
- CLI 构建后运行时不需要额外安装 MuPDF。
- 输出结果视觉上接近基础扫描仪生成的图片型 PDF。
02
目标用户
- 需要生成仿扫描 PDF 的个人用户
- 需要批量处理 PDF 外观的开发者
- 办公自动化脚本编写者
- 文档处理 SaaS 或内部工具开发团队
- 希望在浏览器端本地处理 PDF 的前端/全栈开发者
- 需要测试 OCR、扫描件识别或文档处理流程的 QA/算法工程师
03
配置要求
- Go 开发环境。
- C 工具链,原因是 go-fitz/MuPDF 需要 cgo。
- 构建 CLI 时会静态链接 MuPDF,运行时不需要额外安装 MuPDF。
- 浏览器开发模式需要访问 PDF.js CDN。
- WebAssembly 单文件构建需要 task 工具,并会生成约 8 MB 的 HTML 文件。
- preset 配置文件路径为 $XDG_CONFIG_HOME/make-look-scanned/config.toml;如果未设置 XDG_CONFIG_HOME,则使用 ~/.make-look-scanned/config.toml。
- preset 中的配置键使用下划线形式,例如 paper_tone、edge_shadow、jpeg_quality。
- 配置优先级为:内置默认值 → 指定 preset → CLI 显式参数。
04
适用场景
- 将电子 PDF 转换成看起来像打印后扫描的 PDF
- 生成 OCR、文档识别、表单识别系统的测试样本
- 在本地 CLI 中批量处理 PDF 文件
- 在浏览器中离线处理 PDF,无需上传到服务器
- 为演示、测试或视觉效果模拟生成带噪点、倾斜和纸张质感的扫描件
- 通过 preset 配置统一团队内的扫描效果参数
05
部署与配置
- 安装 Go 环境。
- 安装可用的 C 编译工具链,因为项目依赖 go-fitz,并通过 cgo 链接 MuPDF。
- 克隆仓库:git clone https://github.com/overflowy/make-look-scanned.git
- 进入项目目录:cd make-look-scanned
- 构建 CLI:go build -o make-look-scanned .
- 运行示例:./make-look-scanned input.pdf
- 指定输出文件:./make-look-scanned input.pdf -o output.pdf
- 调整效果参数:./make-look-scanned input.pdf --noise 0.4 --skew 2.5 --jpeg-quality 30
- 如需浏览器版本,运行 ./web/build.sh 后在 web 目录启动本地 HTTP 服务:python3 -m http.server 8080。
- 如需构建单文件离线 HTML,运行 task build:web,生成 dist/make-look-scanned.html。
06
风险与注意事项
- 输出 PDF 是纯图片 PDF,原始可选择文本、搜索能力和结构化信息会丢失。
- 处理高页数或高 DPI PDF 时可能占用较多 CPU、内存和磁盘空间。
- AGPL-3.0 许可证对分发和服务集成有较强约束,商业闭源集成需谨慎评估。
- CLI 静态链接 MuPDF,而 MuPDF 也是 AGPL-3.0,分发二进制时需要提供相应源代码。
- 浏览器版本和 CLI 使用不同的 PDF 栅格化方案:浏览器使用 PDF.js,CLI 使用 MuPDF,因此结果视觉接近但字节不完全一致。
- 该工具会降低 PDF 质量,可能不适合需要保留原始清晰度、可搜索文本或可访问性的业务场景。
- 如果用于伪造扫描文件或规避文档审核,可能产生合规或伦理风险。
2026-06-22
第23名
新收录 · github_search