Как читать простой текст из файла PDF с Python? - PullRequest
0 голосов
/ 24 января 2020

Необходимо разобрать файл PDF, чтобы извлечь только первые начальные строки текста, и искать различные пакеты Python для выполнения работы, но безуспешно.

Попробовав:

  • PDFminer , PDFminer.six и PDFminer3k , что представляется слишком сложным для простой работы, и я не смог найти простой рабочий пример

  • slate , получил error при установке, хотя работал с исправлением из потока, но получил ошибку, когда пытаясь; возможно, использующий неправильный PDFminer, но не может понять, какой использовать

  • PyPDF2 и PyPDF3 , но это дало мусор, как описано здесь

  • tika , который выдавал различные сообщения об ошибках терминала и был очень медленным

  • pdftotext не удалось установить

  • pdf2text не удалось выполнить «import pdf2text», а при изменении на «pdftotext» не удалось выполнить импорт с помощью «ImportError: невозможно импортировать имя» Extractor «Даже через pip list видно, что установлен« Extractor »

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

Любое предложение о том, как выполнить простой анализ PDF-файла в текст в Python?

Добавлен пример PyPDF2

Пример PyPDF2:

import PyPDF2
pdfFileObj = open('file.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj_0 = pdfReader.getPage(0)
print(pageObj_0.extractText())

, который возвращает мусор как:

$% $% &% & $ ' ('˜!) "* + #

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Попробуйте с комбинацией PyPDF2 , textract и nltk .

См. Ниже URL:

https://medium.com/@rqaiserr / как конвертировать pdfs-в-для-поиска-ключевые слова-с- python -85aab86c544f

Надеюсь, что это полезно.

Спасибо. Наслаждайтесь кодированием.

0 голосов
/ 24 января 2020

Основываясь на pdfminer, я смог извлечь из скрипта pdf2txt.py (поставляется с pdfminer) саму необходимость в функцию:

import io

from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.layout import LAParams
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfpage import PDFPage

def pdf_to_text(path):
    with open(path, 'rb') as fp:
        rsrcmgr = PDFResourceManager()
        outfp = io.StringIO()
        laparams = LAParams()
        device = TextConverter(rsrcmgr, outfp, laparams=laparams)
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        for page in PDFPage.get_pages(fp):
            interpreter.process_page(page)
    text = outfp.getvalue()
    return text
0 голосов
/ 24 января 2020

все API имеют дефект, вы должны выбрать один, ничего не идеально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...