Введение
В этой статье мы рассмотрим, как извлечь текст
из PDF
с помощью Python. Для выполнения этой задачи мы будем использовать модуль PyPDF2. PyPDF2
— это бесплатная библиотека python с открытым исходным кодом, способная выполнять множество задач, таких как разделение, слияние, обрезка, добавление пользовательских данных, шифрование и извлечение текста из PDF.
Файл-образец PDF
В качестве образца PDF-файла, из которого будет извлечен текст, будет использован «Ворон» Эдгара Аллана По.
Структура каталога
Вот структура каталогов перед выполнением script.py
Python Project/
├── app/
│ ├── script.py
│ ├── the_raven.pdf
│
Реализация
- Открыть PDF и извлечь текст
- Сохранить текст в файл.
Открыть 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
- Функция
convert_pdf_to_text()
принимает один параметр,pdf_filename
, который является именем файла PDF, из которого будет извлечен текст. - Затем мы перебираем все страницы объекта
PyPDF2
, используя функциюrange()
и атрибутnumPages
для определения верхней границы функции range. - Затем мы создаем экземпляр
page_obj
для каждой страницы и извлекаем текст из каждогоpage_object
с помощью методаextractText()
. - Наконец, мы объединяем результаты в строку
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.')
- Содержимое
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