用途:把一文件夹的手机拍摄收据照片编译成一份 A4 PDF,看起来像复印的报销凭证包。每张收据会被拉直(透视校正、纠偏)、转为黑白“扫描”效果、按统一视觉比例铺在 A4 上、编号,并在可选封面页上汇总。
主要能力:四个子命令,并带强制确认门。scan:拉直 + 扫描化 + OCR 每张照片,生成 manifest.json;review:打印提取的费用表格;confirm:标记用户批准并绑定已审阅数据(digest);pack:生成 A4 PDF(在 confirm 运行前拒绝执行)。
使用方式:先安装 pip install opencv-python-headless pillow pillow-heif pytesseract reportlab numpy,并在 PATH 上安装系统 tesseract-ocr(用 tesseract --version 检查)。工作流:scan → review + confirm(必须用户参与)→ pack。scan 示例:python3 ~/.hermes/skills/productivity/receipt-compiler/scripts/receipt_compiler.py scan <photos_dir> -o <workdir> [--mode bw|photo]。review 后把表格给用户确认,将更正写入 manifest.json,再重跑 review,最后 confirm,然后 pack 生成 PDF 并发送给用户。
适用场景:把收据照片编译成报销 PDF、制作理赔/报销包、拉直并黑白化收据排到 A4。不适用:平板扫描仪扫描,或发票 PDF(用 pdf 技能)。
限制:pack 会因 confirmed 为 false、非布尔确认值或确认后编辑(digest 校验)而硬失败,没有绕过标志;暗/阴影照片由 2/98 百分位拉伸处理,OCR 置信度 < 55 或未提取到金额会标记 needs_review;透视校正失败时回退到全画面小角度纠偏;HEIC 照片需 pillow-heif;多币种分别按币种汇总,不合并总额;封面表格描述截断在 70 字符。布局为 A4 纵向、15 mm 边距、5 mm 间隙,超高收据(宽高比 ≥ 2.2)每行 3 张全高,普通收据每行 2 张,限内容高度 52%(约页面 47%),按单元格缩放,不裁剪不变形,可跨页,30+ 张可正常打包。