一个用于自动提取PDF发票中金额并汇总的工具。使用PySide6开发的图形界面应用程序,支持批量处理多个发票文件。
- 批量扫描PDF发票文件夹及子文件夹
- 自动识别并提取发票中的金额信息
- 汇总统计发票总金额
- 支持PDF发票格式
- 自动检测重复发票,并将重复发票移动到临时目录
- 生成处理失败的发票列表
- 可选保存提取的原始文本,便于调试
- 错误日志记录功能
- Python 3.6+
- PySide6
- pdfplumber
- 从发布页面下载最新版本`
- 直接双击运行即可使用,无需安装Python环境
- 确保已安装Python 3.6或更高版本
- 克隆或下载本项目代码
- 安装依赖库:
pip install -r requirements.txt - 运行程序:
python fapiao_gui.py
- 打开程序后,点击"浏览..."按钮选择包含PDF发票的文件夹
- 根据需要选择以下选项:
- 保存提取的文本内容:将从PDF中提取的原始文本保存为TXT文件
- 清理历史文件:在处理前清理之前的日志和输出文件
- 生成错误日志:记录处理过程中的错误到日志文件
- 点击"开始处理"按钮开始扫描和处理发票
- 处理完成后,程序将显示:
- 处理的发票总数
- 成功识别的发票数量
- 识别失败的发票数量
- 重复发票数量
- 所有发票的总金额
- 如果发现重复发票,会自动将其移动到所选文件夹下的
tmp_duplicates目录,并生成详细的重复发票列表
项目提供了便捷的批处理脚本build_exe.bat,可以一键打包为单个可执行文件:
-
确保已安装Nuitka:
pip install nuitka -
双击运行
build_exe.bat脚本,等待打包完成- 脚本会自动使用SOCKS5代理(127.0.0.1:7890)
- 自动添加图标和版本信息
- 打包为单个EXE文件,便于分发
-
打包完成后,可执行文件会在当前目录生成
build_exe.bat脚本使用Nuitka将Python代码打包为单个可执行文件,主要功能:
@echo off
REM 设置UTF-8代码页
chcp 65001
REM 设置代理
set http_proxy=socks5://127.0.0.1:7890
set https_proxy=socks5://127.0.0.1:7890
REM 使用Nuitka打包
python.exe -m nuitka --standalone --onefile --enable-plugin=pyside6 --windows-console-mode=disable ...如果需要修改代理设置或其他参数,可以直接编辑此脚本。
如果您想自己构建可执行文件,也可以使用PyInstaller:
- 安装PyInstaller:
pip install pyinstaller - 运行以下命令:
pyinstaller --onefile --windowed --icon=icon.ico --name "发票金额统计工具" fapiao_gui.py - 构建完成后,可执行文件位于
dist目录
Q: 为什么有些发票无法识别金额?
A: 发票格式多样化,程序可能无法识别非标准格式。可以尝试启用"保存提取的文本内容"选项,分析提取的文本内容,以便改进识别算法。
Q: 程序支持哪些类型的发票?
A: 主要支持中国大陆的增值税专用发票、普通发票等常见PDF格式发票。
Q: 如何解决中文路径问题?
A: 程序已针对中文路径做了处理,如果仍有问题,建议将发票放在不含中文字符的路径下处理。
Q: 程序如何检测重复发票?
A: 程序会提取每张发票的发票号码,然后检查是否已存在相同号码的发票。如果发现重复,会自动将该发票移动到tmp_duplicates目录下,并在处理完成后生成一个详细的重复发票列表文件。
本项目采用MIT许可证开源。