使用Python自动批量提取增值税发票信息并导出为Excel文件

要批量提取增值税发票的关键信息并将其导出为 Excel 文件,可以使用 Python 脚本结合 pdfplumber(用于解析 PDF 内容)、pandas(用于处理数据并导出 Excel)等库来实现。以下是实现这一目标的详细步骤。

1. 环境设置

首先,需要安装所需的 Python 库:

pip install pdfplumber pandas openpyxl

2. 编写 Python 脚本

import pdfplumber
import pandas as pd
import os

# 要处理的PDF文件夹路径
pdf_folder = 'path_to_your_pdf_folder'
# 输出Excel文件路径
output_excel = 'output.xlsx'

# 定义存储提取信息的列表
data = []

# 遍历文件夹中的所有PDF文件
for filename in os.listdir(pdf_folder):
    if filename.endswith('.pdf'):
        pdf_path = os.path.join(pdf_folder, filename)
        
        with pdfplumber.open(pdf_path) as pdf:
            # 假设发票信息在第一页,解析第一页内容
            first_page = pdf.pages[0]
            text = first_page.extract_text()
            
            # 提取关键信息,下面是一些假设的示例正则表达式
            invoice_number = find_value_by_keyword(text, "发票号码")
            invoice_date = find_value_by_keyword(text, "开票日期")
            buyer_name = find_value_by_keyword(text, "购买方名称")
            buyer_tax_id = find_value_by_keyword(text, "购买方纳税人识别号")
            service_name = find_value_by_keyword(text, "货物或应税劳务、服务名称")
            quantity = find_value_by_keyword(text, "数量")
            unit_price = find_value_by_keyword(text, "单价")
            amount = find_value_by_keyword(text, "金额")
            tax_rate = find_value_by_keyword(text, "税率")
            tax_amount = find_value_by_keyword(text, "税额")
            total_amount = find_value_by_keyword(text, "价税合计")
            seller_name = find_value_by_keyword(text, "销售方名称")
            seller_tax_id = find_value_by_keyword(text, "销售方纳税人识别号")

            # 将提取的信息添加到列表中
            data.append({
                "PDF文件名": filename,
                "发票号码": invoice_number,
                "开票日期": invoice_date,
                "购买方名称": buyer_name,
                "购买方纳税人识别号": buyer_tax_id,
                "服务名称": service_name,
                "数量": quantity,
                "单价": unit_price,
                "金额": amount,
                "税率": tax_rate,
                "税额": tax_amount,
                "价税合计": total_amount,
                "销售方名称": seller_name,
                "销售方纳税人识别号": seller_tax_id
            })

# 将数据导出到Excel
df = pd.DataFrame(data)
df.to_excel(output_excel, index=False)

print(f"提取完成,结果已保存到 {output_excel}")

def find_value_by_keyword(text, keyword):
    # 定义一个简单的提取函数,实际需要根据发票格式调整
    lines = text.split('\n')
    for i, line in enumerate(lines):
        if keyword in line:
            return line.replace(keyword, '').strip()
    return ""

3. 脚本说明

  • PDF文件名: 使用 os.listdir 遍历指定文件夹中的所有 PDF 文件。
  • PDF解析: 使用 pdfplumber 打开并读取 PDF 内容,假设发票内容位于第一页。
  • 关键字提取: 使用 find_value_by_keyword 函数从文本中提取关键信息,该函数可以根据实际情况调整正则表达式。
  • 数据存储: 将提取的信息存储在列表中,最后将列表转换为 DataFrame 并导出为 Excel 文件。

4. 注意事项

  • 发票格式: 此示例假设发票的格式是一致的,如果格式有变动,可能需要调整关键字提取的逻辑。
  • 正则表达式: 如果发票内容较复杂,可以使用正则表达式进行更精准的匹配。

5. 运行脚本

将脚本保存为 .py 文件,修改 pdf_folder 路径为你的 PDF 文件夹路径,运行脚本后,提取的信息将会被导出为一个 Excel 文件。

好的,这里是一个Python示例代码,使用百度AI增值税发票识别API,批量识别增值税发票导出Excel文件。 首先,需要安装百度AI的Python SDK,可以通过以下命令进行安装: ``` pip install baidu-aip ``` 接着,在百度AI控制台中创建一个增值税发票识别应用,并获取应用的API Key和Secret Key。 然后,可以使用以下Python代码实现批量识别增值税发票导出Excel文件: ```python from aip import AipOcr import os import xlwt # 设置API信息 APP_ID = 'your_app_id' API_KEY = 'your_api_key' SECRET_KEY = 'your_secret_key' # 初始化AipOcr对象 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) # 设置Excel文件名和表格头部 excel_name = 'invoices.xls' header = ['发票代码', '发票号码', '开票日期', '购方名称', '购方税号', '金额', '税额', '价税合计'] # 创建Excel文件 workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('invoices') for col, value in enumerate(header): worksheet.write(0, col, value) # 设置文件夹路径和文件扩展名 folder_path = 'invoices' file_ext = '.jpg' # 遍历文件夹中所有图片文件,并识别增值税发票信息 for i, filename in enumerate(os.listdir(folder_path)): if filename.endswith(file_ext): file_path = os.path.join(folder_path, filename) with open(file_path, 'rb') as f: image = f.read() result = client.vatInvoice(image) if 'words_result' in result: data = result['words_result'] row = worksheet.row(i + 1) for j, key in enumerate(header): row.write(j, data[key]) else: print('Error:', result['error_msg']) # 保存Excel文件 workbook.save(excel_name) print('Excel file saved:', excel_name) ``` 在上述代码中,需要将`your_app_id`、`your_api_key`和`your_secret_key`替换成自己的API信息,`invoices`替换为存放增值税发票图片的文件夹路径,`.jpg`替换为增值税发票图片的文件扩展名。 执行完上述代码后,将会在当前目录下生成一个名为`invoices.xls`的Excel文件,包含了所有增值税发票的识别结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码伐木匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值