提取跨多页的表

时间:2018-09-08 11:06:09

标签: python screen-scraping tabula

我正在尝试从pdf中提取表格。 Tabula帮助我从pdf中提取表格。

当前我面临的问题是,如果任何表跨越多个页面,Tabula会将每个新页面表的内容视为新表。

有什么方法或逻辑可以解决这个问题?

代码:

from tabula import read_pdf
df = read_pdf("SampleTableFormat2pages.pdf", multiple_tables=True, pages="all")
print len(df)
print df

输出

2
[        0       1       2       3       4
0  Label1  Label2  Label3  Label4  Label5
1   Row11   Row12   Row13   Row14   Row15
2   Row21   Row22   Row23   Row24   Row25
3   Row31   Row32   Row33   Row34   Row35,        0      1      2      3      4
0  Row41  Row42  Row43  Row44  Row45
1  Row51  Row52  Row53  Row54  Row55]

有什么逻辑可以解释Tabula以了解表边界和下一页跨度吗?

或其他任何可以提供帮助的库吗?

1 个答案:

答案 0 :(得分:0)

我建议一次进入每个页面,并进入决赛桌。 您可以将此功能用于pdf中的页数

import re
def count_pdf_pages(file_path):
   rxcountpages = re.compile(r"/Type\s*/Page([^s]|$)", re.MULTILINE|re.DOTALL)
   with open(file_path, "rb") as temp_file:
   return len(rxcountpages.findall(temp_file.read()))

现在循环遍历带有表的每个页面

df=pd.DataFrame([])
df_combine=pd.DataFrame([])
for pageiter in range(pages):
            df = tabula.read_pdf("SampleTableFormat2pages.pdf",pages=pageiter+1, guess=False)
            #If you want to change the table by editing the columns you can do that here.
            df_combine=pd.concat([df,df_combine],) #again you can choose between merge or concat as per your need