Skip to content

一个用于自动提取PDF发票中金额并汇总的工具。使用PyQt5开发的图形界面应用程序,支持批量处理多个发票文件。

License

Notifications You must be signed in to change notification settings

tonyleecn/fapiao

Repository files navigation

发票金额统计工具

一个用于自动提取PDF发票中金额并汇总的工具。使用PySide6开发的图形界面应用程序,支持批量处理多个发票文件。

界面预览

应用界面截图

功能特点

  • 批量扫描PDF发票文件夹及子文件夹
  • 自动识别并提取发票中的金额信息
  • 汇总统计发票总金额
  • 支持PDF发票格式
  • 自动检测重复发票,并将重复发票移动到临时目录
  • 生成处理失败的发票列表
  • 可选保存提取的原始文本,便于调试
  • 错误日志记录功能

环境要求

  • Python 3.6+
  • PySide6
  • pdfplumber

安装方法

方法一:直接使用可执行文件(推荐)

  1. 发布页面下载最新版本`
  2. 直接双击运行即可使用,无需安装Python环境

方法二:从源代码运行

  1. 确保已安装Python 3.6或更高版本
  2. 克隆或下载本项目代码
  3. 安装依赖库:
    pip install -r requirements.txt
    
  4. 运行程序:
    python fapiao_gui.py
    

使用方法

  1. 打开程序后,点击"浏览..."按钮选择包含PDF发票的文件夹
  2. 根据需要选择以下选项:
    • 保存提取的文本内容:将从PDF中提取的原始文本保存为TXT文件
    • 清理历史文件:在处理前清理之前的日志和输出文件
    • 生成错误日志:记录处理过程中的错误到日志文件
  3. 点击"开始处理"按钮开始扫描和处理发票
  4. 处理完成后,程序将显示:
    • 处理的发票总数
    • 成功识别的发票数量
    • 识别失败的发票数量
    • 重复发票数量
    • 所有发票的总金额
  5. 如果发现重复发票,会自动将其移动到所选文件夹下的tmp_duplicates目录,并生成详细的重复发票列表

构建可执行文件

使用build_exe.bat快速打包(推荐方式)

项目提供了便捷的批处理脚本build_exe.bat,可以一键打包为单个可执行文件:

  1. 确保已安装Nuitka:

    pip install nuitka
    
  2. 双击运行build_exe.bat脚本,等待打包完成

    • 脚本会自动使用SOCKS5代理(127.0.0.1:7890)
    • 自动添加图标和版本信息
    • 打包为单个EXE文件,便于分发
  3. 打包完成后,可执行文件会在当前目录生成

脚本内容说明

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:

  1. 安装PyInstaller:
    pip install pyinstaller
    
  2. 运行以下命令:
    pyinstaller --onefile --windowed --icon=icon.ico --name "发票金额统计工具" fapiao_gui.py
    
  3. 构建完成后,可执行文件位于dist目录

常见问题

Q: 为什么有些发票无法识别金额?
A: 发票格式多样化,程序可能无法识别非标准格式。可以尝试启用"保存提取的文本内容"选项,分析提取的文本内容,以便改进识别算法。

Q: 程序支持哪些类型的发票?
A: 主要支持中国大陆的增值税专用发票、普通发票等常见PDF格式发票。

Q: 如何解决中文路径问题?
A: 程序已针对中文路径做了处理,如果仍有问题,建议将发票放在不含中文字符的路径下处理。

Q: 程序如何检测重复发票?
A: 程序会提取每张发票的发票号码,然后检查是否已存在相同号码的发票。如果发现重复,会自动将该发票移动到tmp_duplicates目录下,并在处理完成后生成一个详细的重复发票列表文件。

开源协议

本项目采用MIT许可证开源。

About

一个用于自动提取PDF发票中金额并汇总的工具。使用PyQt5开发的图形界面应用程序,支持批量处理多个发票文件。

Resources

License

Stars

Watchers

Forks

Packages

No packages published