一个面向个人报销、项目归档和财务凭证整理的本地桌面工具。它可以把发票和支付凭证按地区、类别、年月日归档,支持批量识别、金额汇总、拖拽识别和可配置的 OCR/视觉模型接口。
- 发票和支付凭证分流保存,自动按地区、一级类别、二级类别、日期目录归档。
- 支持单文件识别和批量识别,批量模式可自动分类并统计发票金额。
- 默认优先使用本地 OCR 识别发票日期、支付日期、类别与金额,不完整时再回退到云端视觉模型。
- 集成硅基流动视觉语言模型和 SimpleTex 风格签名接口,适合处理本地 OCR 无法稳定识别的图片或 PDF。
- 默认发票来源目录指向微信文件目录,方便直接从微信接收文件中选取发票。
- 配置文件本地加密保存,API Token、接口密钥和常用目录不会明文落盘。
- 支持拖拽文件识别,常用类别、日期和公务卡标记可记忆上次选择。
- 报销前把微信、邮箱、下载目录里的发票集中整理。
- 按工程项目、地区或月份沉淀发票和支付记录。
- 快速区分加油、住宿、过路费、五金等常见费用类别。
- 批量识别票据金额,提前核对一批报销材料的总额。
.
├── app/
│ ├── api_client.py # OCR/视觉模型接口与识别结果解析
│ ├── config_manager.py # 加密配置读写
│ ├── constants.py # 应用常量与版本号
│ ├── data_models.py # 配置数据模型
│ ├── local_ocr.py # 本地 OCR 和票据规则解析
│ └── gui/ # Tkinter 桌面界面
├── scripts/
│ ├── install_dependencies.sh
│ └── pdf_to_images.py
├── main.py
└── CHANGELOG.md
推荐 Python 3.10 或更高版本。macOS 可直接运行依赖安装脚本:
chmod +x scripts/install_dependencies.sh
./scripts/install_dependencies.sh也可以手动安装 Python 依赖:
python3 -m pip install -r requirements.txt如果本机 Python 没有 tkinter,请先安装支持 Tk 的 Python 版本。macOS Homebrew 用户通常可以安装 python-tk 或使用脚本自动检查。
python3 main.py首次启动会要求设置主密码。之后配置会保存到用户目录下的加密配置文件中。
发票上传来源、支付凭证来源和识别文件默认位置会使用同一个默认目录。应用启动时会优先读取环境变量:
export INVOICE_MANAGER_DEFAULT_SOURCE_DIR="/path/to/your/invoice/files"如果未设置环境变量,应用会在本机微信文件目录下自动探测可用的 msg/file 文件夹。仓库不会保存个人用户名、微信账号目录或本机绝对路径。
你可以在应用的“设置”窗口里分别改成任意常用文件夹。
应用支持三类识别方式:
- 本地 OCR:默认开启。PDF 会优先读取内嵌文字,图片和无文字 PDF 使用 PaddleOCR 轻量中文模型;当本地能提取类型、日期和金额时,不调用云端接口。
- 硅基流动视觉语言模型:适合直接识别图片或由 PDF 转换得到的图片。
- SimpleTex 风格接口:适合已有 App ID、App Secret 和签名接口的场景。
如果本地 OCR 结果不完整,且你配置了云端接口,应用会自动回退到云端识别。设置窗口中可以关闭“优先使用本地 OCR,失败时再用云端”。
默认硅基流动模型会优先使用当前推荐的高性能视觉模型 Qwen/Qwen3.5-397B-A17B。设置窗口的模型下拉框也内置了 Qwen3.6、Qwen3.5、Qwen3-VL 和 Qwen2.5-VL 系列候选。
默认提示词会要求模型返回 JSON,并优先识别:
invoice_datepayment_datecategoryamount
类别默认覆盖加油、住宿、过路费、五金和其他。
python3 -m compileall main.py app scripts当前版本见 CHANGELOG.md。每次功能更新或重要修复都应同步更新 app/constants.py 中的 APP_VERSION 和更新记录。
本项目使用 MIT License,详见 LICENSE。