使用python中的tabulizer循环遍历pdf文件

时间:2017-06-09 18:20:04

标签: python pdf extraction tabula

我很难获得一段代码。我想循环遍历文件夹中的pdf文件,提取tabula包认为表是什么,将这些表提取到数据帧,并将特定pdf中的所有表写入一个csv文件。

我看了this post(和其他几个人),但我仍然遇到问题。似乎脚本循环遍历文件,提取一些表,但它似乎不会迭代文件,我无法将其写入csv文件中的所有数据帧。该脚本只是将最后一个写入csv。

这是我到目前为止所拥有的。任何帮助将不胜感激,具体来说,如何正确循环文件并将所有表从一个pdf写入一个csv文件。我很困难......

pdf_folder = 'C:\\PDF extract\\pdf\\'
csv_folder = 'C:\\PDF extract\\csv\\'  

    paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]
    for path in paths:
        listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
        path = path.replace('pdf', 'csv')
        for df in listdf: (df.to_csv(path, index = False))  

1 个答案:

答案 0 :(得分:1)

就像@Scott Hunter提到的那样,你没有使用 CSV_folder

另外,我认为你要覆盖创建的.csv文件:

for df in listdf: (df.to_csv(path, index = False))

对于for循环的每次迭代,路径变量保持不变。

修改 您可能应该尝试这样做:

pdf_folder = 'C:\\PDF extract\\pdf\\'
paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]

for path in paths:
    listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
    path = path.replace('pdf', 'csv')
    df_concat = pd.concat(listdf)
    df_concat.to_csv(path, index = False)