Извлечение текста из PDF с помощью Python


Введение

В этой статье мы рассмотрим, как извлечь текст из PDF с помощью Python. Для выполнения этой задачи мы будем использовать модуль PyPDF2. PyPDF2 — это бесплатная библиотека python с открытым исходным кодом, способная выполнять множество задач, таких как разделение, слияние, обрезка, добавление пользовательских данных, шифрование и извлечение текста из PDF.

Файл-образец PDF

В качестве образца PDF-файла, из которого будет извлечен текст, будет использован «Ворон» Эдгара Аллана По.

Структура каталога

Вот структура каталогов перед выполнением script.py

Python Project/
├── app/
│   ├── script.py
│   ├── the_raven.pdf
│
Вход в полноэкранный режим Выход из полноэкранного режима

Реализация

  1. Открыть PDF и извлечь текст
  2. Сохранить текст в файл.

Открыть PDF и извлечь текст

def extract_text_from_pdf(pdf_filename: str) -> str:
    text_output = ''
    with open(pdf_filename, 'rb') as pdf_object:
        pdf_reader = PyPDF2.PdfFileReader(pdf_object)
        for i in range(0, pdf_reader.numPages):
            page_obj = pdf_reader.getPage(i)
            text_output += page_obj.extractText()
    return text_output
Вход в полноэкранный режим Выйти из полноэкранного режима
  1. Функция convert_pdf_to_text() принимает один параметр, pdf_filename, который является именем файла PDF, из которого будет извлечен текст.
  2. Затем мы перебираем все страницы объекта PyPDF2, используя функцию range() и атрибут numPages для определения верхней границы функции range.
  3. Затем мы создаем экземпляр page_obj для каждой страницы и извлекаем текст из каждого page_object с помощью метода extractText().
  4. Наконец, мы объединяем результаты в строку text_output и возвращаем результаты.

Сохранить текст в файл.

def save_converted_text(text_file: str, filename: str) -> None:
    with open(filename, 'w+', encoding='utf8') as file_obj:
        file_obj.write(text_file)
    print(f'{text_file} has been successfully saved.')
Вход в полноэкранный режим Выход из полноэкранного режима
  1. Содержимое text_file записывается в file_obj. При успешном выполнении операции выводится сообщение.

Что такое кодирование?

Во многих приложениях часто используются интернационализированные сообщения для отображения вывода на различных выбранных пользователем языках, таких как английский, французский, японский, иврит или русский. Веб-контент может быть написан на любом из этих языков, а также может включать различные символы emoji. Строковый тип Python использует стандарт Unicode Standard для представления символов, что позволяет программам Python работать со всеми этими различными возможными символами. Если кодировка не указана, по умолчанию будет использоваться UTF-8. Читайте Официальную документацию Python, чтобы узнать больше о кодировке.

Полный код

import PyPDF2


# STEP 1: open PDF and convert to text
def extract_text_from_pdf(pdf_filename: str) -> str:
    text_output = ''
    with open(pdf_filename, 'rb') as pdf_object:
        pdf_reader = PyPDF2.PdfFileReader(pdf_object)
        for i in range(0, pdf_reader.numPages):
            page_obj = pdf_reader.getPage(i)
            text_output += page_obj.extractText()
    return text_output


# STEP 2: Save Text to File
def save_converted_text(text_file: str, filename: str) -> None:
    with open(filename, 'w+', encoding='utf8') as file_obj:
        file_obj.write(text_file)
    print(f'{text_file} has been successfully saved.')


if __name__ == '__main__':
    # extract text from PDF
    text_from_pdf = extract_text_from_pdf('the_raven.pdf')
    # save extracted text
    save_converted_text(text_from_pdf, 'the_raven.txt')
Вход в полноэкранный режим Выход из полноэкранного режима

Структура каталога

Вот структура каталогов после выполнения script.py

Python Project/
├── app/
│   ├── script.py
│   ├── the_raven.pdf
│   ├── the_raven.txt
│
Вход в полноэкранный режим Выход из полноэкранного режима

Заключение

После прочтения этой статьи вы теперь должны уметь извлекать текст из PDF с помощью библиотеки Python PyPDF2. Помните, если при извлечении текста вы столкнетесь с нераспознаваемым текстом, убедитесь, что вы используете правильную кодировку строки. Если вы нашли эту статью полезной, пожалуйста, like, follow, и leave a comment!

🔗 Ссылки на ресурсы

  • Исходный код на GitHub

Оцените статью
devanswers.ru
Добавить комментарий