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

yizhihongxing

让我来详细讲解一下“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日

相关文章

  • python的一些加密方法及python 加密模块

    Python的一些加密方法及Python加密模块 在Python编程语言中,有多种加密方式和方法可以对数据和信息进行加密,保护信息安全。本文将讲解Python中一些常用的加密方法和加密模块。 常用的加密方法 哈希 哈希是将明文数据转换为一串由数字和字母组成的固定长度的代码,也称为摘要。哈希算法是不可逆的,也就是说,无法从哈希值中还原出原始明文数据。Pytho…

    python 2023年5月31日
    00
  • python列表与元组详解实例

    以下是“Python列表与元组详解实例”的完整攻略。 1. 列表和元组的概述 列表和元组都是Python中常用的结构。它们都可以用于存储多元素,但它们之间有些重要的区别。列表是可变的,可以添加、删除和修改元素,而元组是不可变的,一旦创建就不能修改。 2. 列表的实现 2.1 创建列表 我们可以使用方括号[]来创建一个空列表,或者在括号中添加元素来创建一个非空…

    python 2023年5月13日
    00
  • Python实现模拟登录及表单提交的方法

    Python实现模拟登录及表单提交是一种常见的自动化测试方法,可以帮助我们更好地测试网站的功能和稳定性。本文将介绍如何使用Python实现模拟登录及表单提交,并提供两个示例。 1. 使用requests库实现模拟登录 我们可以使用requests库实现模拟登录。以下是一个示例,演示如何使用requests库实现模拟登录: import requests lo…

    python 2023年5月15日
    00
  • 基于Python实现文件大小输出

    下面是“基于Python实现文件大小输出”完整攻略: 1. 需求说明 本文将使用Python实现在控制台输出指定文件大小的功能。具体来说,我们需要实现以下功能: 选择要检测的文件 输出该文件的大小,以字节为单位 将输出的文件大小转换为更易读的格式:KB、MB、GB、TB等,并输出转换后的结果 本文所需的Python版本为Python 3.x。 2. 解决方案…

    python 2023年6月5日
    00
  • Python中requests库的用法详解

    以下是关于Python中requests库的用法详解的攻略: Python中requests库的用法详解 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。以下是Python中requests库的用法详解的攻略: 发送HTTP请求 以下是使用requests库发送HTTP请求的示例: import requests url…

    python 2023年5月14日
    00
  • python实现高斯模糊及原理详解

    Python实现高斯模糊及原理详解 高斯模糊是一种常用的图像处理技术,它可以使图像变得更加平滑,减少噪点和细节。在本文中,我们将介绍高斯模糊的原理,并提供Python实现高斯模糊的代码。 高斯模糊的原理 高斯模糊的原理是基于高斯函数的卷积运算。高斯函数是一种钟形曲线,它可以用来描述一组数据的分布情况。在图像处理中,我们可以将高斯函数应用于图像的像素值,从而实…

    python 2023年5月14日
    00
  • 用python实现简单EXCEL数据统计的实例

    下面我将为您详细讲解如何用Python实现简单Excel数据统计的实例,教程包含以下内容: 环境配置 安装依赖库 读取Excel数据 统计数据并生成结果 将结果写入新的Excel表格 1. 环境配置 首先,您需要安装Python 3.x环境,并配置好相应的环境变量。 2. 安装依赖库 为了能够读写Excel表格,我们需要安装openpyxl库。您可以通过以下…

    python 2023年5月13日
    00
  • Excel 如何以月或年为单位计算员工的任期

    要在 Excel 中以月或年为单位计算员工的任期,可以使用“DATEDIF”函数。以下是 Excel 如何以月或年为单位计算员工的任期的完整攻略: 计算员工的任期 要计算员工的任期,可以使用“DATEDIF”函数。具体步骤如下: 打开 Excel,选择含数据的单元格。 在单元格中输入以下公式:=DATEDIF(start_date,end_date,unit…

    云计算 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部