读取目录下所有.pdf文件;提取可填充字段到pandas df



我正在编写一个脚本,读取.pdf文件夹并将其可填充字段提取到pandas df。我用下面的代码成功地提取了一个.pdf文件:

import numpy as np
import pandas as pd
import PyPDF2
import glob, os
pwd = os.getcwd()
pdfFileObj = open('pdf_filename', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
fields_dict = pdfReader.getFormTextFields()
series = pd.Series(fields_dict).to_frame()
df = pd.DataFrame(pd.Series(fields_dict)).T

我想构建一个函数,对目录中的所有pdf文件运行此脚本。我的第一个想法是在glob中使用一个函数来收集所有pdf文件。以下是目前为止的内容:


import numpy as np
import pandas as pd
import PyPDF2
import glob, os
pwd = os.getcwd()
def readfiles():
os.chdir(pwd)
pdfs = []
for file in glob.glob("*.pdf"):
print(file)
pdfs.append(file)
pdfFileObj = open(readfiles, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
fields_dict = pdfReader.getFormTextFields()
series = pd.Series(fields_dict).to_frame()
df = pd.DataFrame(pd.Series(fields_dict)).T

不幸的是,这不起作用,因为我不能在pdfFileReader中放入函数。有没有人有更好的建议?谢谢!

我不能评论,新帐户。但是你可以尝试让readFiles函数返回数组pdf。

然后在下面的代码执行中:

listofPDF=readfiles()
arrayofDF=list()
for file in listofPDF:
pdfFileObj = open(file , 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
##execute your code to obtain a single dataframe from a pdf here
fields_dict = pdfReader.getFormTextFields()
series = pd.Series(fields_dict).to_frame()
df = pd.DataFrame(pd.Series(fields_dict)).T
arrayofDF.append(df)

如果代码的第一部分(从单个pdf文件中获取数据帧)工作,您将最终得到一个数据帧列表,每个数据帧对应一个pdf文件。

另外,您可以创建一个像{filename:file, dataframe: df}这样的字典,然后将其附加到您的列表中,以便稍后可以根据文件名恢复数据框。这完全取决于您以后打算如何处理这些数据帧。

最新更新