Python提取PDF发票信息保存Excel文件并制作EXE程序的全过程

让我来详细讲解一下“Python提取PDF发票信息保存Excel文件并制作EXE程序的全过程”的完整实例教程。

1. 安装Python及相关库

首先,我们需要安装Python及相关的库,这里我们使用Python 3.x版本,推荐使用Anaconda作为Python的集成开发环境。需要安装的相关库主要有以下几个:

  • PyPDF2:用于读取PDF文件;
  • openpyxl:用于读写Excel文件;
  • pyinstaller:用于打包Python程序为可执行文件;

你可以在命令行使用以下命令来安装这些库:

conda install PyPDF2 openpyxl pyinstaller

或者使用pip:

pip install PyPDF2 openpyxl pyinstaller

2. 读取PDF文件并提取发票信息

接下来,我们需要读取PDF文件并提取其中的发票信息。以下是一个示例代码:

import PyPDF2

pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)

for page_num in range(pdf_reader.numPages):
    page = pdf_reader.getPage(page_num)
    text = page.extractText()
    # 提取发票信息
    # ...

这个代码片段中,我们首先打开PDF文件,然后使用PyPDF2库中的PdfFileReader类来读取PDF文件。接着,我们使用循环遍历PDF中的每一页,并提取每一页中的文本,用于接下来的发票信息提取。

对于如何提取发票信息,这取决于PDF文件中的发票信息的格式。以下是一个示例代码,用于提取发票号码、日期和总金额信息:

import re

pattern = re.compile(r'发票号码:(\d+)\n开票日期:(\d{4}-\d{2}-\d{2})\n金额合计:(¥\d+\.\d+)')

matches = pattern.findall(text)

for match in matches:
    invoice_number = match[0]
    invoice_date = match[1]
    invoice_total = match[2]
    # 将发票信息保存
    # ...

这个示例代码中,我们用正则表达式匹配PDF中的发票号码、日期和总金额信息,并将其保存到变量中。

3. 写入Excel文件

接下来,我们需要将提取到的发票信息保存到Excel文件中。以下是一个示例代码:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

ws.append(['发票号码', '开票日期', '总金额'])

for invoice_info in all_invoice_info:
    ws.append(list(invoice_info.values()))

wb.save('invoices.xlsx')

这个示例代码中,我们使用openpyxl库中的Workbook类创建一个新的Excel文件,并在该Excel文件的第一个工作表中创建一个表头。接着,我们遍历所有的发票信息,并将每张发票的信息写入到Excel文件中。

4. 打包Python程序为可执行文件

最后,我们需要将Python程序打包为可执行文件。以下是一个示例代码:

import PyInstaller.__main__

PyInstaller.__main__.run([
    'extract_invoice.py',
    '--onefile',
    '--name=extract_invoice'
])

这个示例代码中,我们使用PyInstaller库中的run()函数将Python程序打包为一个可执行文件。一些常用的选项包括:

  • --onefile:生成一个单一的可执行文件;
  • --name:指定可执行文件的名称;

示例说明

  1. 示例1:读取并提取发票信息

假设我们有一个名为example.pdf的PDF文件,其中包含多张发票,我们需要遍历并提取每张发票的发票号码、日期和总金额信息。以下是一个示例代码:

import PyPDF2
import re

pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)

all_invoice_info = []

for page_num in range(pdf_reader.numPages):
    page = pdf_reader.getPage(page_num)
    text = page.extractText()

    pattern = re.compile(r'发票号码:(\d+)\n开票日期:(\d{4}-\d{2}-\d{2})\n金额合计:(¥\d+\.\d+)')
    matches = pattern.findall(text)

    for match in matches:
        invoice_number = match[0]
        invoice_date = match[1]
        invoice_total = match[2]
        invoice_info = {'invoice_number': invoice_number, 'invoice_date': invoice_date, 'invoice_total': invoice_total}
        all_invoice_info.append(invoice_info)

print(all_invoice_info)

在执行上述代码后,我们可以得到所有发票的发票号码、日期和总金额信息。

  1. 示例2:将发票信息写入Excel文件并打包为可执行文件

假设我们已经将所有发票的信息保存到了一个名为all_invoice_info的列表中,现在我们需要将这些信息写入Excel文件,并将Python程序打包为可执行文件。以下是一个示例代码:

from openpyxl import Workbook
import PyInstaller.__main__

wb = Workbook()
ws = wb.active

ws.append(['发票号码', '开票日期', '总金额'])

for invoice_info in all_invoice_info:
    ws.append(list(invoice_info.values()))

wb.save('invoices.xlsx')

PyInstaller.__main__.run([
    'extract_invoice.py',
    '--onefile',
    '--name=extract_invoice'
])

在执行上述代码后,我们将会得到一个名为invoices.xlsx的Excel文件,并且Python程序也会被打包为一个可执行文件extract_invoice.exe。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python提取PDF发票信息保存Excel文件并制作EXE程序的全过程 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • pip报错“ValueError: invalid literal for int() with base 10: ‘3.8’”怎么处理?

    当使用 pip 命令时,可能会遇到 “SyntaxError: invalid syntax” 错误。这个错误通常是由于命令行中输入的语法错误导致的。以下是详细讲解 pip 报错 “SyntaxError: invalid syntax” 的原因与解决办法,包含两条实例说明: 原因 “SyntaxError: invalid syntax” 错误通常是以下原…

    python 2023年5月4日
    00
  • Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例

    Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例是一个非常实用的小工具,可以帮助用户快速获取淘宝商品美食信息。本攻略将介绍Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能的完整攻略,包括环境搭建、模拟浏览器、数据获取、数据处理和示例。 步骤1:环境搭建 在Python中,我们需要安装Selenium模块…

    python 2023年5月15日
    00
  • python实现FTP文件传输的方法(服务器端和客户端)

    Python可以通过ftplib模块和socket模块实现FTP文件传输的方法。FTPlib模块可以通过FTP协议实现文件上传、下载等操作,socket模块可以实现FTP协议的底层通信。下面分别介绍客户端和服务器端的实现方法。 客户端 客户端的实现步骤如下: 创建FTP对象; 连接FTP服务器; 进行登录认证; 进行文件上传或下载; 关闭FTP连接。 示例1…

    python 2023年6月3日
    00
  • python中 * 的用法详解

    下面是关于“Python中 * 的用法详解”的完整攻略。 一、* 的作为乘法运算符 在Python中,* 可以作为乘法运算符使用,用来进行两个数的乘法运算。示例代码如下: a = 3 b = 4 c = a * b # c的值为12 二、* 的作为可变参数 在Python函数定义过程中,可以使用*来代表可变参数。表示函数可以接受任意多个参数。 def fun…

    python 2023年5月31日
    00
  • Python实现多线程/多进程的TCP服务器

    为了实现Python多线程/多进程的TCP服务器,我们需要采用以下步骤: 1. 创建TCP Server 首先我们需要创建一个TCP服务器。可以使用Python的标准库socket来进行创建。我们需要指定服务器的IP地址和端口号,然后进行绑定和监听。 import socket # TCP服务器IP和端口号配置 TCP_IP = ‘localhost’ TC…

    python 2023年5月18日
    00
  • Python使用defaultdict解决字典默认值

    当我们使用Python自带的字典对象时,如果使用中遇到一个还未在字典中被定义的键,那么Python会抛出一个KeyError的错误。为了避免这种情况,我们需要在使用前判断键是否存在,或者事先为键设置默认值。 Python标准库中有一个collections模块,其中的defaultdict类给我们提供了设置默认值的一种简单、优雅的方法。接下来,我们将进一步解…

    python 2023年5月13日
    00
  • Excel 如何把十进制数字转换为二进制/八进制/六进制数字,或反之亦然

    在 Excel 中,可以使用函数将十进制数字转换为二进制、八进制或十六进制数字,或反之亦然。以下是完整攻略: 方法一:函数将十进制数字转换为二进制、八进制或十六进制数字 在 Excel 中,可以使用以下函数将十进制数字转换为二进制、八进制或十六进制数字: 将十进制数字转换为二进制数字:使用“DEC2BIN”函数。 将十进制数字转换为八进制数字:使用“DEC2…

    云计算 2023年5月10日
    00
  • Python实现的朴素贝叶斯分类器示例

    以下是关于“Python实现的朴素贝叶斯分类器示例”的完整攻略: 简介 朴素贝叶斯分类器是一种常用的机器学习算法,用于分类和预测。在本教程中,我们将介绍如何使用Python实现一个朴素贝叶斯分类器,包括数据预处理、特征提取、模型训练和预测等步骤。 原理 朴素贝叶斯分类器是一种基于贝叶斯定理的分类器,它假设特征之间相互独立,从而简化了计算。在本教程中,我们将使…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部