Comment extraire des tables PDF en Java avec GroupDocs.Parser

Extraire des tables à partir de fichiers PDF est une exigence fréquente lorsque vous devez transformer des documents statiques en données structurées. Dans ce tutoriel, vous apprendrez comment extraire des tables des PDF en utilisant la bibliothèque GroupDocs.Parser pour Java. Nous couvrirons la configuration de l’environnement, la configuration de la mise en page des tables, et comment exporter des tables PDF en CSV pour le traitement en aval. À la fin, vous serez capable d’intégrer une extraction de tables robuste dans tout pipeline de données basé sur Java.

Réponses rapides

  • Quelle est la bibliothèque principale ? GroupDocs.Parser for Java
  • Puis-je extraire des tables de PDF numérisés ? Seulement après OCR ; voir la note « extract tables scanned pdf » ci‑dessous
  • Ai-je besoin d’une licence ? Une licence d’essai fonctionne pour le développement ; une licence complète est requise pour la production
  • Quelle version de Java est requise ? Java 8 ou supérieure
  • Le traitement par lots est‑il pris en charge ? Oui – l’API est optimisée pour l’extraction à grande échelle

Qu’est-ce que l’extraction de tables PDF en Java ?

L’extraction de tables PDF en Java est le processus consistant à localiser programmétiquement les structures tabulaires à l’intérieur d’un PDF, à interpréter les limites des cellules et à récupérer le texte dans un format lisible par machine tel que CSV ou Excel. Cela permet des analyses, des rapports ou des tâches de migration en aval sans copier‑coller manuel.

Pourquoi utiliser GroupDocs.Parser pour l’extraction de tables PDF en Java ?

GroupDocs.Parser fournit une détection précise de la mise en page pour plus de 50 + formats d’entrée et de sortie et peut traiter des PDF de plusieurs centaines de pages tout en maintenant l’utilisation de la mémoire en dessous de 200 Mo. Il prend en charge les travaux par lots, offre une dépendance Maven simple, et s’intègre parfaitement avec GroupDocs OCR pour les scénarios de documents numérisés.

Prérequis

Avant de commencer, assurez-vous de disposer de ce qui suit :

  • Java 8+ installé et configuré dans votre IDE ou outil de construction.
  • Maven pour la gestion des dépendances.
  • Accès à une licence GroupDocs.Parser (essai ou complète).

Bibliothèques et dépendances requises

Vous aurez besoin de :

  • Bibliothèque GroupDocs.Parser pour Java (version 25.5 ou ultérieure).
  • Maven installé sur votre système pour la gestion des dépendances.

Configuration de l’environnement

Assurez-vous que votre environnement de développement est configuré avec une version compatible de Java (Java 8 ou supérieure).

Prérequis de connaissances

Une compréhension de base de la programmation Java et une familiarité avec la gestion des fichiers en Java seront bénéfiques.

Configuration de GroupDocs.Parser pour Java

Pour commencer à utiliser GroupDocs.Parser, intégrez-le à votre projet comme suit :

Configuration Maven
Ajoutez la configuration suivante à votre fichier pom.xml pour inclure GroupDocs.Parser en tant que dépendance :

<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>

Téléchargement direct
Alternativement, téléchargez la dernière version de GroupDocs.Parser pour Java depuis GroupDocs releases.

Acquisition de licence

Commencez avec un essai gratuit, obtenez une licence temporaire, ou achetez une licence complète. Consultez la page de licence GroupDocs pour plus de détails.

Initialisation et configuration de base

Initialisez GroupDocs.Parser dans votre application Java comme suit :

import com.groupdocs.parser.Parser;

