Как я могу использовать регулярное выражение в моем коде pdfminer для извлечения текста между двумя заголовками? - PullRequest
0 голосов
/ 07 января 2019

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

Это пример PDF: https://www.scribd.com/document/396797318/123

Я хочу извлечь весь текст между заголовками «3. Вводное обучение» и «4. Корпоративное обучение / Обучение в отделах»

Следующий код - это то, что я использую для извлечения данных из PDF:

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=False):
        interpreter.process_page(page)

    text = retstr.getvalue()

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

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

Какое регулярное выражение я могу использовать для получения необходимой информации?

1 Ответ

0 голосов
/ 07 января 2019

Попробуйте Regex: (?<=3\. Induction Training\n).*(?=4\. Corporate Training\/Departmental Training)

Демо

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