Фон:
У меня есть файл PDF с несколькими страницами (LARGE_PDF
).Каждая страница содержит одну таблицу и никакого другого контента.Каждый стол выглядит по-разному.Я хочу извлечь содержимое таблицы и поместить их в кадр данных pandas.Я использую tabula-py для этого, и он работает так, как нужно с помощью следующего подхода:
Подход:
Сначала я разбил PDFфайл в несколько одностраничных файлов PDF и сохраните их на диск.
single_page_files = split_and_save(LARGE_PDF) # Split to single files, one page each
Во-вторых, передайте каждый отдельный файл в tabula-py.
from tabula import read_pdf as tabular_read
for item in single_page_files:
print type(item)
df = tabular_read(PDF_page, pandas_options={'header':None})
if df:
print 'approach works'
Вывод:
>>> <type 'str'> # filepath string
>>> approach works
Задача:
Теперь я хочу сделать это в памяти, чтобы никакие промежуточные одностраничные PDF-файлы не сохранялись на диск.Для этого я создаю список одностраничных PyPDF2.pdf.PageObject
объектов и передаю их в tabula-py.
from PyPDF2 import PdfFileReader, PdfFileWriter
single_page_pypdfobjects = split_but_dont_save(LARGE_PDF)
for item in single_page_pypdfobjects:
print type(item)
df = tabular_read(PDF_page, pandas_options={'header':None})
if df:
print 'approach works'
Вывод:
>>> class 'PyPDF2.pdf.PageObject'> # PyPDF2 single page object
>>> TypeError: unhashable type
Какобрабатывать PDF-файлы в памяти с помощью python?