pdfplumber批量提取PDF重点内容并保存到csv数据表

同一个文件夹中保存了1000多份PDF文档,需要从每份PDF文档中提取关键的信息,将每一条信息存入csv表格作为一个单元格内容,同一份PDF文档中的多条信息生成一行数据,保存为1000多行固定格式的数据。
解决思路:
1、利用pdfplumber模块来实现对PDF文件中的文字和表格进行提取,将提取出来的内容写入一份csv表格中,每一份PDF文件生成一行数据。
2、PDF文件中的文字使用正值表达式进行筛选。
3、PDF文件中的表格直接提取表格内容,再分列填充为csv表格的新列。
4、设置好csv表格的表头信息,每份PDF文件关键信息生成一个列表,将列表写入csv表格的行。
5、遍历PDF文档所在文件夹中的每一个PDF,按上述方法提取信息。
难点:
1、每份PDF文档虽然目录相同,但是内容存在差异,总页数不相等。无法直接指定提取内容在第几页。
2、每份PDF文档中存在多份表格,而且同一表头的表格在不同PDF文档中的行数不尽相同,有的行数多有的行数少,导致页数不一致。有的表格跨页。
3、避免中间报错导致生成的数据尚未保存,所以采取逐条数据写入csv表格,即使中间报错也不必重新开始、节省时间。
使用的库如下:

import pdfplumber
import re
import os
import numpy as np
import sys
import csv
import time,datetime

读取所有PDF文件名称,设置csv表格表头:

path1="D:\PDF文件" #定义PDF数据存放的文件夹
path2="D:\PDF文件输出" #定义解析数据存放的文件夹
tempfilename = "PDF报告"
name_list=os.listdir(path1) #用os库获取该文件夹下的PDF文件名称
#print(name_list)

X = '解析结果'           
def create_csv(X,csv_head):
    path = str(path2+"\\"+tempfilename+"(%s).csv" % (X))#同目录下的新文件名                        
    with open(path,'w',newline = '',encoding='utf-8_sig') as f:
        csv_write = csv.writer(f)        
        csv_write.writerow(csv_head)
    
csv_head = ["公司名称","数据日期","发货日期","数量",'商品名称1','商品1解释','商品名称2','商品2解释','商品名称3','商品3解释',\
            "发货状态","统一代码","批号","日期","金额(万元)","实收(万元)",'收货人','住所']#表头
create_csv(X,csv_head)

def write_csv(X,data_row):
    path = str(path2+"\\"+tempfilename+"(%s).csv" % (X))#                        
    with open(path,mode='a',newline = '',encoding='utf-8_sig') as f:
        csv_write = csv.writer(f)        
        csv_write.writerow(data_row)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值