Разбор PDF с помощью Java и GroupDocs.Parser

В этом полном руководстве вы узнаете, как разбирать PDF с помощью Java используя мощную библиотеку GroupDocs.Parser. Независимо от того, нужно ли вам извлекать номера счетов, вынимать таблицы или собирать любые другие данные из PDF‑файлов, это руководство проведёт вас через каждый шаг — от настройки окружения до создания пользовательских шаблонов парсинга, соответствующих точному макету вашего документа.

Быстрые ответы

  • Какую библиотеку следует использовать? GroupDocs.Parser for Java
  • Могу ли я извлекать таблицы из PDF? Yes – use java pdf table extraction features
  • Нужна ли лицензия? A free trial is available; a permanent license is required for production
  • Какая версия Java поддерживается? Java SE 8 or higher
  • Рекомендуется ли Maven? Yes, Maven simplifies dependency management

Введение

Автоматизация извлечения данных из PDF является распространённой задачей для разработчиков, создающих системы выставления счетов, отчётности или агрегации данных. Используя GroupDocs.Parser, вы можете разбирать PDF с помощью Java быстро и надёжно, настраивая процесс извлечения под уникальную структуру ваших документов.

Что такое разбор PDF с помощью Java?

Разбор PDF с помощью Java означает программное чтение содержимого PDF‑файла и извлечение нужных вам фрагментов информации — текста, таблиц, изображений или полей формы — без ручного копирования. GroupDocs.Parser предоставляет высокоуровневый API, который абстрагирует низкоуровневые детали PDF, позволяя сосредоточиться на бизнес‑логике.

Почему стоит использовать GroupDocs.Parser для пользовательских шаблонов?

  • Точность: Определяйте точные координаты или шаблоны regex для захвата нужных данных.
  • Гибкость: Сочетайте поля фиксированных позиций, поля на основе regex и извлечение таблиц в одном шаблоне.
  • Производительность: Оптимизировано для больших документов и пакетной обработки.
  • Удобный для Java: Бесшовно интегрируется с Maven и стандартными Java‑проектами.

Предварительные требования

Прежде чем мы начнём, убедитесь, что у вас есть следующее:

Требуемые библиотеки и версии

  • GroupDocs.Parser for Java: Версия 25.5 или новее.
  • Maven установлен для управления зависимостями.

Требования к настройке окружения

  • Java SE 8+ (рекомендуется Java 11 или новее).
  • IDE или текстовый редактор для разработки на Java (IntelliJ IDEA, Eclipse, VS Code и т.д.).

Требования к знаниям

  • Базовое программирование на Java.
  • Знание структуры PDF и типичных задач парсинга.

Настройка GroupDocs.Parser для Java

Вы можете добавить GroupDocs.Parser в ваш проект либо через Maven, либо загрузив JAR‑файл напрямую.

Использование Maven

Добавьте репозиторий и зависимость в ваш pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

Прямая загрузка

Либо загрузите последнюю JAR‑файл со страницы официальных релизов: GroupDocs.Parser for Java releases.

Шаги получения лицензии

  • Free Trial: Начните с пробной версии, чтобы изучить API.
  • Temporary License: Используйте временный ключ для краткосрочного тестирования.
  • Purchase: Приобретите постоянную лицензию для производственных нагрузок.

Базовая инициализация и настройка

Ниже приведён минимальный пример, открывающий PDF‑файл с помощью GroupDocs.Parser:

import com.groupdocs.parser.Parser;

