Come fare l’estrazione di tabelle PDF in Java con GroupDocs.Parser

Estrarre tabelle da file PDF è una necessità frequente quando è necessario trasformare documenti statici in dati strutturati. In questo tutorial imparerai how to extract tables da PDF usando la libreria GroupDocs.Parser per Java. Copriremo la configurazione dell’ambiente, la configurazione del layout delle tabelle e come export pdf tables csv per l’elaborazione a valle. Alla fine, sarai in grado di integrare un’estrazione di tabelle robusta in qualsiasi pipeline di dati basata su Java.

Risposte rapide

  • Qual è la libreria principale? GroupDocs.Parser for Java
  • Posso estrarre tabelle da PDF scansionati? Solo dopo OCR; vedi la nota “extract tables scanned pdf” qui sotto
  • È necessaria una licenza? Una licenza di prova funziona per lo sviluppo; è richiesta una licenza completa per la produzione
  • Quale versione di Java è richiesta? Java 8 o superiore
  • È supportata l’elaborazione batch? Sì – l’API è ottimizzata per estrazioni su larga scala

Cos’è l’estrazione di tabelle PDF in Java?

L’estrazione di tabelle PDF in Java è il processo di individuare programmaticamente strutture tabulari all’interno di un PDF, interpretare i confini delle celle e recuperare il testo in un formato leggibile da macchine, come CSV o Excel. Questo consente analisi, reportistica o attività di migrazione a valle senza dover copiare‑incollare manualmente.

Perché usare GroupDocs.Parser per l’estrazione di tabelle PDF in Java?

GroupDocs.Parser offre accurate rilevazioni di layout per oltre 50 + formati di input e output e può elaborare PDF di centinaia di pagine mantenendo l’uso di memoria sotto i 200 MB. Supporta lavori batch, offre una semplice dipendenza Maven e si integra senza problemi con GroupDocs OCR per scenari di documenti scansionati.

Prerequisiti

Prima di iniziare, assicurati di avere quanto segue:

  • Java 8+ installato e configurato nel tuo IDE o tool di build.
  • Maven per la gestione delle dipendenze.
  • Accesso a una licenza GroupDocs.Parser (di prova o completa).

Librerie e dipendenze richieste

Avrai bisogno di:

  • Libreria GroupDocs.Parser per Java (versione 25.5 o successiva).
  • Maven installato sul tuo sistema per la gestione delle dipendenze.

Configurazione dell’ambiente

Assicurati che l’ambiente di sviluppo sia configurato con una versione compatibile di Java (Java 8 o superiore).

Prerequisiti di conoscenza

Una comprensione di base della programmazione Java e familiarità con la gestione dei file in Java saranno utili.

Configurazione di GroupDocs.Parser per Java

Per iniziare a usare GroupDocs.Parser, integralo nel tuo progetto come segue:

Configurazione Maven
Aggiungi la seguente configurazione al tuo file pom.xml per includere GroupDocs.Parser come dipendenza:

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

Download diretto
In alternativa, scarica l’ultima versione di GroupDocs.Parser per Java da GroupDocs releases.

Acquisizione della licenza

Inizia con una prova gratuita, ottieni una licenza temporanea o acquista una licenza completa. Visita la pagina di licenza GroupDocs per i dettagli.

Inizializzazione e configurazione di base

Inizializza GroupDocs.Parser nella tua applicazione Java come segue:

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());
        }
    }
}

Guida all’implementazione

Esaminiamo ciascuna funzionalità necessaria per padroneggiare how to extract tables da un PDF.

Funzione 1: analisi del documento con GroupDocs

Panoramica
Per interagire con un documento PDF, crea un’istanza della classe Parser.
Parser è la classe di ingresso per la lettura del contenuto PDF in GroupDocs.Parser. Questo consente varie operazioni sul documento.

Creazione di un’istanza parser
La classe Parser è il punto di ingresso per la lettura del contenuto PDF in GroupDocs.Parser. Carica il documento in memoria ed espone metodi per estrarre testo, tabelle e altre strutture.

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());
        }
    }
}

Funzione 2: verifica della capacità di estrazione delle tabelle

Panoramica
Prima di estrarre le tabelle, verifica che il PDF supporti l’estrazione delle tabelle.

Verifica del supporto alle tabelle
Il metodo hasTables() restituisce un booleano che indica se il PDF caricato contiene dati tabulari rilevabili.
hasTables() controlla se il documento contiene tabelle.

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());
        }
    }
}

Funzione 3: configurazione del layout della tabella

Panoramica
Configurare il layout delle tue tabelle può migliorare la precisione dell’estrazione dei dati.

Impostazione del layout della tabella
TemplateTableLayout definisce le larghezze di colonna e le altezze di riga previste.
TemplateTableLayout specifica larghezze di colonna e altezze di riga personalizzate per il rilevamento delle tabelle. Regolare questi valori aiuta il motore ad allineare i confini delle celle con la griglia visiva.

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));
    }
}

