接收一个文件夹路径,自动处理该文件夹下的加班车费报销:
/前的路径段)
文件夹内需包含(文件名匹配规则):
| 文件 | 匹配规则 |
|---|---|
| --- | --- |
| 报销申请表 | 含"报销申请"的 .xlsx |
| 花名册 | 含"花名册"的 .xlsx |
| 结算表模板 | 含"结算"的 .xlsx(作为输出模板,不覆盖) |
| 凭证文件夹 | 名称 = 报销申请表 D 列第一个 / 前的路径段 |
| 列 | 内容 |
|---|---|
| --- | --- |
| A | 实例标题(含"XXX发起的报销申请") |
| B | 报销月份 |
| C | 报销总金额 |
| E | 报销类型(含"加班"才处理) |
| D | 报销凭证路径(第一个/前为文件夹名) |
| J | 申请人(含工号,格式"姓名(工号)") |
> 注意:部分记录J列为空,姓名会从A列标题"XXX发起的报销申请"中提取
| 列 | 内容 |
|---|---|
| --- | --- |
| A | 工号 |
| B | 姓名 |
| F | 身份证 |
数据从第4行起(第3行为表头)。
| # | 规则 |
|---|---|
| --- | --- |
| 1 | 发票抬头须为「北京外企德科人力资源服务上海有限公司」,税号 913100007776072078 |
| 2 | 网约车(滴滴等):需同时有发票和行程单,且金额一致 |
| 3 | 出租车等:仅需发票 |
| 4 | 打车时间须在 21:00 及之后 |
| 5 | 行程单车型不得含:优享型、专车、商务车、豪华、六座 |
| 6 | 行程单上下车须同城市(不可跨城) |
| 7 | 发票合计金额 ≥ 系统申请金额 |
脚本自动读取结算表模板的表头行,根据列名匹配写入位置。支持的列名:
| 列名关键字 | 填写内容 |
|---|---|
| --- | --- |
| 工号 | 员工工号 |
| 姓名 | 员工姓名 |
| 身份证 | 身份证号 |
| 报销类型 | 加班打车 |
| 申请金额 | 系统申请金额 |
| 报销金额 | 凭证合计金额 |
| 月份 | 如 202603 |
| 电子流金额 | 同申请金额 |
| 发票金额 | 同报销金额 |
| 备注 | 异常原因(有则填,无则空) |
> 注意:列位置自动匹配,不依赖固定列号,保持模板原有格式不变
> 注意:填写内容报销金额列数值需要严格按照报销凭证文件解析内容填写,不能自己发挥
# PDF 解析
python3 -m pip install pdfplumber --break-system-packages
# 图片 OCR(PaddleOCR,首次运行自动下载模型 ~80MB)
python3 -m pip install paddlepaddle paddleocr --break-system-packages
# 若 OCR 效果差(纸质发票),可额外装 tesseract(需安装中文语言包)
brew install tesseract
python3 -m pip install pytesseract --break-system-packages
python3 ~/.openclaw/workspace/skills/overtime-expense/overtime_expense.py \
"/path/to/input/folder" \
"/path/to/output/settlement.xlsx"
参数1:包含所有输入文件的文件夹路径
参数2:输出结算表文件路径(建议与模板文件同名或新建)
共 1 个版本