Estrai testo da un file PDF in Java

Estrai testo da un file PDF in Java

In questo mondo frenetico, il volume dei dati si sta espandendo in modo esponenziale. I file PDF vengono utilizzati immensamente per archiviare e rappresentare i dati. Diventa difficile scorrere un gran numero di pagine PDF per accedere a paragrafi utili. Pertanto, impareremo come estrarre il testo da un file PDF in Java in modo programmatico. Tuttavia, automatizzare l’intero processo di estrazione del testo farà risparmiare tempo, fatica e porterà efficienza. Utilizzeremo una libreria PDF Java di facile installazione che offre metodi configurabili per lavorare con i file PDF.

I seguenti punti saranno trattati in questo post sul blog:

Libreria Java PDF - fasi di installazione

Puoi installare facilmente questa libreria nella tua applicazione Java scaricando i file jar, oppure puoi seguire le seguenti configurazioni Maven.

Repository

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Dipendenza

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.12</version>
    <classifier>jdk17</classifier>
</dependency>

Estrai testo da un file PDF in Java

In questa sezione scriveremo i passaggi e lo snippet di codice che estrae il testo da tutte le pagine di un documento PDF.

Segui i seguenti passaggi:

  1. Apri un documento PDF creando un oggetto della classe Document.
  2. Inizializza un oggetto della classe TextAbsorber per eseguire l’estrazione del testo.
  3. Chiama il metodo getPages() che accetta l’assorbitore per tutte le pagine.
  4. Ottieni il testo estratto chiamando il metodo getText().
  5. Scrivi il testo estratto nel file e chiudi lo scrittore.

Copia e incolla il seguente frammento di codice per estrarre il testo dal documento PDF in modo programmatico.

        // Apri un documento PDF creando un oggetto della classe Document.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Inizializza un oggetto di TextAbsorber per eseguire l'estrazione del testo.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Chiama il metodo getPages() che accetta l'assorbitore per tutte le pagine.
        pdfDocument.getPages().accept(textAbsorber);

        // Ottieni il testo estratto chiamando il metodo getText().
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Scrivi una riga di testo nel file
            writer.write(extractedText);
            // Chiudi il flusso
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

Come estrarre il testo da una particolare regione della pagina

Questa libreria ti consente anche di estrarre il testo dalla pagina desiderata di un documento PDF.

Seguiremo i seguenti passaggi per raggiungere questo obiettivo:

  1. Crea un oggetto della classe Document e carica un file PDF di origine.
  2. Istanziare un oggetto della classe TextAbsorber per estrarre i dati.
  3. Chiama il metodo getTextSearchOptions() che permette di definire un rettangolo che delimita il testo estratto.
  4. Richiama getPages() per ottenere la raccolta di pagine del documento e accettare l’assorbitore per la prima pagina.
  5. Chiama getText() per ottenere il testo estratto e scriverlo nel file.
  6. Chiama il metodo close() per chiudere il flusso.

Copia e incolla il seguente frammento di codice nel tuo file Java:

       // creare un oggetto di classe Document e caricare un file PDF di origine.
        Document doc = new Document("INPUT-PDF-FILE");
        // istanziare un oggetto di TextAbsorber per estrarre i dati.
        TextAbsorber absorber = new TextAbsorber();
        // call getTextSearchOptions() metodo che permette di definire un rettangolo che delimita il testo estratto.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // invocare getPages() per ottenere la raccolta di pagine del documento e accettare l'assorbitore per la prima pagina.
        doc.getPages().get_Item(1).accept(absorber);
        // Chiama getText() per ottenere il testo estratto e scriverlo nel file
        String extractedText = absorber.getText();
        // creare uno scrittore e aprire il file
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // scrivere i contenuti estratti
        writer.write(extractedText);
        // Scrittore vicino
        writer.close();

Libreria Java per estrarre testo da file PDF in forma di paragrafi

Questa sezione illustra i seguenti passaggi e i frammenti di codice per estrarre i dati dai documenti PDF nei paragrafi.

  1. Inizializza un oggetto della classe Document e carica un file PDF di origine.
  2. Crea un oggetto della classe ParagraphAbsorber.
  3. Chiama visit(Document doc) che esegue una ricerca di sezioni e paragrafi sul documento specificato.
  4. Invoca getPageMarkups() per ottenere la raccolta di PageMarkup che sono stati assorbiti.
  5. Scorri la raccolta di MarkupSection che è stata trovata nella pagina utilizzando il metodo getSections().
  6. Richiama questo metodo getParagraphs() che ottiene la raccolta di MarkupParagraph che è stata trovata nella pagina.
  7. Chiama il metodo getLines() per scorrere le righe del paragrafo.
        // Inizializza un oggetto della classe Document e carica un file PDF di origine.
        Document doc = new Document(  "./static/sample.pdf");
        // Crea un oggetto della classe ParagraphAbsorber.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Call visit(Document doc) che esegue la ricerca di sezioni e paragrafi sul documento specificato.
        absorber.visit(doc);
        // Richiama getPageMarkups() per ottenere la raccolta di PageMarkup che è stata assorbita.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // Scorri la raccolta di MarkupSection che è stata trovata nella pagina utilizzando il metodo getSections().
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Richiamare questo metodo getParagraphs() che ottiene la raccolta di MarkupParagraph che è stato trovato nella pagina. https://apiference.aspose.com/pdf/java/com.aspose.pdf/PageMarkup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Chiama il metodo getLines() per scorrere le righe del paragrafo.
                    for (java.util.List<TextFragment> line : paragraph.getLines()) {
                        for (TextFragment fragment : line) {
                            paragraphText.append(fragment.getText());
                        }
                        paragraphText.append("\r\n");
                    }
                    paragraphText.append("\r\n");

                    System.out.println("Paragraph "+j+" of section "+ i + " on page"+ ":"+markup.getNumber());
                    System.out.println(paragraphText.toString());

                    j++;
                }
                i++;
            }
        }

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare l’API senza limitazioni di valutazione.

Riassumendo

Questo ci porta alla fine di questo articolo. Abbiamo esaminato come estrarre il testo da un file PDF in Java in modo programmatico. Inoltre, abbiamo esaminato i frammenti di codice per estrarre il testo da una particolare area della pagina e abbiamo anche esplorato l’estrazione del testo sotto forma di paragrafo. Inoltre, puoi consultare la documentazione per esplorare altre funzionalità di questa libreria PDF Java. Infine, conholdate.com scrive costantemente nuovi post sul blog. Pertanto, si prega di rimanere in contatto per gli ultimi aggiornamenti.

Fai una domanda

In caso di domande, non esitare a scriverci sul forum.

Guarda anche