Извлечение таблиц, охватывающих несколько страниц - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь извлечь таблицу из PDF. Табула помогла мне извлечь таблицы из 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]

Любая логика, чтобы интерпретировать Табулу, чтобы понять границы таблицы и охват следующей страницы?

ИЛИ любая другая библиотека, которая может помочь в этом?

1 Ответ

0 голосов
/ 26 сентября 2018

Я предлагаю перейти к каждой странице за раз и составить финальный стол. Вы можете использовать эту функцию для количества страниц в 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
...