使用Python将PDF转换为Dataframe

时间:2017-07-17 19:24:17

标签: python-3.x

我正在尝试将pdf转换为包含表格格式的Dataframe。我使用的是Python 3.6。

请帮我转换一下。

请关注pdf文件的链接:

http://centerforcollegeaffordability.org/uploads/component-rankings-2014-v2.pdf

3 个答案:

答案 0 :(得分:4)

我找到了出路。我正在使用Tabula-py绑定和PyPDF2。

我正在使用PyPDF2获取PDF格式的页数,并使用它来遍历.pdf文件的每一页。

而且,Tabula用于提取数据并将其转换为数据帧。

如果有更好的方法,请更正。

import pandas as pd
import numpy as np
from tabula import read_pdf_table
import PyPDF2

reader = PyPDF2.PdfFileReader(open('Your Path', mode='rb'))
m = reader.getNumPages()
#print(reader)
print(m)
for i in range(m):
    n = i+1

    if n==1:
        df = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False}, pages=n)
        index = np.where(df[0].isnull())[0]
        sect = df.iloc[index[0]:index[-1]]
        s = []
        headers = []
        for col in sect:
            colnames = sect[col].dropna().values.flatten()
            (s.insert(len(s), colnames))
            pic = [' '.join(s[col])]
            for i in pic:
                headers.append(i)
        print(df)
        df.drop(sect, inplace=True)
        df.columns = headers
        new_df = pd.DataFrame(columns=headers)
        new_df = pd.concat([new_df, df], axis=0, ignore_index=True)

    else:
        df_2 = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False, 'encoding': "ISO-8859-1"}, pages=n)
        df_2.drop(sect, inplace=True)
        df_2.columns = headers
        new_df = pd.concat([new_df, df_2], axis=0, ignore_index=True)

new_df.columns = headers
print(new_df)
new_df.to_csv('Your Path', index=False)

答案 1 :(得分:1)

你可以这样做:

df = tabula.read_pdf('inputfile.pdf', pages='all')
  for item in df:
    for info in item.values:
      list1.append(info)
  df = pd.DataFrame(list1)
  df.to_excel('outfile.xlsx', sheet_name='Sheet1', index=True)

答案 2 :(得分:0)

您可以简单地使用:

import tabula

# Read PDF into list of DataFrame
dataframe = tabula.read_pdf("input.pdf", pages='all')

# Read remote PDF into list of DataFrame
dataframe_2 = tabula.read_pdf("https://github.com/tabulapdf/tabula-java/raw/master/src/test/resources/technology/tabula/arabic.pdf")

# Convert PDF into CSV file
tabula.convert_into("input.pdf", "output.csv", output_format="csv", pages='all')

有关更多信息,您可以检查此博客链接: Click here