Как выполнить извлечение таблиц из PDF на Java с помощью GroupDocs.Parser

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

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

  • Может ли GroupDocs.Parser читать таблицы из PDF? Да — он предоставляет нативное извлечение таблиц из PDF и многих других форматов.
  • Нужна ли лицензия для разработки? Вы можете начать с бесплатной пробной версии; лицензия требуется для использования в продакшене.
  • Какая версия Java требуется? JDK 8 или выше.
  • Является ли Maven единственным способом добавить библиотеку? Нет — вы также можете скачать JAR‑файл напрямую.
  • Будет ли работать с файлами, защищёнными паролем? Да, просто передайте пароль при создании экземпляра Parser.

Что такое извлечение таблиц из PDF на Java?

Java pdf table extraction — это процесс программного чтения табличных структур, встроенных в файлы PDF (или Word), с помощью кода на Java. GroupDocs.Parser абстрагирует низкоуровневый парсинг и возвращает каждую ячейку в виде простого текста, готового к аналитике или импорту в базу данных. Поддерживаются как сканированные, так и нативные PDF, обработка объединённых ячеек и многостраничных таблиц происходит без дополнительной настройки.

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

GroupDocs.Parser поддерживает 50+ форматов ввода и вывода — включая PDF, DOCX, PPTX и HTML — поэтому вы можете использовать один и тот же API для разных типов документов. Его извлечение, основанное на макете, обеспечивает до 98 % точности при работе со сложными таблицами, а библиотека обрабатывает многосотстраничные PDF, используя потоковую передачу, чтобы удерживать потребление памяти ниже 200 МБ.

Необходимые условия

  • Установлен Java Development Kit (JDK) 8+.
  • Maven (или ручное управление JAR‑файлами) для управления зависимостями.
  • Базовое знакомство с синтаксисом Java и объектно‑ориентированными концепциями.

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

Настройка Maven

Если вы управляете зависимостями через 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>

Прямое скачивание

Кроме того, загрузите последнюю версию напрямую с GroupDocs.Parser for Java releases. Следуйте инструкциям по установке, размещённым на их сайте.

Приобретение лицензии

Для полного доступа к функциям GroupDocs.Parser рассмотрите возможность получения лицензии. Вы можете начать с бесплатной пробной версии или получить временную лицензию, следуя инструкциям на purchase page.

После того как всё настроено, перейдём к реализации java pdf table extraction.

Руководство по реализации

Проверка поддержки документа для извлечения таблиц

Поддерживает ли этот документ извлечение таблиц?
Сначала необходимо убедиться, что целевой файл можно обрабатывать для извлечения таблиц. GroupDocs.Parser предоставляет флаг функции, который сообщает, доступно ли извлечение таблиц для данного формата, предотвращая ненужные ошибки во время выполнения.

  • Инициализация Parser: Класс Parser — точка входа, загружающая документ в память.
  • Проверка функции: Вызов parser.getFeatures().isTables(); возвращает true, если извлечение таблиц поддерживается.
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;

public class TableExtractionCheck {
    public static void main(String[] args) {
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
            // Check if the document supports table extraction.
            if (!parser.getFeatures().isTables()) {
                System.out.println("Document doesn't support table extraction.");
            } else {
                System.out.println("Document supports table extraction. Proceeding...");
                extractTablesFromDocument();
            }
        }
    }
}

Создание макета таблицы для извлечения

Как определить точный макет таблицы?
Макет указывает движку, где начинаются столбцы и строки, что критично для сложных PDF, где автоматическое определение может пропустить объединённые ячейки или нерегулярные отступы.

  • Координаты столбцов и строк: Укажите начальные/конечные позиции по оси X для каждого столбца и позиции по оси Y для каждой строки.
  • TemplateTableLayout: Этот объект хранит карту координат и позже передаётся в вызов извлечения.
import com.groupdocs.parser.templates.TemplateTableLayout;

public class TableExtractionSetup {
    public static TemplateTableLayout createTemplateTableLayout() {
        return new TemplateTableLayout(
            java.util.Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}),
            java.util.Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0})
        );
    }
}

Извлечение таблиц со страниц документа

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

  • Итерация по страницам: Цикл по parser.getPages() для обработки многостраничных PDF.
  • Извлечение таблиц: Используйте parser.getTables(pageIndex, options), где options включает ранее определённый макет.
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.options.PageTableAreaOptions;

