Install
openclaw skills install @seairteng/pdf-invoice-statopenclaw skills install @seairteng/pdf-invoice-stat基于 pdfplumber 的纯本地提取方案,支持增值税电子发票(普通发票)和火车票(铁路电子客票),输出格式化 Excel。
| 特性 | 说明 |
|---|---|
| 票据类型 | 增值税电子发票(普通发票)+ 铁路电子客票(火车票) |
| 提取字段 | 发票号码、日期、购买方、销售方、税号、项目名称、金额、税率、税额、价税合计 |
| 输出格式 | Excel(15列,冻结首行,会计格式) |
| 本地运行 | 纯 Python + pdfplumber,无外部 API |
| 多税率处理 | 多税率发票税率留空 |
| 免税/不征税 | 税额=0,税率列显示对应文字 |
| 水印页兜底 | 支持水印遮挡场景的发票号/日期/税号兜底提取 |
| 火车票 | 自动识别,金额=0,税率留空,项目名称=火车票 |
clawhub install pdf-vat-invoice-extractor
python3 invoice_extractor.py <PDF路径> [输出Excel路径]
<PDF路径>:必填,合并PDF文件路径[输出Excel路径]:选填,默认在同目录下生成 <原文件名>_发票统计.xlsx# 示例1:指定输出路径
python3 invoice_extractor.py /path/to/invoices.pdf /path/to/output.xlsx
# 示例2:使用默认输出路径(PDF同目录)
python3 invoice_extractor.py /path/to/invoices.pdf
| 情形 | 填写内容 |
|---|---|
| 单税率(如3%、6%、13%) | 对应百分比 |
| 仅含"不征税"文字 | 不征税 |
| 仅含"免税"文字 | 免税 |
| 含多个不同税率 | 留空 |
| 情形 | 填写内容 |
|---|---|
| 免税/不征税 | 0 |
| 含税额 | 实际税额 |
pip3 install pdfplumber openpyxl
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 日期为空 | 水印页日期格式特殊 | 检查PDF水印样式,更新normalize_date兜底正则 |
| 税号为空 | 水印遮挡标签 | 检查zone扫描逻辑是否有新变体 |
| 项目名称为空 | **误输入 | 检查parse_star_word双星处理逻辑 |
| 金额为0但非火车票 | 合汁行提取失败 | 检查金额正则匹配逻辑 |