Читайте PDF в Python: извлечение текста и изображений
В повседневной работе и учебе нам часто нужно пакетно извлекать текст или изображения из файлов PDF. Например, систематизировать пункты из отсканированного договора или собрать все изображения из руководства пользователя к продукту.
Раньше работа с PDF была настоящей головной болью, но с нужными библиотеками все становится проще. Сегодня мы расскажем, как использовать Spire.PDF для Python — мощную библиотеку, которая позволяет извлекать текст и изображения из PDF всего за несколько строк кода.
Перед началом убедитесь, что вы установили библиотеку Spire.PDF:
pip install Spire.PDF
1. Загрузка PDF-документа
Прежде чем что-либо делать, нужно загрузить файл PDF в наш код. Spire.PDF очень гибкая и поддерживает загрузку как по пути к файлу , так и из потока данных (Stream) .
Метод 1: загрузка из файла
from spire.pdf import PdfDocument
# Создаем экземпляр PdfDocument
pdf = PdfDocument()
# Загружаем локальный PDF-документ
pdf.LoadFromFile("sample.pdf")
Это самый прямой подход для фиксированных файлов на локальном диске.
Метод 2: загрузка из потока данных
Если данные вашего PDF получаются из сетевого интерфейса или генерируются в памяти как массив байтов, этот метод очень удобен.
from spire.pdf import PdfDocument, Stream
# Читаем файл как массив байтов (демо: читаем из файла; также может прийти по сети)
withopen("sample.pdf«, «rb») as f:
byte_data = f.read()
# Создаем объект потока
pdfStream = Stream(byte_data)
# Загружаем PDF из потока
pdf = PdfDocument(pdfStream)
2. Извлечение текста
Извлечение текста — одна из самых распространенных задач при обработке документов. Следующий код показывает, как пройти по всем страницам PDF и объединить текст с каждой страницы.
В основном используются два вспомогательных класса: PdfTextExtractor и PdfTextExtractOptions. Установка IsExtractAllText = True помогает гарантировать, что будет извлечено большинство видимого текста на странице.
from spire.pdf import PdfDocument, Stream
# Читаем файл как массив байтов (демо: читаем из файла; также может прийти по сети)
withopen("sample.pdf«, «rb») as f:
byte_data = f.read()
# Создаем объект потока
pdfStream = Stream(byte_data)
# Загружаем PDF из потока
pdf = PdfDocument(pdfStream)
3. Извлечение изображений
Во многих случаях ключевая информация в PDF на самом деле скрыта в иллюстрациях или диаграммах. Spire.PDF также предоставляет очень удобное решение для извлечения изображений.
Используя вспомогательный класс PdfImageHelper, мы можем напрямую получить сведения об изображениях на странице, а затем сохранить каждое изображение как файл (например, .png).
# Получаем первую страницу (индекс равен 0)
page = pdf.Pages.get_Item(0)
# Создаем объект помощника по изображениям
image_helper = PdfImageHelper()
# Получаем всю информацию об изображениях на странице
images_info = image_helper.GetImagesInfo(page)
# Проходим по списку и сохраняем каждое изображение
for i in range(len(images_info)):
# Сохраняем в формате PNG
images_info[i].Image.Save(f"output/Images/image_{i}.png")
print(f"Успешно извлечено {len(images_info)} изображений")
Примечание : Если это отсканированный PDF (т.е. изображение-ориентированный), то извлекается по сути весь отсканированный образ. Если это электронно сгенерированный PDF, библиотека может точно извлечь встроенные отдельные иконки или фотографии.
4. Продвинутые советы
Хотя код выше покрывает основы, в реальных приложениях есть несколько моментов, на которые стоит обратить внимание:
- Обработка страниц : в примере извлекаются все тексты для демонстрации. Если вам нужно обрабатывать страницу за страницей, просто управляйте pageIndex в цикле.
- Поддержка китайского : библиотека хорошо поддерживает китайский язык. При извлечении китайских PDF убедитесь, что ваше окружение кодировки использует UTF-8.
- Ограничения бесплатной редакции : если вы используете бесплатную версию Spire.PDF, имейте в виду, что она обычно имеет ограничение на количество страниц, которые можно обработать (например, только первые 10 страниц). Если нужно обрабатывать много страниц, возможно, придется оценить коммерческую версию.
Итог
С Spire.PDF для Python вы обнаружите, что обработка PDF-файлов удивительно проста. Независимо от того, нужно ли вам читать файл, анализировать текст постранично или сохранять ценные иллюстрации — все можно сделать всего несколькими строками кода. Это значительно повышает эффективность обработки документов, позволяя сосредоточиться на следующих шагах — анализе данных или бизнес-логике.
Попробуйте уже сейчас — пусть код освободит вам руки!