Python pdfminer LAParams не изменяет вывод - PullRequest
0 голосов
/ 13 февраля 2020

Я использую pdfminer3 для извлечения текста из файла PDF. У меня возникла проблема с межстрочным интервалом для вывода.

Некоторые предложения в разных строках соединяются без пробелов. Это затрудняет разделение предложений.

Ниже приведен пример файла PDF, ожидаемого вывода и вывода:

Пример файла PDF

"" "

Это внешняя электронная почта

Я собираюсь идти.

Я тогда бегу.

" ""

Ожидаемый вывод

"" "Это внешняя электронная почта, которую я собираюсь пройти. Затем я выполню." ""

Фактический вывод

"" "Это внешняя электронная почта, которую я собираюсь пройти. Затем я отправлюсь." ""

Я полагаю, что проблема заключается в поле линии. Я указал размер строки в лапарамах, но все равно получаю тот же результат. Я попытался настроить этот параметр для очень больших и малых значений. Никто не меняет мой вывод.

Я предполагаю, что лапарам как-то не запускается. Любая помощь с благодарностью!

Код

from pdfminer3.layout import LAParams, LTTextBox
from pdfminer3.pdfpage import PDFPage
from pdfminer3.pdfinterp import PDFResourceManager
from pdfminer3.pdfinterp import PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.converter import TextConverter
import io

resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
# Set parameters for analysis.
laparams = LAParams(line_margin=.0000000000500)
# tried this too
laparams = LAParams(line_margin=500)

converter = TextConverter(resource_manager, fake_file_handle, laparams=laparams)
page_interpreter = PDFPageInterpreter(resource_manager, converter)

with open(file_name, 'rb') as fh:

    for page in PDFPage.get_pages(fh,
                                  caching=True,
                                  check_extractable=True):
        page_interpreter.process_page(page)

    text = fake_file_handle.getvalue()

# close open handles
converter.close()
fake_file_handle.close()

print(text)
...