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

时间:2018-02-12 19:08:09

标签: python pandas pdf dataframe

我有一个数据框如下,它有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)

1 个答案:

答案 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))