Как получить pandas-совместимую таблицу из Tabula.Wrapper.Read_PDF (), которая читает весь этот документ - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь прочитать PDF-файл, чтобы преобразовать данные таблицы в CSV-файл. У меня есть PDF-документ, содержащий таблицу, которая переносится со страницы 1 на страницу 2.

Хотя используется функцияtabula.wrapper.pdf_read (), если я использовал предположить = Истина, то вывод совместим с pandas, но не будет читать все данные на странице 1 и никаких данных со страницы 2. В качестве альтернативы, если я использую догадку = Ложь, код будет собирать /вывод всех данных со страниц 1 и 2, но не совместимых с пандами.использование электронных таблиц = True и nospreadsheet = False также не помогают

Код

import PyPDF2
import pandas as pd
from io import StringIO
import tabula
from tabula import wrapper
import os
import shutil
from io import StringIO

def pdf_read(pdf_path):
    pdf = PyPDF2.PdfFileReader(pdf_path)
    no_pages = pdf.getNumPages()
    data = wrapper.read_pdf(pdf_path, multiple_tables=True, pages="1-2", guess=False)
    print(data)
    x = data
    return(x)

def archive_pdf(current_path, name):
    x = len(name) + 4 
    new_path = current_path[:-x] +"Archive/" + name + ".pdf"
    shutil.move(current_path, new_path)

def pdf_page_read_test_v2(folder_path, name):
    pdf_path = folder_path + "/" + name + ".pdf"
    csv_path = folder_path + "/" + name + ".csv"
    data = pdf_read(pdf_path)
    data2 = pd.DataFrame(data)
    export_excel = data2.to_csv(csv_path, index = None, header=True)
    #archive_pdf(pdf_path, name)

Ввод для вывода

Ввод в формате PDF:

**00|01|02|03|04**   
**01**|x1|y1|z1|w1  
**02**|a1|b1|c1|d1  
**03**|x2|y2|z2|w2  
**04**|a2|b2|c2|d2  
**05**|x3|y3|z3|w3  
**06**|a3|b3|c3|d3

Пример вывода (предположения = true):

**00|01|02|03|04**   
**01**|x1|y1|z1|w1  
**02**|a1|b1|c1|d1  
**03**|x2|y2|z2|w2  
**04**|a2|b2|c2|d2

Пример вывода (предположения = false):

00  01  02  03  04  01  x1  y1  z1  w1 02 a1  b1  c1  d1 03 x2  y2  z2  w2 04 a2  b2  c2  d2 05 x3  y3  z3  w3 06 a3  b3  c3  d3
...