public class DocumentParser {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Ready to perform operations on the document
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

Guide d’implémentation

Passons en revue chaque fonctionnalité que vous devez maîtriser comment extraire des tables d’un PDF.

Fonctionnalité 1 : analyse de document avec GroupDocs

Vue d’ensemble
Pour interagir avec un document PDF, créez une instance de la classe Parser.
Parser est la classe d’entrée pour lire le contenu PDF dans GroupDocs.Parser. Cela permet diverses opérations sur le document.

Création d’une instance de parser
La classe Parser est le point d’entrée pour lire le contenu PDF dans GroupDocs.Parser. Elle charge le document en mémoire et expose des méthodes pour extraire le texte, les tables et d’autres structures.

import com.groupdocs.parser.Parser;

public class CreateParserInstance {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Document is ready for operations
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

Fonctionnalité 2 : vérification de la capacité d’extraction de tables

Vue d’ensemble
Avant d’extraire des tables, vérifiez que le PDF prend en charge l’extraction de tables.

Vérification du support des tables
La méthode hasTables() renvoie un booléen indiquant si le PDF chargé contient des données tabulaires détectables.
hasTables() vérifie si le document contient des tables.

import com.groupdocs.parser.Parser;

public class CheckTableSupport {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            boolean isTablesSupported = parser.getFeatures().isTables();
            
            if (!isTablesSupported) {
                System.out.println("Document doesn't support tables extraction.");
            }
        } catch (Exception e) {
            System.err.println("Error checking table extraction capability: " + e.getMessage());
        }
    }
}

Fonctionnalité 3 : configuration de la mise en page des tables

Vue d’ensemble
Configurer la mise en page de vos tables peut améliorer la précision de l’extraction des données.

Configuration de la mise en page des tables
TemplateTableLayout définit les largeurs de colonnes et hauteurs de lignes attendues.
TemplateTableLayout spécifie des largeurs de colonnes et hauteurs de lignes personnalisées pour la détection des tables. Ajuster ces valeurs aide le moteur à aligner les limites des cellules avec la grille visuelle.

import com.groupdocs.parser.templates.TemplateTableLayout;
import java.util.Arrays;

public class ConfigureTableLayout {
    public static void main(String[] args) {
        final double[] columnWidths = {50.0, 95.0, 275.0, 415.0, 485.0, 545.0};
        final double[] rowHeights = {325.0, 340.0, 365.0, 395.0};

        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(columnWidths), 
                Arrays.asList(rowHeights));
    }
}

Fonctionnalité 4 : configuration des options d’extraction de tables

Vue d’ensemble
Configurez les options pour extraire les tables avec des configurations spécifiques afin d’améliorer la précision de l’extraction.

Configuration des options d’extraction
TableExtractionOptions vous permet de spécifier s’il faut inclure les lignes d’en-tête, fusionner les cellules, ou ignorer les lignes vides.
TableExtractionOptions configure le comportement d’extraction comme l’inclusion des en-têtes ou la fusion des cellules.

import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.templates.TemplateTableLayout;

public class SetExtractionOptions {
    public static void main(String[] args) {
        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}), 
                Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0}));

        PageTableAreaOptions options = new PageTableAreaOptions(layout);
    }
}

Fonctionnalité 5 : extraction de tables d’un document

Vue d’ensemble
Extrayez les tables en utilisant les options configurées et traitez-les selon les besoins.

Processus d’extraction
La méthode getTables() renvoie une collection d’objets Table, chacun représentant une table détectée sur les pages demandées.
getTables() récupère toutes les tables détectées du document.
Table représente une table extraite unique avec des lignes et des cellules.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.data.PageTableArea;

public class ExtractTables {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        PageTableAreaOptions options = new PageTableAreaOptions(/* layout from previous feature */);

        try (Parser parser = new Parser(filePath)) {
            Iterable<PageTableArea> tables = parser.getTables(options);
            
            for (PageTableArea table : tables) {
                // Process each table as needed
            }
        } catch (Exception e) {
            System.err.println("Error extracting tables: " + e.getMessage());
        }
    }
}

Fonctionnalité 6 : itération sur les lignes et colonnes d’une table

Vue d’ensemble
Après l’extraction, itérez sur les lignes et colonnes pour accéder aux cellules individuelles.

