如何使用python从文件夹中的pdf中提取文本并将其保存在数据框中?

AHK*_*AHK 0 python pdf pdf-conversion dataframe apache-tika

我有很多文件夹,每个文件夹都有几个 pdf 文件(也有其他文件类型,如 .xlsx 或 .doc)。我的目标是提取每个文件夹的pdf文本并创建一个数据框,其中每条记录都是“文件夹名称”,每列以字符串形式表示该文件夹中每个pdf文件的文本内容。

我设法从一个带有包的 pdf 文件中提取文本tika(代码如下)。但无法进行循环来迭代文件夹或其他文件夹中的其他 pdf,从而构建结构化数据框。

# import parser object from tike 
from tika import parser   
  
# opening pdf file 
parsed_pdf = parser.from_file("ducument_1.pdf") 
  
# saving content of pdf 
# you can also bring text only, by parsed_pdf['text']  
# parsed_pdf['content'] returns string  
data = parsed_pdf['content']  
  
# Printing of content  
print(data) 
  
# <class 'str'> 
print(type(data))
Run Code Online (Sandbox Code Playgroud)

所需的输出应如下所示:

文件夹名称 pdf1 pdf2
17534 pdf1 的文本 pdf 2 的文本
63546 pdf1 的文本 pdf1 的文本
26374 pdf1 的文本 -

Gag*_*arr 5

如果要查找目录及其子目录中的所有 PDF,可以使用os.listdirglob,请参阅递归子文件夹搜索并返回列表 python 中的文件。我采用了稍长的形式,以便初学者更容易了解发生的情况

然后,对于每个文件,调用 Apache Tika,并保存到 Pandas DataFrame 中的下一行

#!/usr/bin/python3

import os, glob
from tika import parser 
from pandas import DataFrame

# What file extension to find, and where to look from
ext = "*.pdf"
PATH = "."

# Find all the files with that extension
files = []
for dirpath, dirnames, filenames in os.walk(PATH):
    files += glob.glob(os.path.join(dirpath, ext))

# Create a Pandas Dataframe to hold the filenames and the text
df = DataFrame(columns=("filename","text"))

# Process each file in turn, parsing with Tika and storing in the dataframe
for idx, filename in enumerate(files):
   data = parser.from_file(filename)
   text = data["content"]
   df.loc[idx] = [filename, text]

# For debugging, print what we found
print(df)
Run Code Online (Sandbox Code Playgroud)