支持增值税发票 + 铁路电子客票,PDF上传即识别、表单自动填充、批量导入、合并打印、一键导出Excel。开源免费,私有化部署,数据存在本地。
一、财务报销的"三大痛点"
每个月底,财务同事都要面对这些场景:
手动录入 — 一张一张发票对着 PDF 敲数字,发票号、金额、税率、销售方……敲错一个数字就全错。
重复发票 — 同一张发票被不同同事重复提交,财务很难发现,直到对账才发现问题。
打印浪费 — 一张 A4 纸只打一张发票,报销单几十页,打印机墨盒和纸张消耗巨大。
如果你也遇到过以上问题,这个开源发票管理系统值得试试。


二、系统能做什么?
1. PDF 自动识别,3 秒填完一张发票
上传 PDF 发票,系统自动提取:
发票号码、开票日期 购买方 / 销售方名称和税号 合计金额、税额、价税合计 商品明细(名称、规格、数量、单价、税率、税额)
支持两种发票格式:
增值税电子发票(专票 / 普票) 铁路电子客票(12306 电子发票)
铁路票也能自动识别出发站、到达站、车次、座位等级、乘车时间,生成明细行。
2. 批量导入,一次处理几十张
拖拽多个 PDF 到页面,并发解析,结果以表格展示:
每行显示发票号、销售方、价税合计 自动标红重复发票(按 PDF 内容哈希去重) 自动标红校验不通过的发票 支持单条编辑、全部保存、只保存选中
3. 本地软校验,提前发现风险
不调用第三方 API,纯本地规则校验:
发票号码格式(8 位或 20 位数电票) 统一社会信用代码校验位(GB 32100-2015) 金额一致性(价税合计 = 金额 + 税额) 税率白名单(0%、1%、3%、6%、9%、13% 等) 购买方和销售方不能是同一家公司
校验结果实时显示在表单下方,错误标红、警告标黄、通过标绿。
4. 合并打印,省纸省墨
勾选多张发票,选择布局:
1 张 / 页(原尺寸) 2 张 / 页 4 张 / 页 6 张 / 页 
系统自动拼版生成 A4 PDF,下载后直接打印。一次报销 20 张发票,原本 20 页纸,现在 4 页搞定。

5. Excel 导出,报税直接交
一键导出多 Sheet Excel:
基本信息(所有发票汇总) 项目明细(每张发票的商品行) 汇总(总价税合计、总税额、发票总数) 销售明细(按销售方分组统计) 风险清单(所有校验不通过的项)
报税时直接把 Excel 交给会计或导入税务系统。
6. 数据本地存储,安全可控
SQLite 数据库存储,无需额外配置 PDF 文件按内容哈希存盘,重复上传不浪费空间 所有数据存在本地服务器,不上传云端
三、技术架构
部署方式:一台能跑 Python 的电脑即可,5 分钟启动。
四、快速开始
# 1. 克隆代码cd fapiao/backend# 2. 安装依赖pip install -r requirements.txt# 3. 启动后端python main.py# 4. 前端(另开终端)cd ../frontendnpm installnpm run dev访问 http://localhost:5173,即可开始使用。
五、界面预览
发票列表
顶部统计卡片显示发票数量、价税合计、税额合计、风险发票数。表格支持搜索、多选、删除。
发票表单(新建 / 编辑)
左侧表单填写基本信息和商品明细,右侧实时预览 PDF。上传 PDF 自动填充,明细可一键同步到合计金额。
批量导入
拖拽区域支持多文件上传,解析结果以表格展示,每行可编辑,支持批量保存。
六、适用场景
财务审计 — 批量导入发票,自动校验,导出 Excel 对账
报销核查 — 检测重复发票,防止重复报销
税务合规 — 本地软校验,提前发现格式和金额问题
铁路差旅 — 支持 12306 电子客票,自动识别车次和票价
打印归档 — 多张发票合并打印,节省纸张
七、写在最后
这个系统从实际需求出发,解决的是财务工作中"重复、低效、易错"的问题。全部代码开源,没有第三方 API 费用,数据完全本地可控。
如果你也有发票管理的困扰,欢迎试用。有问题或建议,可以在评论区留言。
项目地址: https://gitee.com/michah/fapiao-manager
技术栈: Vue 3 + FastAPI + SQLite + pdfplumber
许可证: MIT(可自由商用和修改)
夜雨聆风