我有一个数据框如下,它有500多行,我只显示一个样本。列URL
包含指向网络上PDF的链接。我想打开每个pdf并将pdf的内容复制到新列PDF data
中。据我所知,有些PDF文件可能会很长,在某些情况下,该列中的文本数量可能很大。
例如,
如果是第一行,我想将网址“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文件的文件夹。但我想将pdfs的内容放入一列数据中。此外,我有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)
答案 0 :(得分:2)
我不知道从pdf中提取文本而不先下载它的任何好方法,并找到了类似的this回答。但是,如果使用requests下载文件,则可以使用任意数量的工具来提取文本。例如,PyMuPDF可以很容易地将pdf的文本提取为一个长字符串(docs here)。
为了将提取的文本实际添加到数据框中的新列,您可以执行以下操作:
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))