
Парсинг PDF означает извлечение структурированных или неструктурированных данных из PDF-файла. Это может быть сложной задачей из-за сложной структуры PDF. В отличие от простого текста или структурированных форматов, таких как JSON и XML, PDF-файлы хранят содержимое таким образом, который не всегда следует линейному порядку. Извлечение текста, таблиц, изображений и метаданных требует надежной, точной и эффективной библиотеки парсера PDF на Python. В этой статье мы узнаем, как парсить PDF на Python с использованием Aspose.PDF for Python. К концу этого руководства вы сможете извлекать текст, таблицы и изображения из PDF-документов на Python.
Эта статья охватывает следующие темы:
- Aspose.PDF: Лучшая библиотека парсера PDF для Python
- Парсинг PDF и извлечение текста на Python
- Как анализировать таблицы из PDF в Python
- Парсинг метаданных PDF: Получение информации о PDF файле в Python
- Парсинг изображений из PDF в Python
- Как анализировать аннотации PDF в Python
Aspose.PDF: Лучшая библиотека для парсинга PDF на Python
Aspose.PDF for Python является одной из лучших библиотек для разбора PDF на Python, доступных сегодня. Она предлагает высокую точность, поддерживает извлечение структурированных данных и даже работает со сканированными PDF благодаря поддержке OCR.
Aspose.PDF выделяется среди библиотек парсеров PDF для Python по нескольким причинам:
- Высокая точность: Извлекает текст и таблицы с точностью.
- Поддержка структурированных данных: Работает с таблицами, изображениями и метаданными.
- Без внешних зависимостей: легковесная, автономная библиотека.
- Несколько форматов вывода: Конвертировать PDF в текст, XLSX, DOCX, HTML и форматы изображений.
- Безопасность и надежность: Обрабатывает сложные структуры PDF без повреждения данных.
По сравнению с альтернативами с открытым исходным кодом, Aspose.PDF предлагает более надежное и богатое функционалом решение, что делает его идеальным для корпоративных приложений и систем автоматизации документов.
Установка и настройка
Установка Aspose.PDF for Python проста. Скачайте его из releases или выполните следующую pip команду:
pip install aspose-pdf
Чтобы начать использовать Aspose.PDF в вашем Python приложении, импортируйте необходимый модуль:
import aspose.pdf as ap
Извлечение текста: Разбор PDF в Python
Парсинг текста из PDF является одной из ключевых функций библиотек парсинга PDF на Python. Мы можем извлекать текст со всех страниц PDF-документа или с конкретной страницы или региона PDF-документа. В последующих разделах мы узнаем, как:
- Парсинг текста со всех страниц PDF в Python
- Парсите текст с определенной страницы в PDF
- Парсить текст из определённого региона в PDF
- Извлечение текста из многостолбцовых PDF-файлов
- Улучшенный разбор текста с ScaleFactor
- Парсинг текста в PDF: альтернативный подход
Парсинг текста со всех страниц PDF в Python
Aspose.PDF for Python предоставляет эффективный способ извлечения текста из PDF документов с использованием классов Document
и TextAbsorber
. Класс Document
используется для загрузки PDF файла, в то время как класс TextAbsorber
отвечает за извлечение текстового содержимого со всех страниц. Метод accept()
обрабатывает каждую страницу и извлекает текст, который затем может быть сохранен или отображен по мере необходимости.
Шаги для извлечения текста со всех страниц PDF в Python
- Загрузите PDF-документ с помощью класса
Document
. - Создайте экземпляр класса
TextAbsorber
для обработки извлечения текста. - Вызовите метод
accept()
на коллекцииpages
, позволяяTextAbsorber
обработать все страницы. - Получите извлеченный текст, используя свойство
text
экземпляраTextAbsorber
. - Print the extracted text.
Следующий пример кода показывает, как извлекать текст со всех страниц PDF в Python.
# Этот пример кода показывает, как извлечь текст со всех страниц PDF-документа на Python
import aspose.pdf as ap
# Открыть PDF документ
document = ap.Document("AddText.pdf")
# Создать текстовый абсорбер
text_absorber = ap.text.TextAbsorber()
# Вызовите метод accept для обработки всех страниц
document.pages.accept(text_absorber)
# Извлеките текст
extracted_text = text_absorber.text
# Определите путь к файлу
file_path = "extracted-text.txt"
# Откройте файл в режиме записи и запишите извлеченный текст
with open(file_path, "w", encoding="utf-8") as tw:
tw.write(extracted_text + "\n") # Write the extracted text with a newline
Парсить текст с конкретной страницы в PDF
Мы также можем извлекать текст с конкретной страницы PDF-документа, немного модифицировав ранее описанный подход. Вместо обработки всего документа вам нужно только вызвать метод accept()
на нужной странице объекта Document
. Просто укажите номер страницы, используя его индекс, и Aspose.PDF извлечет текст только с этой страницы. Этот метод полезен при работе с большими PDF-документами, когда вам нужны данные только из определенного раздела, что повышает эффективность и производительность.
Следующий пример кода показывает, как извлечь текст со специфической страницы PDF в Python.
# Этот пример кода показывает, как извлечь текст с определенной страницы PDF-документа на Python.
import aspose.pdf as ap
# Откройте PDF-документ
document = ap.Document("AddText.pdf")
# Создайте текстовый поглотитель
text_absorber = ap.text.TextAbsorber()
# Вызовите метод accept, чтобы обработать все страницы
document.pages[1].accept(text_absorber)
# Извлечь извлеченный текст
extracted_text = text_absorber.text
# Определите путь к файлу
file_path = "extracted-text.txt"
# Откройте файл в режиме записи и запишите извлеченный текст
with open(file_path, "w", encoding="utf-8") as tw:
tw.write(extracted_text + "\n") # Write the extracted text with a newline
Извлечение текста из конкретного региона в PDF
Иногда нам может понадобиться извлечь текст из определённого раздела страницы PDF, а не получать содержимое из всего документа. Чтобы нацелиться на конкретную область, используйте свойство Rectangle
класса TextSearchOptions
. Это свойство принимает объект Rectangle
, который определяет координаты нужного региона. Указывая эту границу, мы можем извлекать текст только из выбранной области, игнорируя остальное содержимое страницы.
Шаги для извлечения текста из определенной области страницы
- Загрузите PDF-документ с помощью класса
Document
. - Создайте экземпляр класса
TextAbsorber
, чтобы захватить текст из документа. - Определите целевой регион, используя
TextSearchOptions.Rectangle
, который указывает область для извлечения текста. - Примените извлечение текста к конкретной странице, вызвав метод
accept()
на выбранной странице. - Извлеките извлеченный текст из свойства
Text
TextAbsorber
. - Process the output as needed.
Следующий пример кода показывает, как извлечь текст из конкретной области страницы PDF на Python.
# Этот пример кода показывает, как извлечь текст из определенной области страницы в документе PDF с использованием Python
import aspose.pdf as ap
# Открыть PDF документ
document = ap.Document("sample.pdf")
# Создайте объект TextAbsorber для извлечения текста
absorber = ap.text.TextAbsorber()
absorber.text_search_options.limit_to_page_bounds = True
absorber.text_search_options.rectangle = ap.Rectangle(100, 200, 250, 350, True)
# Примите поглотитель для первой страницы
document.pages[1].accept(absorber)
# Get the extracted text
extracted_text = absorber.text
# Определите путь к файлу
file_path = "extracted-text.txt"
# Откройте файл в режиме записи и запишите извлечённый текст
with open(file_path, "w", encoding="utf-8") as tw:
tw.write(extracted_text + "\n") # Write the extracted text with a newline
Этот подход позволяет точно извлекать текст из ячеек таблиц, полей форм или любой определенной секции страницы, что делает его идеальным для автоматизации документов и анализа данных.
Извлечение текста из многостраничных PDF документов
PDF документы часто содержат смесь элементов, таких как текст, изображения, аннотации, вложения и графики. При работе с многостолбцовыми PDF файлами извлечение текста с сохранением оригинальной компоновки может быть сложной задачей.
Aspose.PDF for Python упрощает этот процесс, позволяя разработчикам управлять свойствами текста перед извлечением. Настраивая размеры шрифтов и затем извлекая текст, вы можете добиться более чистого и структурированного выхода. Следующие шаги демонстрируют, как применить этот метод для точного извлечения текста из PDF с несколькими колонками.
Шаги для извлечения текста из PDF с несколькими колонками в Python
- Загрузите PDF-документ с помощью класса
Document
. - Создайте экземпляр
TextFragmentAbsorber
, чтобы локализовать и извлечь отдельные текстовые фрагменты из документа. - Извлеките все обнаруженные фрагменты текста и уменьшите их размер шрифта на 70%, чтобы повысить точность извлечения.
- Сохраните измененный документ в потоке памяти, чтобы избежать сохранения промежуточного файла.
- Загрузите PDF из потока памяти для обработки откорректированного текста.
- Используйте
TextAbsorber
, чтобы извлечь структурированный текст из измененного документа. - Сохраните извлеченный текст в файл
.txt
для дальнейшего использования.
Следующий пример кода демонстрирует, как извлечь текст из многоколоночного PDF, сохраняя при этом макет.
# Этот пример кода показывает, как извлечь текст из многостолбцового PDF-файла на Python
import io
import aspose.pdf as ap
# Открыть PDF документ
document = ap.Document("multi-column-sample.pdf")
# Создайте объект TextFragmentAbsorber для извлечения текста
text_fragment_absorber = ap.text.TextFragmentAbsorber()
# Принять абсорбер для первой страницы
document.pages.accept(text_fragment_absorber)
# Получите коллекцию извлеченных текстовых фрагментов
text_fragment_collection = text_fragment_absorber.text_fragments
# Уменьшите размер шрифта как минимум на 70%, чтобы улучшить извлечение текста.
for text_fragment in text_fragment_collection:
text_fragment.text_state.font_size *= 0.7
# Сохраните измененный документ в поток памяти
source_stream = io.BytesIO()
document.save(source_stream)
# Перезагрузите документ из потока памяти
source_stream.seek(0)
dest_document = ap.Document(source_stream)
# Инициализируйте TextAbsorber для извлечения обновленного текста
text_absorber = ap.text.TextAbsorber()
dest_document.pages.accept(text_absorber)
extracted_text = text_absorber.text
# Сохраните извлеченный текст в файл
with open("ExtractColumnsText_out.txt", "w", encoding="utf-8") as file:
file.write(extracted_text)
Этот метод обеспечивает сохранение оригинального макета текста, извлеченного из многоколоночных PDF-документов, с максимальной точностью.
Улучшенный анализ текста с ScaleFactor
Aspose.PDF for Python позволяет вам разбирать PDF-документы и извлекать текст с определенной страницы с помощью расширенных параметров извлечения текста, таких как режим форматирования текста и коэффициент масштабирования. Эти параметры помогают точно извлекать текст из сложных PDF-документов, включая многоколонные документы.
С помощью параметра ScaleFactor мы можем точно настроить внутреннюю сетку текста для лучшей точности. Масштабный коэффициент от 1 до 0.1 работает как уменьшение шрифта, помогая правильно выровнять извлекаемый текст. Значения от 0.1 до -0.1 рассматриваются как ноль, обеспечивая автоматическое масштабирование на основе средней ширины глифа наиболее часто используемого шрифта на странице. Если параметр ScaleFactor не установлен, применяется значение по умолчанию 1.0, что гарантирует отсутствие корректировок масштаба. Для крупномасштабного извлечения текста рекомендуется автоматическое масштабирование (ScaleFactor = 0
), однако ручная установка ScaleFactor = 0.5 может улучшить результаты для сложных макетов. Однако ненужное масштабирование не повлияет на целостность содержания, обеспечивая надежность извлекаемого текста.
Шаги для извлечения текста с конкретной страницы с коэффициентом масштабирования
- Загрузите PDF-документ с помощью класса
Document
. - Создайте экземпляр
TextAbsorber
, чтобы извлечь текст. - Установите
TextExtractionOptions
в режим чистого форматирования для точного извлечения. - Настройте
scalefactor
, чтобы оптимизировать распознавание текста в многоколоночных PDF-файлах. - Вызовите
accept()
для коллекцииpages
, чтобы извлечь текст. - Сохраните извлечённый контент в текстовом файле.
# Этот пример кода показывает, как извлечь текст из определенной области страницы в документе PDF, используя Python
import aspose.pdf as ap
# Открыть PDF-документ
document = ap.Document("sample.pdf")
# Инициализируйте TextAbsorber с параметрами извлечения текста
text_absorber = ap.text.TextAbsorber()
# Настроить параметры извлечения
extraction_options = ap.text.TextExtractionOptions(ap.text.TextExtractionOptions.TextFormattingMode.PURE)
extraction_options.scale_factor = 0.5 # Adjusts text recognition for better column detection
text_absorber.extraction_options = extraction_options
# Извлеките текст со указанной страницы
document.pages.accept(text_absorber)
# Get extracted text
extracted_text = text_absorber.text
# Сохранить извлеченный текст в файл
with open("ExtractTextUsingScaleFactor_out.txt", "w", encoding="utf-8") as file:
file.write(extracted_text)
Разбор текста в PDF: альтернативный подход
Aspose.PDF for Python также предоставляет альтернативный подход для извлечения текста с использованием класса TextDevice
. Пожалуйста, прочитайте больше о extracting text from PDF using the TextDevice.
Как парсить таблицы из PDF в Python
Парсинг таблиц из PDF-файлов имеет важное значение для анализа данных, автоматизации и отчетности. PDF-файлы часто содержат структурированные данные в табличной форме, которые могут быть сложными для извлечения с использованием стандартных методов текстового извлечения. К счастью, Aspose.PDF for Python предоставляет мощный способ извлечения таблиц с высокой точностью, сохраняя их структуру и содержание.
Класс TableAbsorber
специально разработан для обнаружения и извлечения таблиц из страниц PDF. Он обрабатывает каждую страницу, идентифицирует таблицы и извлекает отдельные строки и ячейки, сохраняя их структуру. Ниже представлены шаги по извлечению таблиц из документа PDF с использованием Aspose.PDF for Python.
Шаги для извлечения таблиц из PDF в Python
- Загрузите PDF файл, содержащий таблицы, с помощью класса
Document
. - Пройдите по коллекции
pages
документа, чтобы обработать каждую страницу отдельно. - Создайте экземпляр класса
TableAbsorber
, чтобы обнаружить и извлечь таблицы. - Вызовите метод
visit()
, чтобы определить таблицы на текущей странице. - Итерация по списку извлеченных таблиц и получение строк и ячеек.
- Получите
textfragments
каждой ячейки и извлеките текст с помощью свойстваsegments
. - Сохраните извлеченные данные таблицы для дальнейшего анализа или отобразите их в консоли.
# Этот пример кода показывает, как извлекать таблицы из PDF-документа на Python.
import aspose.pdf as ap
# Загрузить PDF файл
document = pdf.Document("sample.pdf")
# Обработать все страницы
for page in document.pages:
# Инициализируйте объект TableAbsorber
absorber = ap.text.TableAbsorber()
# Определите таблицы на текущей странице
absorber.visit(page)
# Перебирать извлеченные таблицы
for table in absorber.table_list:
# Итерируйте через все строки в таблице
for row in table.row_list:
# Перебрать все столбцы в строке
for cell in row.cell_list:
# Fetch the text fragments
text_fragment_collection = cell.text_fragments
# Итерация по текстовым фрагментам
for fragment in text_fragment_collection:
# Print the text
print(fragment.text)
Следуя этим шагам, вы можете эффективно извлекать таблицы из PDF-документов, упрощая обработку и анализ структурированных данных.
Парсинг метаданных PDF: Получение информации о PDF файле в Python
Когда работаешь с PDF-файлами, часто необходимо извлекать метаданные, такие как автор, дата создания, ключевые слова и заголовок. Aspose.PDF for Python делает это простым, предоставляя доступ к объекту DocumentInfo через свойство Info
класса Document
. Это позволяет программно извлекать основные свойства документа.
Шаги для разбора метаданных PDF
- Используйте класс
Document
для открытия нужного PDF-файла. - Получите объект DocumentInfo, используя свойство
info
. - Получите конкретные данные, такие как автор, дата создания, название, тема и ключевые слова.
- Распечатайте метаданные или сохраните их для дальнейшей обработки.
Следующий скрипт на Python демонстрирует, как извлекать и отображать ключевую информацию из PDF-файла на Python:
# Этот пример кода показывает, как извлечь информацию о файле в Python
import aspose.pdf as ap
# Загрузите PDF-документ
document = ap.Document("Sample.pdf")
# Получить информацию о документе
doc_info = document.info
# Отобразить метаданные документа
print(f"Author: {doc_info.author}")
print(f"Creation Date: {doc_info.creation_date}")
print(f"Keywords: {doc_info.keywords}")
print(f"Modify Date: {doc_info.mod_date}")
print(f"Subject: {doc_info.subject}")
print(f"Title: {doc_info.title}")
Парсинг изображений из PDF файла с использованием Python
Мы можем анализировать PDF-документ и эффективно извлекать изображения, встроенные в документ. Мы можем извлекать изображения высокого качества с конкретных страниц и сохранять их отдельно для дальнейшего использования.
Каждая страница PDF хранит свои изображения в коллекции ресурсов, в частности, внутри коллекции XImage
. Чтобы извлечь изображение, получите доступ к нужной странице, извлеките изображение из коллекции Images
, используя его индекс, и сохраните его.
Шаги для извлечения изображений из PDF в Python
- Загрузите PDF-файл, содержащий изображение, с помощью класса
Document
. - Извлеките конкретную страницу, с которой вы хотите получить изображение.
- Доступ к коллекции
Images
ресурсов страницы и указание индекса изображения. - Сохраните извлеченное изображение, используя поток.
Следующий пример кода показывает, как извлекать изображения из PDF в Python.
# Этот пример кода показывает, как извлекать изображения из PDF в Python
import aspose.pdf as ap
# Open document
document = ap.Document("Sample.pdf")
# Извлеките определённое изображение (первое изображение с первой страницы)
x_image = document.pages[1].resources.images[1]
# Определите путь к выходному изображению
output_image_path = "OutputImage.jpg"
# Сохранить извлечённое изображение
with open(output_image_path, "wb") as output_image:
output_image.write(x_image.to_stream().read())
Этот метод обеспечивает простой и эффективный способ извлечения изображений из PDF-файлов, сохраняя их качество. С помощью Aspose.PDF for Python вы можете автоматизировать извлечение изображений для различных приложений, таких как документ processing , архивирование данных и анализ содержания.
Как разобрать аннотации PDF в Python
Аннотации в PDF-файлах улучшают взаимодействие с документом, добавляя выделения, фигуры и стикеры. Каждый тип аннотации служит конкретной цели, и Aspose.PDF for Python упрощает их извлечение для анализа или обработки.
- Парсинг текстовых аннотаций из PDF в Python
- Парсинг выделенного текста из PDF в Python
- Парсинг аннотаций рисунков PDF в Python
- Как распарсить аннотации ссылок PDF в Python
Парсинг текстовых аннотаций из PDF в Python
PDF документы часто содержат текстовые аннотации, которые служат в качестве комментариев или заметок, прикреплённых к определённым местам на странице. Когда они свернуты, эти аннотации появляются как иконки, а когда они развернуты, они отображают текст в всплывающем окне. Каждая страница в PDF имеет свою собственную коллекцию аннотаций, которая содержит все аннотации, специфичные для этой страницы. Используя Aspose.PDF for Python, вы можете эффективно извлекать текстовые аннотации из PDF файла.
Шаги для парсинга текстовых аннотаций из PDF
- Загрузите PDF-документ с классом
Document
. - Получите свойство
annotations
конкретной страницы, чтобы получить все аннотации на этой странице. - Итерация по аннотациям и фильтрация тех, которые с
AnnotationType.TEXT
. - Извлеките соответствующую информацию, такую как позиция аннотации (
rect
), для дальнейшей обработки или отображения.
import aspose.pdf as ap
# Загрузите PDF документ
document = ap.Document("annotations.pdf")
# Переберите все аннотации на первой странице
for annotation in document.pages[1].annotations:
if annotation.annotation_type == ap.annotations.AnnotationType.TEXT:
# Печать деталей аннотации
print(f"Title: {annotation.full_name}")
print(f"Contents: {annotation.contents}")
print(f"Annotation Rectangle: {annotation.rect}")
Следуя этим шагам, вы можете эффективно извлекать и обрабатывать текстовые аннотации из PDF-документов на Python.
Узнайте больше о работе с текстовыми аннотациями PDF в Python, посетив официальный справочник.
Парсить выделенный текст из PDF в Python
Во многих случаях вам может понадобиться извлечь только выделенный текст из PDF, а не весь контент. Независимо от того, анализируете ли вы важные заметки, подводите ли итоги ключевым моментам или автоматизируете обработку документов, Aspose.PDF for Python упрощает эффективное извлечение выделенного текста.
Выделенные аннотации отмечают важные текстовые отрывки, часто используемые для обзоров или учебных заметок. Вы можете извлекать выделенный текст и его свойства, такие как цвет и позиция, с помощью класса HighlightAnnotation
.
Мы можем анализировать аннотации выделенного текста в PDF-документе, следуя указанным ранее шагам. Однако нам просто нужно упомянуть AnnotationType.HIGHLIGHT
на шаге 3.
Следующий пример демонстрирует, как фильтровать и извлекать выделенный текст из PDF.
import aspose.pdf as ap
# Загрузите PDF-документ
document = ap.Document("annotations.pdf")
# Переберите все аннотации на первой странице
for annotation in document.pages[1].annotations:
if annotation.annotation_type == ap.annotations.AnnotationType.HIGHLIGHT:
# Вывести информацию об аннотации
print(f"Title: {annotation.full_name}")
print(f"Annotation Rectangle: {annotation.rect}")
Узнайте больше о работе с PDF Highlights Annotation в Python, посетив официальный справочник.
Парсинг аннотаций фигур в PDF на Python
Аннотации фигур включают графические элементы, такие как формы, рисунки или штампы, которые используются для акцентов или объяснений. Извлечение этих аннотаций включает в себя идентификацию InkAnnotation
или StampAnnotation
объектов и получение их путей рисования или изображений.
Чтобы разобрать аннотации линий в документе PDF, выполните ранее изложенные шаги. Единственное изменение, которое необходимо внести, это указать AnnotationType.LINE
на шаге 3.
Следующий пример демонстрирует, как анализировать аннотации линий в PDF, используя Python.
import aspose.pdf as ap
# Загрузите PDF-документ
document = ap.Document("annotations.pdf")
# Пройдитесь по всем аннотациям на первой странице
for annotation in document.pages[1].annotations:
if annotation.annotation_type == ap.annotations.AnnotationType.LINE:
# Распечатать аннотационные данные
print(f"Annotation Rectangle: {annotation.rect}")
Читайте больше о работе с аннотациями PDF фигур в Python тут.
Как анализировать аннотации ссылок в PDF на Python
Аннотации ссылок в PDF позволяют пользователям бесшовно перемещаться внутри документа, открывать внешние файлы или посещать веб-страницы непосредственно из PDF. Эти гиперссылки увеличивают интерактивность и улучшают пользовательский опыт, обеспечивая быстрый доступ к дополнительной информации.
Чтобы извлечь аннотации ссылок из PDF, следуйте тем же шагам, что и ранее, но на шаге 3 убедитесь, что вы указываете AnnotationType.LINK
. Это гарантирует, что будут извлечены только аннотации ссылок.
Следующий пример кода показывает, как парсить аннотации ссылок в PDF с использованием Python.
import aspose.pdf as ap
# Загрузите PDF-документ
document = ap.Document("annotations.pdf")
# Пройдите через все аннотации на первой странице
for annotation in document.pages[1].annotations:
if annotation.annotation_type == ap.annotations.AnnotationType.LINK:
# Печать аннотационных данных
print(f"Annotation Rectangle: {annotation.rect}")
Используя Aspose.PDF for Python, вы можете эффективно извлекать и манипулировать аннотациями ссылок для различных случаев использования, таких как индексирование документов или улучшение навигации.
Прочитайте полные детали о обработке аннотаций ссылок в PDF здесь.
Заключение
Aspose.PDF for Python - это лучшая библиотека парсинга PDF на Python для разработчиков, которым нужно надежное, эффективное и многофункциональное решение для парсинга PDF файлов. Независимо от того, нужно ли вам парсить текст, таблицы, изображения, метаданные или аннотации, Aspose.PDF предоставляет необходимые инструменты.
Попробуйте предоставленные образцы кода и начните парсить PDF-файлы, упрощая свои задачи по парсингу PDF в Python!
В случае любых вопросов или необходимости в дополнительной помощи, пожалуйста, не стесняйтесь обращаться на наш free support forum.