当前位置: 首页 > news >正文

使用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 文件。

http://www.lryc.cn/news/413443.html

相关文章:

  • vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法
  • 最佳HR软件指南:11款高效管理工具
  • 家长为孩子出国留学择校的四个步骤
  • 数据挖掘可以挖掘什么类型的模式?
  • JAVA中的隐式参数this
  • ThreadLocal 使用和详解避坑
  • Python中使用类方法的返回值在其他方法中继续调用,return self进行链式调用
  • 基于IOT架构的数据采集监控平台!
  • 初见scikit-learn之基础教程
  • 基于STM32的嵌入式深度学习系统教程
  • hive udf去掉map中的一个或者多个key
  • 模型量化技术综述:揭示大型语言模型压缩的前沿技术
  • 一文掌握Prompt:万能框架+优化技巧+常用指标
  • Vue 常用组件间通信方式
  • NineData云原生智能数据管理平台新功能发布|2024年7月版
  • 验收测试:确保软件符合业务需求和合同要求
  • Qt | QChartView+QDateTimeAxis(日期和时间数据图表)+QPieSeries(饼图)
  • 用闲置的阿里云服务器使用 NPS 实现内网穿透
  • 一款免费开源绿色免安装的透明锁屏工具
  • 程序员保持健康的 10 个技巧
  • Java并发迷宫:同步的魔法与死锁的诅咒
  • CoderGuide
  • 链式二叉树
  • PHP高校迎新系统-计算机毕业设计源码08468
  • 泛微开发修炼之旅--41Ecology基于触发器实现增量数据同步(人员、部门、岗位、人员关系表、人岗关系表)
  • FVM安装及配置
  • [Git][认识Git]详细讲解
  • Win11系统Docker部署Blazor程序
  • C语言自定义类型结构体与位段超详解
  • JS中关于预编译的【关键知识点】总结