开源项目速写
把发票报销这件小事,交给一个本地 AI 助手
读目录、识别发票、生成报销表、合并附件,再用台账避免重复报销;安装和使用也足够轻。
昨天,我们把一个很小、但很实用的项目开源了:Finance Reimbursement Assistant,一个本地优先的财务报销助手。项目地址:https://github.com/fuxiaoyan1/finance-reimbursement-assistant。
它解决的不是宏大的“财务智能化”,而是很多人每个月都会遇到的麻烦:发票散在一个文件夹里,有 PDF、有图片;要逐张看金额、日期、销售方、购买方;还要填报销表、合并附件,最后再担心下次会不会重复报同一张。
这个项目的思路很直接:你选一个发票目录,它读取 PDF、JPG、PNG、TIFF、WEBP 等文件,优先使用 PDF 文字层和本地 OCR 识别发票信息,也可以按配置调用 LLM 做辅助判断。处理完成后,它会生成一个 Excel 报销工作簿,里面包含“报销单”和“发票清单”两个工作表;同时把原始发票整理成一个合并 PDF,方便作为附件提交。
操作流程图
不是“上传给云端处理”,而是在本地选目录、处理、生成结果、登记台账。
1准备发票目录
把 PDF、JPG、PNG、TIFF、WEBP 等发票文件放到同一个文件夹。
↓
2启动本地页面
运行 web_app.py,打开 http://127.0.0.1:5055。
↓
3选择目录并处理
点击“发票报销”→“选择目录”→“处理并登记”。
↓
4查看结果文件
页面展示报销表、发票清单、合并 PDF、凭证数量和金额。
↓
5后续增量处理
同一目录再放新发票,台账会跳过旧凭证,只处理新增文件。
我比较看重的是它的“台账”设计。每个发票目录下会维护一个 .invoice_agent_ledger.json,已经登记过的凭证不会在下一次处理中重复进入报销。也就是说,同一个目录后续只要继续丢新发票进去,再跑一次,它会自动跳过旧文件,只处理新增部分。
它也提供了一个本地 Web 页面:启动 web_app.py 后,在浏览器里选择目录、点击处理,就能看到本月批次、凭证数量、计入张数、报销金额、报销表入口和合并 PDF 入口。对不想每次敲命令的人来说,这一步会舒服很多。
边界要说清楚:当然,它不是财务、税务、审计或法律意见。PDF 文字层、OCR 和模型识别都可能出错,金额、税额、发票号码、分类和重复判断都必须人工复核。它更适合做“整理助手”和“初筛助手”,不是替代财务制度和人工确认。
这个仓库也刻意保持了清晰的数据边界:公开代码里不包含真实发票、企业数据、人员信息或历史运行结果;是否调用模型服务,也由使用者自己配置决定。默认方向是本地优先,能不用外部服务就不用外部服务。
怎么安装和跑起来?
项目建议使用 Python 3.11 或更新版本。最基础的安装方式是进入仓库目录,创建虚拟环境,然后安装 requirements.txt 里的依赖:
如果要识别扫描件或图片发票,需要额外安装 Tesseract OCR。macOS 可以用 brew install tesseract 和 brew install tesseract-lang。没有 OCR 时,工具仍能处理带文字层的 PDF,但图片识别能力会下降。
启动 Web 页面也很简单:运行 python3 web_app.py,然后打开 http://127.0.0.1:5055;如果想换端口,可以用 PORT=5056 python3 web_app.py。
安装流程图
面向第一次试用:先装 Python 依赖,图片/扫描件识别再补 OCR。
1进入项目目录
cd finance-reimbursement-assistant。
↓
2创建虚拟环境
python3 -m venv .venv。
↓
3激活环境
source .venv/bin/activate。
↓
4安装依赖
pip install -r requirements.txt。
↓
5可选安装 OCR
macOS 可用 brew install tesseract 和 brew install tesseract-lang。
项目地址:https://github.com/fuxiaoyan1/finance-reimbursement-assistant
如果你也烦过整理发票、填表、合并附件这套流程,可以试试看。它不大,但很像我理解中的 AI 工具:不是先喊口号,而是先把一个真实的小麻烦做轻一点。
一句话:它不是替你做财务判断,而是把“找发票、看字段、填表、合并附件、避免重复”这条琐碎链路先整理顺。
夜雨聆风