读取用户指定的报销文件夹,获取所有文件列表。
对文件名进行清洗,移除数字编号、下划线、括号等内容。
数据清洗规则:
| 清洗项 | 操作 | 示例 |
|---|---|---|
| -------- | ------ | ------ |
| 数字编号 | 移除开头数字 | 020219_维修费 → 维修费 |
| 下划线 | 移除 | 维修费_北京 → 维修费 |
| 括号内容 | 移除括号及内容 | 维修费(说明) → 维修费 |
从文件名中识别并提取:
使用 pymupdf 读取PDF账单,提取起点和终点信息。
操作方式:
import fitz # pymupdf
doc = fitz.open(pdf_path)
for page in doc:
text = page.get_text()
# 从text中提取起点、终点
doc.close()
行程提取规则:
日期 起点-终点,金额元示例(从滴滴行程单提取):
起点:亦庄|北京城建·海梓府-北门
终点:北京市大兴区北京大兴国际机场3F国内出发
简化后:亦庄-大兴机场
使用 pymupdf 读取住宿水单或住宿清单,提取酒店名称、入住日期、退房日期和金额信息。
操作方式:
import fitz # pymupdf
doc = fitz.open(pdf_path)
for page in doc:
text = page.get_text()
# 从text中提取酒店名称、入住日期、退房日期、金额
doc.close()
住宿费提取规则:
入住日期-退房日期 城市住宿X天,金额入住日期-退房日期 城市,金额;入住日期-退房日期 XX城市住宿X天,金额;合计:总金额提取示例:
从住宿水单提取:
- 酒店名称:湛江海滨宾馆
- 入住日期:3月4日
- 退房日期:3月6日
- 住宿天数:2天(3月6日 - 3月4日)
- 住宿金额:677.92元
- 提取城市:湛江(从"湛江海滨宾馆"中提取)
- 格式化后(单城市):3月4日-6日 湛江住宿2天,677.92元
多城市住宿示例:
3月4日-6日 湛江住宿2天,677.92元;3月6日-8日 广州住宿2天,856.50元;合计:1534.42元
城市提取规则:
使用 pymupdf 读取高铁票文件,提取出发日期、出发站、到达站、座次和票价信息。
操作方式:
import fitz # pymupdf
doc = fitz.open(pdf_path)
for page in doc:
text = page.get_text()
# 从text中提取出发日期、出发站、到达站、座次、票价
doc.close()
高铁票提取规则:
日期 出发站-到达站高铁票座次,金额日期 出发站-到达站高铁票座次,金额;日期 出发站-到达站高铁票座次,金额;合计:总金额提取示例:
从高铁票PDF提取:
- 出发日期:3月4日
- 出发站:湛江站
- 到达站:广州南站
- 座次:二等座
- 票价:165.00元
- 格式化后:3月4日 湛江-广州南高铁票二等座,165元
多张高铁票:
3月4日 湛江-广州南高铁票二等座,165元;3月6日 广州南-武汉高铁票二等座,463.50元;合计:628.5元
座次说明:
联网查询携程获取Y舱全价,使用脚本计算折扣率。
强制要求:必须在携程查询国航/南航/东航的Y舱全价
查询步骤(携程):
https://flights.ctrip.com/online/list/oneway-{出发城市代码}-{到达城市代码}?depdate={日期}&cabin=y计算步骤:
票面价 = 实际支付 - 机建费(50) - 燃油费(120或60)
折扣率 = 票面价 / Y舱全价
折扣显示 = round(折扣率 * 10, 1)折
示例:
补助标准:
| 城市 | 每日补助 |
|---|---|
| ------ | ---------- |
| 广州、深圳、上海 | 80元/天 |
| 其他城市 | 60元/天 |
计算方式:
识别同一笔费用的重复票据,综合对比日期、行程、金额,保留最完整记录。
打车费去重规则:
租车费去重规则:
示例:
根据使用需求,提供两种输出格式选项:
格式1:标准格式(默认) - 单行紧凑格式
```
费用类别:日期 行程,金额;日期 行程,金额;合计:总金额
```
格式要点:
日期 行程,金额元金额(X.X折)日期范围,X天,合计:XXX元格式2:Markdown 表格格式(可选) - 表格化展示
```
| 费用类别 | 日期 | 行程 | 金额 |
|---------|------|------|------|
| 打车费 | 3月4日 | 湛江机场-酒店 | 109元 |
| 打车费 | 3月5日 | 环保局-餐厅 | 13.7元 |
| 打车费小计 | - | - | 122.7元 |
| 飞机票 | 3月4日 | 南京-湛江 | 1059.78元(6.9折) |
| 飞机票小计 | - | - | 1059.78元 |
```
打车费:3月4日 湛江机场-酒店,109元;3月5日 环保局-餐厅,13.7元;合计:122.7元
高铁票:3月4日 湛江-广州南高铁票二等座,165元;3月6日 广州南-武汉高铁票二等座,463.5元;合计:628.5元
飞机票:3月4日 南京-湛江,1059.78元(6.9折);合计:1059.78元
住宿费:3月4日-6日 湛江住宿2天,677.92元;合计:677.92元
出差补助:3月4日-6日,3天,合计:180元
---
总计报销金额:2040.4元
| 费用类别 | 日期 | 行程 | 金额 |
|---------|------|------|------|
| 打车费 | 3月4日 | 湛江机场-酒店 | 109元 |
| 打车费 | 3月5日 | 环保局-餐厅 | 13.7元 |
| **打车费小计** | - | - | **122.7元** |
| 高铁票 | 3月4日 | 湛江-广州南高铁票二等座 | 165元 |
| 高铁票 | 3月6日 | 广州南-武汉高铁票二等座 | 463.5元 |
| **高铁票小计** | - | - | **628.5元** |
| 飞机票 | 3月4日 | 南京-湛江 | 1059.78元(6.9折) |
| **飞机票小计** | - | - | **1059.78元** |
| 住宿费 | 3月4日-6日 | 湛江住宿2天 | 677.92元 |
| **住宿费小计** | - | - | **677.92元** |
| 出差补助 | 3月4日-6日 | 湛江(3天) | 180元 |
| **出差补助小计** | - | - | **180元** |
| **总计** | - | - | **2040.4元** |
python scripts/discount_calculator.py --actual 1059.78 --construction 50 --fuel 10 --full 15301059.78元(6.5折)入住日期-退房日期 城市住宿X天,金额3月4日-6日 湛江住宿2天,677.92元3月4日-6日 湛江住宿2天,677.92元;3月6日-8日 广州住宿2天,856.50元;合计:1534.42元日期 出发站-到达站高铁票座次,金额3月4日 湛江-广州南高铁票二等座,165元;3月6日 广州南-武汉高铁票二等座,463.5元;合计:628.5元入住日期-退房日期 城市住宿X天,金额PDF读取(打车费行程):
PDF读取(住宿费信息):
入住日期-退房日期 城市住宿X天,金额PDF读取(高铁票信息):
机票Y舱查询(携程):
折扣率计算:
python scripts/discount_calculator.py --actual <实际支付> --construction <机建费> --fuel <燃油费> --full <全价>共 2 个版本