乐于分享
好东西不私藏

上传PDF发票自动识别,3秒自动填充表单:无需paddleocr识别 速度更快

上传PDF发票自动识别,3秒自动填充表单:无需paddleocr识别 速度更快

支持增值税发票 + 铁路电子客票,PDF上传即识别、表单自动填充、批量导入、合并打印、一键导出Excel。开源免费,私有化部署,数据存在本地。


一、财务报销的"三大痛点"

每个月底,财务同事都要面对这些场景:

  1. 手动录入 — 一张一张发票对着 PDF 敲数字,发票号、金额、税率、销售方……敲错一个数字就全错。

  2. 重复发票 — 同一张发票被不同同事重复提交,财务很难发现,直到对账才发现问题。

  3. 打印浪费 — 一张 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 文件按内容哈希存盘,重复上传不浪费空间
  • 所有数据存在本地服务器,不上传云端

三、技术架构

层级
技术
说明
前端
Vue 3 + Element Plus
响应式界面,表格、表单、拖拽上传
后端
FastAPI + SQLAlchemy
Python 异步框架,自动生成 API 文档
数据库
SQLite
零配置,单文件存储
PDF 解析
pdfplumber
提取文字和表格
PDF 合并
PyMuPDF (fitz)
n-up 拼版打印
Excel 导出
pandas + openpyxl
多 Sheet 导出

部署方式:一台能跑 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(可自由商用和修改)