У меня есть файл PDF более 100 страниц. Есть поля и столбцы текста. Когда я извлекаю текст с помощью PyPdf2 и синтаксического анализатора tika, я получаю строку данных, которая не соответствует порядку. Во многих случаях он упорядочен по столбцам, а в других случаях пропускается по всему документу. Можно ли читать pdf-файл, начиная сверху, двигаясь слева направо до низа? Я хочу прочитать текст в столбцах и полях, но я хочу, чтобы строка текста отображалась так, как если бы она читалась слева направо.
Я пробовал: PyPDF2 — единственный инструмент — extracttext(). Быстрый, но не дает пробелов в элементах. Результаты смешаны.
Pdfminer — метод PDFPageInterpeter() с LAParams. Это работает хорошо, но медленно. Не менее 2 секунд на страницу и у меня 200 страниц.
pdfrw - это говорит мне только о количестве страниц.
tabula_py - дает только первую страницу. Может я не правильно зацикливаю.
tika - то, с чем я сейчас работаю. Быстрее и читабельнее, но содержимое по-прежнему беспорядочно.
from tkinter import filedialog
import os
from tika import parser
import re
# select the file you want
file_path = filedialog.askopenfilename(initialdir=os.getcwd(),filetypes=[("PDF files", "*.pdf")])
print(file_path) # print that path
file_data = parser.from_file(file_path) # Parse data from file
text = file_data['content'] # Get files text content
by_page = text.split('... Information') # split up the document into pages by string that always appears on the
# top of each page
for i in range(1,len(by_page)): # loop page by page
info = by_page[i] # get one page worth of data from the pdf
reformated = info.replace("\n", "&") # I replace the new lines with "&" to make it more readable
print("Page: ",i) # print page number
print(reformated,"\n\n") # print the text string from the pdf
Это обеспечивает своего рода вывод, но он не упорядочен так, как мне хотелось бы. Я хочу, чтобы PDF-файл читался слева направо. Кроме того, если бы я мог получить чистое решение на Python, это было бы бонусом. Я не хочу, чтобы мои конечные пользователи были вынуждены устанавливать java (я думаю, что методы tika и tabula-py зависят от java).