📅  最后修改于: 2023-12-03 15:40:59.036000             🧑  作者: Mango
在本文中,我们将介绍如何使用Python从多个PDF文件中提取数据,并将其保存到单个CSV文件中。
为了使用Python在多个PDF文件之间提取数据,需要安装以下库:
!pip install PyPDF2 pandas tqdm
import os
import pandas as pd
from PyPDF2 import PdfFileReader
from tqdm import tqdm
我们将定义一个函数来处理每个PDF文件并返回数据帧。
def process_pdf(filename):
with open(filename, 'rb') as f:
pdf = PdfFileReader(f)
num_pages = pdf.getNumPages()
data = {'page': [], 'text': []}
for i in range(num_pages):
page = pdf.getPage(i)
text = page.extractText().replace('\n', ' ')
data['page'].append(i)
data['text'].append(text)
df = pd.DataFrame(data)
df['filename'] = os.path.basename(filename)
return df
该函数将输入文件名,并使用PyPDF2库读取PDF文件中的文本。它将提取每个页面的文本,并将其放入数据帧中。最后,它将添加列来跟踪文件名,以便稍后将所有数据帧合并到单个CSV文件中。
我们将定义一个主函数来处理整个目录中的所有PDF文件。
def process_directory(directory):
files = [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.pdf')]
data_frames = []
for f in tqdm(files):
data_frame = process_pdf(f)
data_frames.append(data_frame)
df = pd.concat(data_frames)
output_file = os.path.join(directory, 'output.csv')
df.to_csv(output_file, index=False)
return df
该函数将输入目录,并列举所有PDF文件。然后,它将使用我们刚刚定义的process_pdf函数从每个PDF文件中提取数据。它将所有返回的数据帧合并为单个数据帧,然后将其写入名为“output.csv”的文件中。最后,它返回最终数据帧。
我们将调用过程目录函数,并将目录作为参数传递。程序将处理目录中的所有PDF文件,并将输出保存到一个名为“output.csv”的文件中。并且还会返回整个数据帧。
df = process_directory('pdf_folder')
import os
import pandas as pd
from PyPDF2 import PdfFileReader
from tqdm import tqdm
def process_pdf(filename):
with open(filename, 'rb') as f:
pdf = PdfFileReader(f)
num_pages = pdf.getNumPages()
data = {'page': [], 'text': []}
for i in range(num_pages):
page = pdf.getPage(i)
text = page.extractText().replace('\n', ' ')
data['page'].append(i)
data['text'].append(text)
df = pd.DataFrame(data)
df['filename'] = os.path.basename(filename)
return df
def process_directory(directory):
files = [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.pdf')]
data_frames = []
for f in tqdm(files):
data_frame = process_pdf(f)
data_frames.append(data_frame)
df = pd.concat(data_frames)
output_file = os.path.join(directory, 'output.csv')
df.to_csv(output_file, index=False)
return df
df = process_directory('pdf_folder')
使用Python将多个PDF文件转换为CSV文件是一项有用的任务。我们在本文中学习了如何使用PyPDF2库从PDF文件中提取文本,如何使用Pandas库创建和操作数据帧,如何使用tqdm库在循环中显示进度条,以及如何使用os库在操作系统级别访问文件和路径。我们希望您能在将来的项目中使用这些概念和代码片段。