public class TableExtractionProcess {
    public static void extractTablesFromDocument() {
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
            IDocumentInfo documentInfo = parser.getDocumentInfo();
            if (documentInfo.getPageCount() > 0) {
                PageTableAreaOptions options = new PageTableAreaOptions(TableExtractionSetup.createTemplateTableLayout());

                for (int pageIndex = 0; pageIndex < documentInfo.getPageCount(); pageIndex++) {
                    Iterable<PageTableArea> tables = parser.getTables(pageIndex, options);
                    
                    for (PageTableArea table : tables) {
                        for (int row = 0; row < table.getRowCount(); row++) {
                            for (int column = 0; column < table.getColumnCount(); column++) {
                                PageTableAreaCell cell = table.getCell(row, column);
                                if (cell != null) {
                                    System.out.print(cell.getText() + " | ");
                                }
                            }
                            System.out.println();
                        }
                        System.out.println();
                    }
                }
            } else {
                System.out.println("Document has no pages.");
            }
        }
    }
}

Практические применения извлечения таблиц из PDF на Java

Реализация извлечения таблиц может быть полезна в нескольких реальных сценариях:

  1. Анализ данных: Выборка структурированных данных из финансовых отчётов или научных статей для последующей аналитики.
  2. Обработка счетов‑фактур: Автоматическое извлечение позиций из счетов и передача данных в бухгалтерские системы.
  3. Управление документами: Индексация извлечённых данных таблиц вместе с полным текстом для улучшения поисковой способности в DMS‑решениях.

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

Для оптимальной работы с GroupDocs.Parser:

  • Оптимизация использования памяти: Выделите достаточный объём кучи (например, -Xmx2g) для больших PDF.
  • Пакетная обработка: Группируйте несколько документов в одну задачу, чтобы снизить накладные расходы на прогрев JVM.
  • Эффективные макеты: Точные координаты уменьшают область сканирования, ускоряя извлечение до 30 %.

Распространённые проблемы и решения

ПроблемаПричинаРешение
Таблицы не возвращаютсяКоординаты макета не совпадают с реальными позициями таблицыПроверьте координаты столбцов/строк в PDF, используя линейку в просмотрщике.
Ошибки «Out‑of‑memory»Очень большой документ загружается полностьюИспользуйте потоковый режим или увеличьте размер кучи JVM (-Xmx).
Пустые ячейкиТаблица содержит объединённые ячейки, не охваченные макетомСкорректируйте макет, включив границы объединённых ячеек, либо используйте извлечение без макета.

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

Q: Могу ли я извлекать таблицы из других форматов документов?
A: Да, GroupDocs.Parser поддерживает DOCX, PPTX, TXT и многие другие форматы. Обратитесь к официальной документации для полного списка.

Q: Нужна ли лицензия для сборок разработки?
A: Бесплатная пробная лицензия достаточна для разработки и тестирования. Коммерческая лицензия требуется для продакшен‑развёртываний.

Q: Как GroupDocs.Parser обрабатывает PDF, защищённые паролем?
A: Передайте пароль при создании объекта Parser, например new Parser(filePath, password). Библиотека автоматически расшифрует файл.

Q: Возможно ли извлекать таблицы без определения макета?
A: Да, можно вызвать parser.getTables(pageIndex) без параметров, но извлечение на основе макета обеспечивает более высокую точность для сложных таблиц.

Q: Какая версия GroupDocs.Parser совместима с Java 11?
A: Версия 25.5 (используемая в этом руководстве) полностью поддерживает Java 8‑17, включая Java 11.

Заключение

Теперь у вас есть готовый к использованию подход к java pdf table extraction с помощью GroupDocs.Parser. Проверив возможности документа, определив пользовательский TemplateTableLayout и пройдя по страницам, вы сможете надёжно извлекать структурированные данные для любого последующего Java‑процесса.

Следующие шаги

  • Изучите расширенные возможности, такие как слияние таблиц, форматирование ячеек и экспорт в CSV, в documentation.
  • Поэкспериментируйте с различными конфигурациями макетов, чтобы обрабатывать разнообразные дизайны таблиц в вашей коллекции документов.

Last Updated: 2026-09-17
Tested With: GroupDocs.Parser 25.5 for Java
Author: GroupDocs

Связанные руководства