我正在尝试从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以了解表边界和下一页跨度吗?
或其他任何可以提供帮助的库吗?
答案 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