Funzione 4: configurazione delle opzioni di estrazione della tabella

Panoramica
Imposta le opzioni per estrarre tabelle con configurazioni specifiche per migliorare la precisione dell’estrazione.

Configurazione delle opzioni di estrazione
TableExtractionOptions consente di specificare se includere le righe di intestazione, unire le celle o ignorare le righe vuote.
TableExtractionOptions configura il comportamento di estrazione, ad esempio includendo intestazioni o unendo celle.

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);
    }
}

Funzione 5: estrazione delle tabelle da un documento

Panoramica
Estrai le tabelle usando le opzioni configurate e processale secondo necessità.

Processo di estrazione
Il metodo getTables() restituisce una collezione di oggetti Table, ciascuno rappresentante una tabella rilevata nelle pagine richieste.
getTables() recupera tutte le tabelle rilevate dal documento.
Table rappresenta una singola tabella estratta con righe e celle.

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());
        }
    }
}

Funzione 6: iterazione su righe e colonne della tabella

Panoramica
Dopo l’estrazione, itera su righe e colonne per accedere alle singole celle.

Itera e accedi alle celle
Ogni Table fornisce getRows() e ogni Row fornisce getCells(). Puoi leggere il testo della cella tramite getText() e scriverlo in CSV o in qualsiasi altro formato.
Row rappresenta una singola riga all’interno di una Table.
getRows() restituisce l’elenco delle righe in una tabella.
getCells() restituisce le celle di una riga.
getText() recupera il contenuto testuale di una cella.

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

Problemi comuni e soluzioni

ProblemaPerché accadeSuggerimento
Nessuna tabella restituitaIl PDF è scansionato (basato su immagine)Esegui prima l’OCR o utilizza GroupDocs OCR prima dell’analisi.
Allineamento delle colonne erratoLe coordinate del layout sono sbagliateAffina i valori di TemplateTableLayout per corrispondere alla griglia visiva.
Picchi di memoria su PDF grandiParser carica l’intero documento in memoriaElabora le pagine in batch e chiudi il Parser dopo ogni batch.

Domande frequenti

1. Posso estrarre tabelle da PDF scansionati o solo da PDF digitali?

Risposta: GroupDocs.Parser funziona principalmente con PDF digitali, selezionabili, che contengono testo incorporato. Per i PDF scansionati, è necessario eseguire prima l’OCR — con GroupDocs OCR o un altro motore OCR — in modo che il testo diventi ricercabile prima dell’estrazione delle tabelle.

2. Come gestire tabelle con layout complessi o celle unite?

Risposta: Personalizza TemplateTableLayout con coordinate precise di colonne e righe, oppure abilita il flag mergeCells in TableExtractionOptions. Potrebbe essere necessario un post‑processing per interpretare correttamente le regioni unite.

3. GroupDocs.Parser è adatto a documenti di grandi dimensioni o all’elaborazione batch?

Risposta: Sì. La libreria è progettata per scenari ad alto rendimento e può elaborare PDF con centinaia di pagine mantenendo un consumo di memoria ridotto. Usa le opzioni di intervallo di pagine e disponi dell’istanza Parser dopo ogni batch per massimizzare le prestazioni.

4. Posso esportare i dati delle tabelle estratte in formati come CSV o Excel?

Risposta: GroupDocs.Parser restituisce i dati grezzi della tabella (righe e celle). Puoi facilmente scrivere questi dati in CSV usando OpenCSV o in Excel usando Apache POI. Questo soddisfa il caso d’uso export pdf tables csv senza licenze aggiuntive.

5. È supportata l’estrazione di tabelle da più pagine in un’unica operazione?

Risposta: Assolutamente. Chiama parser.getTables(pageOptions) con un intervallo di pagine o itera su tutte le pagine. L’API aggrega le tabelle tra le pagine, permettendoti di costruire un unico dataset consolidato.

Conclusione

L’estrazione di tabelle PDF in Java diventa semplice con GroupDocs.Parser. Inizializzando un Parser, confermando il supporto alle tabelle, configurando layout e opzioni di estrazione e iterando sugli oggetti Table risultanti, puoi trasformare PDF statici in file CSV o Excel strutturati. Il design orientato alle prestazioni della libreria, il supporto per oltre 50 formati e l’integrazione OCR senza soluzione di continuità la rendono una scelta ideale per l’automazione di fatture, la migrazione di dati e le pipeline di analisi su larga scala. Con i passaggi descritti sopra, sei pronto a incorporare un’estrazione di tabelle affidabile in qualsiasi applicazione Java.


Ultimo aggiornamento: 2026-09-17
Testato con: GroupDocs.Parser 25.5 (Java)
Autore: GroupDocs

Tutorial correlati