| name | invoice-reimbursement |
| description | 发票报销助手。用于处理出差报销相关的 PDF 发票,自动提取金额并分类为车票、住宿费、
打车费,并内置差旅补助标准自动计算城市补贴。生成 Excel 报销汇总表。
触发词:发票报销、报销发票、出差报销、整理发票、reimbursement、报销汇总、
帮我报销、发票识别。 |
发票报销助手
功能概述
处理出差报销工作流:解析 PDF 格式的车票、住宿费、打车费发票 → 自动分类提取金额 →
根据城市类别计算差旅补助 → 生成 Excel 报销汇总表。
四板块报销结构
| 板块 | 数据来源 | 自动化 |
|---|
| 车票(机票/高铁/大巴) | PDF 发票 | 自动提取金额 + 分类 |
| 住宿费 | PDF 发票 | 自动提取金额 + 分类 |
| 打车费 | PDF 发票 | 自动提取金额 + 分类 |
| 差旅补助 | 城市 + 天数 | 自动匹配城市等级计算 |
工作流程
第一步:接收用户输入
用户提供:
- 一个或多个 PDF 发票文件(车票、住宿费、打车费相关)
- 可选:出差城市和天数(如果 PDF 中无法读取,用户手动告知)
向用户确认:
- 出差城市(如 "北京")
- 出差天数(如 2.5 天,不满 1 天按 0.5 天算)
- 如果 PDF 文件数量较多,提醒用户确认
第二步:解析 PDF 发票并自动分类
使用 scripts/reimbursement.py 脚本处理所有 PDF:
python scripts/reimbursement.py --pdfs <pdf1> <pdf2> ... --city <城市> --days <天数> --output <输出路径>
脚本完成以下工作:
- 提取文本:使用 pdfplumber 提取 PDF 中的文本
- 识别金额:匹配金额模式(如 "¥XXX.XX"、"合计 XXX.XX" 等)
- 自动分类:根据关键词识别发票类型
- 车票:含 "铁路"、"高铁"、"机票"、"航空"、"客车"、"大巴"、"行程单"、"火车票" 等
- 住宿费:含 "酒店"、"住宿"、"宾馆"、"旅店"、"房费"、"客房" 等
- 打车费:含 "滴滴"、"出租车"、"打车"、"快车"、"专车"、"花小猪"、"T3" 等
- 城市匹配:从 PDF 文本中尝试读取出发/到达城市信息
- 补助计算:根据城市等级和天数,参考
references/city_standards.md 计算差旅补助
第三步:差旅补助计算规则
参考 references/city_standards.md 中的城市分类表:
| 等级 | 城市 | 补助标准 |
|---|
| A类 | 北京市 | 200元/天 |
| B类 | 上海市、广州市、深圳市 | 200元/天 |
| C类 | 省会城市、杭州市、苏州市、宁波市、青岛市、昆山市、厦门市、东莞市、佛山市 | 150元/天 |
| D类 | 其他二线城市 | 150元/天 |
| E类 | 三线城市 | 150元/天 |
计算规则:
- 补助金额 = 对应天数 × 城市日补助标准
- 不满 1 天按 0.5 天计算
- 如果用户同时去了多个城市,按天数分别计算后求和
第四步:生成 Excel 报销汇总表
脚本自动生成 Excel 文件,包含两个 Sheet:
Sheet 1 - 报销汇总:
| 序号 | 类别 | 发票名称/说明 | 金额(元) | 日期 | 备注 |
|---|
| 1 | 车票 | xxx | xxx | xxx | 系统分类 |
| 2 | 住宿费 | xxx | xxx | xxx | 系统分类 |
| ... | ... | ... | ... | ... | ... |
| 小计 | 各分类小计 | | | |
Sheet 2 - 差旅补助:
底部显示合计金额。
第五步:校对与确认
- 展示提取结果给用户确认
- 如果分类错误,用户可手动纠正
- 确认后输出最终 Excel 文件
注意事项
- PDF 质量:扫描件/图片型 PDF 需要先 OCR,脚本会尝试使用 pdfplumber 提取文本,如果遇到图片型 PDF 会提示用户
- 金额识别:优先提取 "合计金额" / "价税合计" 等明确的汇总数字
- 打车的特殊处理:滴滴等网约车发票可能是行程单格式,需要按总金额汇总
- 多城市出差:如果多个城市,请让用户分别说明每个城市的天数
- 不满一天:自动折算为 0.5 天
依赖安装
使用前需安装依赖:
pip install pdfplumber openpyxl jieba