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 的文本 | - |
如果要查找目录及其子目录中的所有 PDF,可以使用os.listdir和glob,请参阅递归子文件夹搜索并返回列表 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)
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |