python 从列中打开 PDF URL 并将文本数据加载到新列中



我有一个数据框如下,它有 500+ 行,我只显示一个样本。URL列包含指向 Web 上的 PDF 的链接。我想打开每个pdf并将pdf的内容复制到新的列PDF data中。我知道某些PDF可能很长,在某些情况下,该列中的文本量可能很大。

例如 如果是第一行,我想将 URL "https://www.occ.gov/static/enforcement-actions/ea2018-001.pdf"的内容复制到列PDF data中。

如果是第二行,则PDF data为空。

在第三行的情况下,PDF data将包含 PDF "https://www.occ.gov/static/enforcement-actions/ea2017-104.pdf"的内容

我遇到了这个适用于 PDF 的 URL,但它需要将所有 pdf 下载到一个文件夹中,并且它的输出是一个包含 txt 文件的文件夹。但是我想将pdf的内容放入一列数据中。此外,我有 500+ 行,我一次无法下载 pdf。

import pandas as pd
import numpy as np
sales = [{'account': 'credit cards', 'Jan': '150 jones', 'Feb': '200 .jones', 'URL': 'https://www.occ.gov/static/enforcement-actions/ea2018-001.pdf'},
{'account': '1',  'Jan': 'Jones', 'Feb': '210', 'URL': ''},
{'account': '1',  'Jan': '50',  'Feb': '90',  'URL': 'https://www.occ.gov/static/enforcement-actions/ea2017-104.pdf' }]
df = pd.DataFrame(sales)

我不知道有什么好方法可以在不先下载的情况下从pdf中提取文本,并找到了这个答案。但是,如果使用请求下载文件,则可以使用任意数量的工具来提取文本。例如,PyMuPDF使得将pdf的文本提取为一个长字符串变得非常容易(文档在这里)。

为了将提取的文本实际添加到数据帧中的新列,您可以执行以下操作:

def pdf_text_extractor(url):
# code to download pdf
# code to extract text from pdf
return pdf_text
df.assign(pdf_text = df['URL'].apply(pdf_text_extractor))

最新更新