Extrahieren Sie Text aus einer PDF-Datei in Java

Extrahieren Sie Text aus einer PDF-Datei in Java

In dieser schnelllebigen Welt wächst das Datenvolumen exponentiell. PDF-Dateien werden immens zum Speichern und Darstellen von Daten verwendet. Es wird schwierig, eine große Anzahl von PDF-Seiten durchzugehen, um auf nützliche Absätze zuzugreifen. Daher werden wir lernen, wie man Text programmgesteuert aus einer PDF-Datei in Java extrahiert. Die Automatisierung des gesamten Prozesses der Textextraktion spart jedoch Zeit und Mühe und bringt Effizienz. Wir werden eine einfach zu installierende PDF-Java-Bibliothek verwenden, die konfigurierbare Methoden zum Arbeiten mit PDF-Dateien bietet.

Folgende Punkte werden in diesem Blogbeitrag behandelt:

PDF Java-Bibliothek - Installationsschritte

Sie können diese Bibliothek einfach in Ihrer Java-Anwendung installieren, indem Sie die JAR-Dateien herunterladen, oder Sie können den folgenden Maven-Konfigurationen folgen.

Repository

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

Abhängigkeit

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

Extrahieren Sie Text aus einer PDF-Datei in Java

In diesem Abschnitt schreiben wir die Schritte und Codeschnipsel, die Text aus allen Seiten eines PDF-Dokuments extrahieren.

Gehen Sie die folgenden Schritte durch:

  1. Öffnen Sie ein PDF-Dokument, indem Sie ein Objekt der Klasse Document erstellen.
  2. Initialisiert ein Objekt der Klasse TextAbsorber, um eine Textextraktion durchzuführen.
  3. Rufen Sie die Methode getPages() auf, die den Absorber für alle Seiten akzeptiert.
  4. Rufen Sie den extrahierten Text ab, indem Sie die Methode getText() aufrufen.
  5. Schreiben Sie den extrahierten Text in die Datei und schließen Sie den Writer.

Kopieren Sie das folgende Code-Snippet und fügen Sie es ein, um Text programmgesteuert aus dem PDF-Dokument zu extrahieren.

        // Öffnen Sie ein PDF-Dokument, indem Sie ein Objekt der Document-Klasse erstellen.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Initialisiert ein Objekt von TextAbsorber, um eine Textextraktion durchzuführen.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Rufen Sie die Methode getPages() auf, die den Absorber für alle Seiten akzeptiert.
        pdfDocument.getPages().accept(textAbsorber);

        // Holen Sie sich den extrahierten Text, indem Sie die Methode getText() aufrufen.
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Schreiben Sie eine Textzeile in die Datei
            writer.write(extractedText);
            // Schließen Sie den Stream
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

So extrahieren Sie Text aus einem bestimmten Seitenbereich

Diese Bibliothek ermöglicht es Ihnen auch, Text aus der gewünschten Seite eines PDF-Dokuments zu extrahieren.

Wir werden die folgenden Schritte befolgen, um dies zu erreichen:

  1. Erstellen Sie ein Objekt der Klasse Document und laden Sie eine PDF-Quelldatei.
  2. Instanziieren Sie ein Objekt der Klasse TextAbsorber, um Daten zu extrahieren.
  3. Rufen Sie die Methode getTextSearchOptions() auf, die es ermöglicht, ein Rechteck zu definieren, das den extrahierten Text begrenzt.
  4. Rufen Sie getPages() auf, um die Sammlung von Dokumentseiten abzurufen, und akzeptieren Sie den Absorber für die erste Seite.
  5. Rufen Sie getText() auf, um den extrahierten Text abzurufen und in die Datei zu schreiben.
  6. Rufen Sie die Methode close() auf, um den Stream zu schließen.

Kopieren Sie das folgende Code-Snippet und fügen Sie es in Ihre Java-Datei ein:

       // Erstellen Sie ein Objekt der Document-Klasse und laden Sie eine PDF-Quelldatei.
        Document doc = new Document("INPUT-PDF-FILE");
        // Instanziieren Sie ein Objekt von TextAbsorber, um Daten zu extrahieren.
        TextAbsorber absorber = new TextAbsorber();
        // Rufen Sie die Methode getTextSearchOptions () auf, mit der ein Rechteck definiert werden kann, das den extrahierten Text begrenzt.
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // Rufen Sie getPages() auf, um die Sammlung von Dokumentseiten abzurufen, und akzeptieren Sie den Absorber für die erste Seite.
        doc.getPages().get_Item(1).accept(absorber);
        // Rufen Sie getText() auf, um den extrahierten Text abzurufen und in die Datei zu schreiben
        String extractedText = absorber.getText();
        // Erstellen Sie einen Writer und öffnen Sie die Datei
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // extrahierten Inhalt schreiben
        writer.write(extractedText);
        // Schreiber schließen
        writer.close();

Java-Bibliothek zum Extrahieren von Text aus PDF-Dateien in Absatzform

Dieser Abschnitt zeigt die folgenden Schritte und die Codeausschnitte zum Extrahieren von Daten aus PDF-Dokumenten in Absätzen.

  1. Initialisieren Sie ein Objekt der Klasse Dokument und laden Sie eine PDF-Quelldatei.
  2. Erstellen Sie ein Objekt der Klasse ParagraphAbsorber.
  3. Rufen Sie visit(Document doc) auf, das eine Suche nach Abschnitten und Absätzen im angegebenen Dokument durchführt.
  4. Rufen Sie getPageMarkups() auf, um eine Sammlung von PageMarkup abzurufen, die absorbiert wurden.
  5. Durchlaufen Sie die Sammlung von MarkupSection, die auf der Seite gefunden wurde, mit der Methode getSections().
  6. Rufen Sie diese getParagraphs()-Methode auf, die die Sammlung von MarkupParagraph abruft, die auf der Seite gefunden wurde.
  7. Rufen Sie die Methode getLines() auf, um Zeilen des Absatzes zu durchlaufen.
        // Initialisiert ein Objekt der Document-Klasse und lädt eine PDF-Quelldatei.
        Document doc = new Document(  "./static/sample.pdf");
        // Erstellen Sie ein Objekt der ParagraphAbsorber-Klasse.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Rufen Sie visit(Document doc) auf, das die Suche nach Abschnitten und Absätzen im angegebenen Dokument durchführt.
        absorber.visit(doc);
        // Rufen Sie getPageMarkups() auf, um eine Sammlung von PageMarkups abzurufen, die absorbiert wurden.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // Durchlaufen Sie die Sammlung von MarkupSection, die auf der Seite gefunden wurde, mit der Methode getSections().
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Rufen Sie diese Methode getParagraphs() auf, die eine Sammlung von MarkupParagraph erhält, die auf der Seite gefunden wurde. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Rufen Sie die Methode getLines() auf, um Zeilen des Absatzes zu durchlaufen.
                    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++;
            }
        }

Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die API ohne Evaluierungseinschränkungen zu testen.

Zusammenfassen

Damit sind wir am Ende dieses Artikels angelangt. Wir haben das programmgesteuerte Extrahieren von Text aus einer PDF-Datei in Java durchgegangen. Darüber hinaus sind wir die Codeausschnitte durchgegangen, um Text aus einem bestimmten Seitenbereich zu extrahieren, und haben auch die Textextraktion in Absatzform untersucht. Darüber hinaus können Sie die Dokumentation durchgehen, um weitere Funktionen dieser PDF-Java-Bibliothek zu erkunden. Schließlich schreibt conholdate.com ständig neue Blogbeiträge. Bitte bleiben Sie daher in Kontakt, um die neuesten Updates zu erhalten.

Stelle eine Frage

Bei Fragen können Sie uns gerne im Forum schreiben.

Siehe auch