Как извлечь таблицу из PDF в Python? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть тысячи файлов PDF, составленных только из таблиц, со следующей структурой:

pdf файл

Однако, несмотря на то, что я достаточно структурирован, я не могу прочитатьстолы без потери структуры.

Я пробовал PyPDF2, но данные полностью запутались.

import PyPDF2 

pdfFileObj = open(pdf_file.pdf, 'rb') 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 
pageObj = pdfReader.getPage(0) 

print(pageObj.extractText())
print(pageObj.extractText().split('\n')[0]) 
print(pageObj.extractText().split('/')[0]) 

Я также пробовал Tabula, но он читает только заголовок (а не содержимое таблиц)

from tabula import read_pdf

pdfFile1 = read_pdf(pdf_file.pdf, output_format = 'json') #Option 1: reads all the headers
pdfFile2 = read_pdf(pdf_file.pdf, multiple_tables = True) #Option 2: reads only the first header and few lines of content

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Немного потрудившись, я нашел способ.

Для каждой страницы файла необходимо было определить в функции read_pdf в tabula область таблицы и границы столбцов.

Вот рабочий код

import PyPDF2 
from tabula import read_pdf

# Get the number of pages in the file
pdfFileObj = open(pdf_file, 'rb') 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 
n_pages = pdfReader.getNumPages()

# For each page the table can be read with the following code
table_pdf = read_pdf(pdf_file, guess=False, pages = 1, stream=True , encoding="utf-8", area = (96,24,558,750), columns = (24,127,220,274,298,325,343,364,459,545,591,748))
0 голосов
/ 07 мая 2019

Попробуйте: pip install tabula-py

 from tabula import read_pdf
 df = read_pdf("file_name.pdf")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...