Как обрабатывать PDF-файлы в памяти с помощью Python? - PullRequest
0 голосов
/ 22 февраля 2019

Фон:

У меня есть файл 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?

1 Ответ

0 голосов
/ 22 февраля 2019

Вам не нужно разбивать PDF. Tabla-py имеет опцию pages, чтобы указать, с каких страниц вы хотите извлечь.

...