Как использовать pdf2txt.py в pdfminer.six в скрипте Python и вне командной строки?

1

Я знаю, как использовать инструмент pdfminer.six pdf2txt.py в командной строке; однако у меня есть много файлов PDF для преобразования в txt файлы, и я не могу просто сделать это один за другим в командной строке. Я не нашел, как использовать этот инструмент в реальном скрипте python. Есть идеи?

  • 0
    мы не можем использовать subprocess.run () здесь?
Теги:
python-3.x
python-3.6
pdfminer

1 ответ

1
Лучший ответ

Хорошей новостью является то, что вы можете использовать библиотеку PDFMiner для воссоздания любых атрибутов/команд, которые вы можете использовать с pdf2text в командной строке. Ниже приводится базовый пример:

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

def pdf_to_text(path):
    manager = PDFResourceManager()
    retstr = BytesIO()
    layout = LAParams(all_texts=True)
    device = TextConverter(manager, retstr, laparams=layout)
    filepath = open(path, 'rb')
    interpreter = PDFPageInterpreter(manager, device)

    for page in PDFPage.get_pages(filepath, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    filepath.close()
    device.close()
    retstr.close()
    return text


if __name__ == "__main__":
    text = pdf_to_text("yourfile.pdf")
    print(text)

Если вам нужно указать номера страниц или пароли, это необязательные параметры в файле PDFPage.get_pages. Аналогично, если вам нужно внести изменения в макет, такие как тексты или размер маркера, существуют дополнительные атрибуты для инициализатора LAParams

  • 0
    Спасибо! Могу я спросить, откуда у тебя все это? Официальная документация и GitHub, похоже, не имеют никаких инструкций по этим
  • 1
    Конечно, это в основном просто урезано от некоторых примеров, которые они приводят на этой странице API: pdfminer-docs.readthedocs.io/programming.html . Что касается многих пользовательских атрибутов, я тоже не смог найти много на них. Мне пришлось взглянуть на файлы layout.py и pdfpage.py в Lib \ site-packages \ pdfminer, чтобы получить различные параметры, которые вы можете вызывать при инициализации этих объектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню