用途:把手机拍摄的纸质文档照片(合同、盖章证书、收据、表单、手写笔记)处理成扫描仪风格的 A4 PDF;另有一个分支处理尚无签名的数字文档(docx/PDF),使其看起来像手写签署。
主要能力:脚本负责执行,代理负责两处判断——按内容而非文件名确定页序,以及整份文档校验。流程为:矫正(photo_to_scan.py --raw)→ 按内容排序并识别彩色纸张 → 增强(noteshrink,白纸批量用 -g,彩纸单独处理并先做白平衡)→ 合成 PDF(assemble_pdf.py)→ 生成联系表并逐页核对(make_contact_sheet.py,强制步骤)。
使用方式:依赖 pdftoppm(poppler)与 uvx noteshrink;脚本为 uv run 单文件脚本(PEP 723),首次运行自动解析 OpenCV/PIL/img2pdf。矫正命令:uv run <skill>/scripts/photo_to_scan.py --raw --out-dir work --prefix page photo1.jpg ...;白纸增强:uvx noteshrink -w -g -K -q -b ns -c "true" 按最终页序传入文件名;彩纸先运行不带 --raw 的 photo_to_scan.py 做白平衡,再用 -b nc 增强;合成:uv run <skill>/scripts/assemble_pdf.py --out scanned.pdf 按最终页序传入 PNG;校验:uv run <skill>/scripts/make_contact_sheet.py scanned.pdf --out contact.png。
适用场景:已签署或盖章的纸质文档翻拍归档;需要替换既有扫描 PDF 中某页时,保留逐页增强 PNG,替换后重跑合成与校验。
限制与注意:文件名顺序不可信(批量导出时间戳常相同),必须按内容排序;彩色页混入 -g 批次会污染全局调色板;彩纸未做白平衡会导致墨色偏蓝紫、印章偏暗红;zsh 下变量不做分词,需显式传文件名并检查输出;EXIF 方向由脚本处理,但上下颠倒需在排序阶段发现;[FULLFRAME-fallback] 表示未检测到纸张轮廓,需重拍或接受整帧。数字签名合成分支的细节见 references/digital-signature-synthesis.md,资料未提供其具体步骤。