按 日期-销方-金额-号码 规范批量重命名发票文件,默认干跑、冲突不覆盖、结果可追溯
invoice-batch-renameSKILL.md 为准。> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。
# 发票文件批量命名
「发票(1).pdf」「invoice_20260908_003.pdf」「未命名.pdf」——等到年底归档时,这些名字等于没名字。
本包把文件改成 `20260908-广州某某物资-22600.00-00012345.pdf` 这种能排序、能搜、能一眼看出内容的名字。
**默认只打印改名清单,一个文件都不动。** 确认后才用 `--apply` 执行。目标名字已存在时跳过并记进异常表,绝不覆盖——发票是证据,覆盖是不可逆的。
## 输出四件套(每次运行必有)
| 文件 | 内容 |
|---|---|
| `rename_清单.csv` | 原文件名 → 新文件名 → 状态(已改 / 跳过 / 冲突 / 无法命名) |
| `rename_异常表.csv` | 跳过的文件与原因 |
| `rename_校验表.csv` | 命名模板、字段来源、时间、人工复核声明 |
| `fin-log.jsonl` | 处理日志(追加) |
## 环境准备
```bash
PY="<python 3.8+ 路径>" # 纯标准库
"$PY" <skill目录>/scripts/batch_rename.py <发票目录> [参数]
```
## 用法
### 先看会改成什么样(默认)
```bash
batch_rename.py ./发票目录
```
真实输出:
```
方案:./发票目录 | 文件数=8 | 模式=干跑
发票(1).pdf -> 20260908-广州某某物资-22600.00-00012345.pdf
invoice_20260912_003.pdf -> 20260912-深圳市乙服务-22600.00-00099987.pdf
未命名.pdf -> 跳过:文件名里没有可识别信息,且 PDF 无文本层
```
### 确认后执行
```bash
batch_rename.py ./发票目录 --apply
```
### 自定义命名模板
```bash
batch_rename.py ./发票目录 --template "{号码}-{金额}-{销方}"
```
可用占位:`{日期}{销方}{购方}{金额}{号码}`。
## 字段怎么来
| 来源 | 方式 |
|---|---|
| PDF 有文本层 | 调同包 `pdf_extract` 抽字段(号码/日期/销方/金额) |
| 图片(jpg/png) | 从文件名解析:`2026-09-08_某某_22600.pdf` 这类,解析不出就跳过 |
| 指定了明细表 | `--from-table 发票明细.xlsx --map 文件名,号码` 用明细补字段 |
**抽不到就不改名**:宁可留在列表「无法命名」,也不用一个凑出来的名字。凑出来的名字在归档时比乱名更危险——它会让你以为这个名字是对的。
## 安全与边界(拒绝权)
- **默认不改名**:不加 `--apply` 一个字节都不动
- **冲突绝不覆盖**:目标文件已存在 → 跳过,记入异常表
- **不碰其他文件**:只重命名,不移动、不删除、不改内容
- **字段缺失不硬凑**:标「无法命名」而不是用默认值填坑
## 人工复核(必读)
- 改名前的清单请自己扫一遍,尤其是销方名是否截断了(名称过长会被截断到 12 字)
- 建议先在小范围文件夹试跑,确认命名符合归档规范再全量
- 发票原件是税务凭证,改名后请连同原目录一起归档,别只留新名
## 相邻路线转交
| 用户要做的事 | 转交给 |
|---|---|
| 从 PDF 里抽字段 | `invoice-pdf-extract` |
| 改名后查重 | `invoice-duplicate-check` |
| 发票合规预检 | `invoice-rule-check` |
## 可直接复制的说法
```text
把这个目录里的发票文件按「日期-销方-金额-号码」批量重命名。先给我看清单,别动文件。
字段能从 PDF 文本层抽的就用,抽不到就跳过别硬凑。
如果新名字已经有文件存在,跳过它并告诉我,别覆盖。
```
## 做完怎么算完成
- [ ] 清单里每一行的「新名字」都符合归档规范
- [ ] 「无法命名」的文件已人工处理,没有遗漏
- [ ] 没有发生覆盖(冲突项全部跳过)
- [ ] 原始文件备份或原目录仍可追溯
---
本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。
版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。
允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账
进销项发票台账,按月/客户/税率汇总,导出 CSV
从带文本层的数电票 PDF 抽取号码/日期/金额/税率/购销方
必填字段、金额勾稽、备注栏与清单发票规则校验
按所属期与开票期双口径汇总,红字与原票关联,跨期/未勾选/税率异常单列,输出申报前待确认清单
多银行 CSV/Excel 流水归一化成统一字段与方向标记
流水与账面按金额+日期窗口匹配,输出已勾对/单边与余额调节表
从业务单据表按科目映射批量生成凭证草稿,借贷平衡预检
40+ 指标(偿债/营运/盈利/成长)+ 多期趋势与同业占位
增值税/附加/个税/印花税/所得税预缴,附公式与政策依据
金额大写、含税不含税互算、价税分离、尾差分摊、百分比反算
借贷平衡、科目级次、辅助核算必填、红字方向、异常金额预警
SKILL.md 为准。