Metadata-Version: 2.4
Name: train-invoice-organizer
Version: 0.1.0
Summary: 自动提取铁路电子发票 ZIP 包中的 PDF，按乘车日期、时间、票价重命名整理
Author-email: Violin True <ncunxi@sina.com>
License: MIT
Project-URL: Homepage, https://gitee.com/chuwanglin/train-invoice-organizer
Project-URL: Repository, https://gitee.com/chuwanglin/train-invoice-organizer
Keywords: train,invoice,railway,pdf,ticket,rename,organizer
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyMuPDF>=1.23.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: build>=0.10; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Dynamic: license-file

# train-invoice-organizer

自动提取铁路电子发票 ZIP 包中的 PDF，按**乘车日期**、**时间**、**票价**重命名整理。

## 功能

- 递归解压嵌套的 ZIP 包（F 文件 → 内部 ZIP → PDF 发票）
- 用 PyMuPDF 从 PDF 中智能提取乘车日期、发车时间和票价
- 自动按 `YYYYMMDD_HHMM_价格.pdf` 格式重命名
- 遇到同名文件自动添加序号后缀
- 支持命令行一键运行，也支持作为 Python 库导入调用

## 安装

```bash
pip install train-invoice-organizer
```

## 使用方式

### 1. 命令行（安装后直接使用）

```bash
# 处理当前目录下的所有 ZIP 文件
train-invoice-organizer

# 指定目录
train-invoice-organizer /path/to/your/zip/files

# 指定输出目录
train-invoice-organizer /path/to/zip/files -o /path/to/output

# 显示详细日志
train-invoice-organizer /path/to/zip/files -v
```

### 2. macOS 原生图形界面（推荐 Mac 用户）

```bash
# 弹出系统原生目录选择框，处理完成后自动打开 Finder
train-invoice-gui
```

### 3. 作为 Python 库导入

```python
from train_invoice_organizer import organize_invoices, extract_ticket_info

# 批量整理整个目录
total = organize_invoices("/path/to/zip/files")
print(f"共提取 {total} 张发票")

# 或单独解析单张 PDF 信息
info = extract_ticket_info("/path/to/single_ticket.pdf")
print(info)  # 例如: 20260807_0845_104
```

## 提取规则

| 字段 | 提取策略 |
|------|---------|
| **乘车日期** | 优先匹配 "日期+时间" 连续出现格式；若 PDF 排版导致分离，则先剔除 "开票日期" 干扰项，再匹配剩余日期 |
| **时间** | 匹配 `HH:MM` 格式 |
| **票价** | 优先匹配 `¥/￥` 后的整数；备用匹配 `(小写)104.00` 格式 |

## 输出示例

```
已命名的火车发票汇总/
├── 20260807_0845_104.pdf
├── 20260808_1430_156.pdf
├── 20260810_0920_89_1.pdf   # 重名时自动加序号
└── 20260810_0920_89_2.pdf
```

## 依赖

- Python >= 3.8
- [PyMuPDF](https://pypi.org/project/PyMuPDF/) (fitz)

## 开源协议

MIT License