Itérer et accéder aux cellules
Chaque Table fournit getRows() et chaque Row fournit getCells(). Vous pouvez lire le texte de la cellule via getText() et l’écrire en CSV ou tout autre format.
Row représente une seule ligne au sein d’une Table.
getRows() renvoie la liste des lignes d’une table.
getCells() renvoie les cellules d’une ligne.
getText() récupère le contenu textuel d’une cellule.

import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.PageTableAreaCell;

public class IterateTables {
    public static void main(String[] args) {
        PageTableArea table = /* reference to a specific PageTableArea object */;

        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) {
                    // Process the cell text as needed
                }
            }
        }
    }
}

Problèmes courants et solutions

ProblèmePourquoi cela se produitAstuce
Aucune table renvoyéeLe PDF est numérisé (basé sur une image)Exécutez d’abord l’OCR ou utilisez GroupDocs OCR avant l’analyse.
Alignement de colonne incorrectLes coordonnées de mise en page sont incorrectesAffinez les valeurs de TemplateTableLayout pour correspondre à la grille visuelle.
Pics de mémoire sur de gros PDFParser charge tout le document en mémoireTraitez les pages par lots et fermez le Parser après chaque lot.

Questions fréquemment posées

1. Puis-je extraire des tables de PDF numérisés ou uniquement de PDF numériques ?

Réponse : GroupDocs.Parser fonctionne principalement avec des PDF numériques sélectionnables contenant du texte intégré. Pour les PDF numérisés, vous devez d’abord exécuter l’OCR — soit avec GroupDocs OCR, soit avec un autre moteur OCR — afin que le texte devienne recherchable avant l’extraction de tables.

2. Comment gérer les tables avec des mises en page complexes ou des cellules fusionnées ?

Réponse : Personnalisez le TemplateTableLayout avec des coordonnées précises de colonnes et de lignes, ou activez le drapeau mergeCells dans TableExtractionOptions. Un post‑traitement peut être nécessaire pour interpréter correctement les régions fusionnées.

3. GroupDocs.Parser est‑il adapté aux documents volumineux ou au traitement par lots ?

Réponse : Oui. La bibliothèque est conçue pour des scénarios à haut débit et peut traiter des PDF de plusieurs centaines de pages tout en maintenant une faible consommation de mémoire. Utilisez les options de plage de pages et libérez l’instance Parser après chaque lot pour maximiser les performances.

4. Puis-je exporter les données de table extraites vers des formats comme CSV ou Excel ?

Réponse : GroupDocs.Parser renvoie les données brutes de la table (lignes et cellules). Vous pouvez facilement écrire ces données en CSV avec OpenCSV ou en Excel avec Apache POI. Cela répond au cas d’utilisation export pdf tables csv sans licence supplémentaire.

5. Existe‑t‑il une prise en charge de l’extraction de tables depuis plusieurs pages en une seule fois ?

Réponse : Absolument. Appelez parser.getTables(pageOptions) avec une plage de pages ou itérez sur toutes les pages. L’API agrège les tables sur plusieurs pages, vous permettant de créer un jeu de données consolidé.

Conclusion

L’extraction de tables PDF en Java devient simple avec GroupDocs.Parser. En initialisant un Parser, en confirmant le support des tables, en configurant la mise en page et les options d’extraction, et en itérant sur les objets Table résultants, vous pouvez transformer des PDF statiques en fichiers CSV ou Excel structurés. La conception axée sur la performance de la bibliothèque, son support de plus de 50 formats et son intégration transparente avec l’OCR en font un choix idéal pour l’automatisation des factures, la migration de données et les pipelines d’analytique à grande échelle. Avec les étapes décrites ci‑dessus, vous êtes prêt à intégrer une extraction de tables fiable dans toute application Java.


Dernière mise à jour : 2026-09-17
Testé avec : GroupDocs.Parser 25.5 (Java)
Auteur : GroupDocs

Tutoriels associés