Go · 项目报告

overflowy/make-look-scanned

Makes PDFs look scanned (CLI or in the browser via WASM)

已完成 打开 GitHub
O
225星标
7Fork
0Issue
AGPL-3.0许可证

分析结果

项目分析

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