public class PdfParserExample {
    public static void main(String[] args) {
        try (Parser parser = new Parser("path/to/your/document.pdf")) {
            // Your parsing logic here
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Как разбирать PDF с помощью Java, используя пользовательские шаблоны

Теперь, когда библиотека готова, создадим пользовательский шаблон, который укажет парсеру точные места для поиска данных.

Шаг 1: Определение элементов шаблона

Мы создадим поля для статического названия компании, номера счета на основе regex и таблицы, содержащей детали позиций.

import com.groupdocs.parser.templates.*;

private static Template getTemplate() {
    // Fixed position for "FromCompany"
    TemplateItem fromCompany = new TemplateField(
        new TemplateFixedPosition(new Rectangle(new Point(35, 135), new Size(100, 10))),
        "FromCompany");

    // Regex‑based field for "Invoice Number"
    TemplateItem invoiceNumber = new TemplateField(
        new TemplateRegexPosition("Invoice Number"),
        "InvoiceNumber");
    
    // Linked position for extracting the value next to the label
    TemplateItem invoiceNumberValue = new TemplateField(
        new TemplateLinkedPosition(invoiceNumber,
            new Size(200, 15),
            new TemplateLinkedPositionEdges(false, false, true, false)),
        "InvoiceNumberValue");

    // Define table parameters for line items
    TemplateTableParameters detailsTableParameters = new TemplateTableParameters(
        new Rectangle(new Point(35, 320), new Size(530, 55)), null);

    // Return the assembled template
    return new Template(java.util.Arrays.asList(
        fromCompany,
        invoiceNumber,
        invoiceNumberValue,
        new TemplateTable(detailsTableParameters, "details", null)));
}

Шаг 2: Парсинг документа с использованием шаблона

После подготовки шаблона вызовите parseByTemplate для извлечения данных.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.DocumentData;
import com.groupdocs.parser.data.PageTextArea;

public class PdfParserExample {
    public static void main(String[] args) {
        try (Parser parser = new Parser("path/to/your/document.pdf")) {
            Template template = getTemplate();
            DocumentData data = parser.parseByTemplate(template);

            if (data != null) {
                for (int i = 0; i < data.getCount(); i++) {
                    PageTextArea area = data.get(i).getPageArea() instanceof PageTextArea
                            ? (PageTextArea) data.get(i).getPageArea()
                            : null;
                    System.out.println(data.get(i).getName() + ": " +
                        (area == null ? "Not a template field" : area.getText()));
                }
            } else {
                System.out.println("Parse Document by Template isn't supported.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ключевые параметры конфигурации

  • Fixed Position: Укажите статический текст (например, название компании) с помощью точных координат.
  • Regex Position: Найдите динамический текст, такой как номера счетов, с помощью сопоставления шаблону.
  • Linked Positions: Получите значения, расположенные рядом с известной меткой.
  • TemplateTableParameters: Определите область, содержащую таблицу, чтобы включить java pdf table extraction.

Советы по устранению неполадок

  • Убедитесь, что система координат (points) соответствует макету вашего PDF.
  • Используйте инструменты измерения в PDF‑просмотрщике для точной настройки позиций.
  • Убедитесь, что regex точно отражает формат метки в ваших документах.
  • Проверьте, что все зависимости Maven разрешены и что вы используете правильную версию библиотеки.

Извлечение таблиц из PDF с помощью Java – реальные примеры использования

Извлечение таблиц из PDF часто требуется в финансах и логистике:

  1. Invoice Processing: Извлекать детали позиций, количества и цены в базу данных.
  2. Report Consolidation: Объединять табличные данные из нескольких PDF в один CSV для аналитики.
  3. Compliance Auditing: Автоматически проверять наличие обязательных полей в регуляторных формах.

Соображения по производительности

При работе с большими PDF или пакетной обработкой учитывайте следующие рекомендации:

  • Memory Management: Закрывайте экземпляр Parser сразу же (try‑with‑resources), чтобы освободить нативные ресурсы.
  • Template Optimization: Ограничьте количество полей и делайте области таблиц как можно более компактными.
  • Version Updates: Регулярно обновляйте до последней версии GroupDocs.Parser, чтобы воспользоваться улучшениями производительности.

Часто задаваемые вопросы

Q: Каковы предварительные требования для использования GroupDocs.Parser для Java?
A: Вам нужен Java SE 8+, Maven (или ручное управление JAR), и GroupDocs.Parser 25.5 или новее.

Q: Как создать пользовательский шаблон в GroupDocs.Parser?
A: Определите поля с помощью TemplateFixedPosition, TemplateRegexPosition и TemplateTableParameters, затем передайте шаблон в parser.parseByTemplate.

Q: Можно ли извлекать таблицы из PDF этим способом?
A: Конечно. Используйте TemplateTableParameters для указания области таблицы — это включает java pdf table extraction.

Q: Можно ли разбирать PDF, защищённые паролем?
A: Да. Укажите пароль при создании экземпляра Parser: new Parser("file.pdf", "password").

Q: Как библиотека обрабатывает очень большие документы?
A: API потоково передаёт данные и освобождает нативные ресурсы при закрытии Parser, позволяя обрабатывать большие файлы без исчерпания памяти.

Заключение

Теперь у вас есть прочная база для разбора PDF с помощью Java с использованием возможностей пользовательских шаблонов GroupDocs.Parser. Определяя точные позиции, шаблоны regex и области таблиц, вы можете автоматизировать извлечение данных из счетов, отчётов и любого структурированного PDF‑контента. Продолжайте экспериментировать с различными конфигурациями шаблонов, интегрируйте извлечённые данные в ваши downstream‑системы и делитесь решениями с сообществом разработчиков.


Последнее обновление: 2026-04-05
Тестировано с: GroupDocs.Parser 25.5 for Java
Автор: GroupDocs