在法国把 CAF 房补材料做成可复查的本地流水
去年帮人整理 CAF(Caisse d’allocations familiales)房补材料,场景很具体:Debian 12 上一台旧笔记本,Quarto 1.4 加 Python 3.11,处理两三年里攒下的 PDF——租房合同、quittance de loyer、attestation de loyer、银行流水,一共 180 多个文件、约 400MB。现象是每次补件都靠翻文件夹和回忆,CAF 那边一改要求,之前整理的全乱,还出现过同一份 quittance 被当成两个月提交的情况。
我的做法不是做归档,而是做一条能重跑的本地流水。目录先固定成三层:
data/raw/ 原始 PDF,只读,文件名不动
data/meta/ 一份 files.csv,手填类型和日期
out/ 生成物,可随时删掉重建
files.csv 只有四列,够用:
file,type,period_start,period_end
2023-09_quittance.pdf,quittance,2023-09-01,2023-09-30
2023-10_quittance.pdf,quittance,2023-10-01,2023-10-31
bail_2022.pdf,bail,2022-07-01,2023-06-30
然后用一个 Python 脚本做三件事:校验每个 raw 文件在 meta 里都有记录、检查 quittance 的月份有没有重叠或断档、按 CAF 常见补件顺序生成一份合并 PDF。合并用 qpdf,比 PyPDF2 稳:
qpdf --empty --pages $(awk -F, 'NR>1{print "data/raw/"$1}' data/meta/files.csv) -- out/dossier.pdf
机制上没什么玄的:把「文件是什么」和「文件本身」分开。PDF 不可变,元数据可改,出错时只改 CSV 再重跑,不用重新命名或移动任何原始文件。代价是前期要手填 CSV,180 个文件大概花了两小时;但之后每次补件只动几行。
失效的地方也清楚。第一,quittance 不是每月都有,CAF 接受手写收据时,月份校验会误报,得在 CSV 里加一列 allow_gap 手动放过。第二,扫描件没有文字层,按内容自动分类完全不可靠,所以类型只能手填,我没找到省事的办法。第三,qpdf 合并大文件时内存会涨,400MB 还行,超过 1GB 建议分批。我自己踩过的坑是把 bail 和 quittance 混在一个目录里按文件名排序,结果 2022 年的合同被排到 2023 年 10 月后面,补件时被要求重交。
现在这套东西还留在那台笔记本上,每次 CAF 改要求,我只需要问一句:是改 CSV 的列,还是改生成脚本?你们在法国处理 CAF 或 préfecture 材料时,是保留原始文件名还是重命名成统一格式?重命名之后怎么防止重复提交?
0 条评论
还没有评论,写下第一条。