用途:从对账单 PDF 的文本层确定性地抽取交易表格行,输出 CSV 或 Excel,并用对账单自身印出的期初余额、期末余额、逐行余额和汇总框做算术验证,证明抽取完整无误。适用于银行、信用卡、券商对账单、发票和价目表;需要字段级抽取(供应商、金额、到期日)时改用 financial-parser,需要分类和账务核对时把 CSV 交给 bookkeeping-close。
主要能力:先检查文本层,若无文本层则以退出码 3 与 NO TEXT LAYER 结束;支持自动判断小数符号(点/逗号)和日期顺序(mdy/dmy),信用卡按消费为正、还款为负处理;输出含页码与 y 坐标以便溯源,并生成元数据、未成行的表格行记录和低置信度队列。prove.py 验证期初+发生额=期末、逐行余额链、页间连续性、借贷与汇总框、行数、跨页重复及数字格式。退出 0 输出 PROVEN,否则 NOT PROVEN 并给出定位报告。
使用方式:先安装 pip install pdfplumber openpyxl(openpyxl 仅 --xlsx 需要),扫描件可选 ocrmypdf + tesseract。运行 python scripts/extract_statement.py statement.pdf --out out/stmt --xlsx,可加 --account-type bank|card、--decimal auto|dot|comma、--date-order auto|mdy|dmy;再运行 python scripts/prove.py out/stmt.csv [--opening X --closing Y --stated-count N]。列带定位可用 --dump-words 查看词坐标,再以 --bands 与 --band-pages 覆盖指定页。
限制:不负责分类与账务核对;扫描件须先 OCR;衍生期初余额或存在数字格式冲突时不算证明;视觉读数仅为最后手段且须标记 source=visual。缺失事实:许可、收费与具体平台支持暂未提供。