Wyodrębnij tekst z pliku PDF w Javie

Wyodrębnij tekst z pliku PDF w Javie

W tym dynamicznym świecie ilość danych rośnie wykładniczo. Pliki PDF są szeroko wykorzystywane do przechowywania i reprezentowania danych. Przechodzenie przez dużą liczbę stron PDF w celu uzyskania dostępu do przydatnych akapitów staje się trudne. Dlatego dowiemy się, jak programowo wyodrębnić tekst z pliku PDF w Javie. Jednak automatyzacja całego procesu wyodrębniania tekstu pozwoli zaoszczędzić czas i wysiłek oraz zapewni wydajność. Będziemy korzystać z łatwej w instalacji biblioteki PDF Java, która oferuje konfigurowalne metody pracy z plikami PDF.

W tym poście na blogu zostaną omówione następujące kwestie:

PDF Biblioteka Java - kroki instalacji

Możesz łatwo zainstalować tę bibliotekę w swojej aplikacji Java, pobierając pliki jar lub możesz skorzystać z poniższych konfiguracji Mavena.

Magazyn

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

Zależność

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

Wyodrębnij tekst z pliku PDF w Javie

W tej sekcji napiszemy kroki i fragment kodu, który wyodrębni tekst ze wszystkich stron dokumentu PDF.

Wykonaj następujące kroki:

  1. Otwórz dokument PDF, tworząc obiekt klasy Document.
  2. Zainicjuj obiekt klasy TextAbsorber, aby wyodrębnić tekst.
  3. Wywołaj metodę getPages(), która akceptuje absorber dla wszystkich stron.
  4. Pobierz wyodrębniony tekst, wywołując metodę getText().
  5. Zapisz wyodrębniony tekst do pliku i zamknij moduł zapisywania.

Skopiuj i wklej następujący fragment kodu, aby programowo wyodrębnić tekst z dokumentu PDF.

        // Otwórz dokument PDF, tworząc obiekt klasy Document.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Zainicjuj obiekt TextAbsorber, aby przeprowadzić wyodrębnianie tekstu.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Wywołaj metodę getPages(), która akceptuje absorber dla wszystkich stron.
        pdfDocument.getPages().accept(textAbsorber);

        // Pobierz wyodrębniony tekst, wywołując metodę getText().
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Napisz linię tekstu do pliku
            writer.write(extractedText);
            // Zamknij strumień
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

Jak wyodrębnić tekst z określonego obszaru strony

Ta [biblioteka] umożliwia także wyodrębnienie tekstu z żądanej strony dokumentu PDF.

Aby to osiągnąć, wykonamy następujące kroki:

  1. Utwórz obiekt klasy Document i załaduj źródłowy plik PDF.
  2. Utwórz instancję obiektu klasy TextAbsorber w celu wyodrębnienia danych.
  3. Wywołaj metodę getTextSearchOptions() pozwalającą na zdefiniowanie prostokąta wyznaczającego wyodrębniony tekst.
  4. Wywołaj getPages(), aby pobrać kolekcję stron dokumentu i zaakceptować absorber dla pierwszej strony.
  5. Wywołaj getText(), aby pobrać wyodrębniony tekst i zapisać go w pliku.
  6. Wywołaj metodę close(), aby zamknąć strumień.

Skopiuj i wklej następujący fragment kodu do pliku Java:

       // utwórz obiekt klasy Document i załaduj źródłowy plik PDF.
        Document doc = new Document("INPUT-PDF-FILE");
        // utwórz instancję obiektu TextAbsorber w celu wyodrębnienia danych.
        TextAbsorber absorber = new TextAbsorber();
        // wywołaj metodę getTextSearchOptions(), która pozwala zdefiniować prostokąt ograniczający wyodrębniony tekst.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // wywołaj funkcję getPages(), aby pobrać zbiór stron dokumentu i zaakceptować absorber dla pierwszej strony.
        doc.getPages().get_Item(1).accept(absorber);
        // Wywołaj funkcję getText(), aby pobrać wyodrębniony tekst i zapisać go w pliku
        String extractedText = absorber.getText();
        // utwórz moduł piszący i otwórz plik
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // napisz wyodrębnioną zawartość
        writer.write(extractedText);
        // Bliski pisarz
        writer.close();

Biblioteka Java do wyodrębniania tekstu z pliku PDF w formie akapitów

W tej sekcji przedstawiono następujące kroki i fragmenty kodu umożliwiające wyodrębnienie danych z dokumentów PDF w akapitach.

  1. Zainicjuj obiekt klasy Document i załaduj źródłowy plik PDF.
  2. Utwórz obiekt klasy ParagraphAbsorber.
  3. Wywołanie visit(Document doc), które przeszukuje sekcje i akapity w określonym dokumencie.
  4. Wywołaj getPageMarkups(), aby pobrać kolekcję PageMarkup, które zostały wchłonięte.
  5. Przejrzyj kolekcję MarkupSection, która została znaleziona na stronie, używając metody getSections().
  6. Wywołaj metodę getParagraphs(), która pobiera kolekcję MarkupParagraph znalezioną na stronie.
  7. Wywołaj metodę getLines(), aby iterować wiersze akapitu.
        // Zainicjuj obiekt klasy Document i załaduj źródłowy plik PDF.
        Document doc = new Document(  "./static/sample.pdf");
        // Utwórz obiekt klasy ParagraphAbsorber.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Wywołaj wizytę (dokument dokumentu), która przeszukuje sekcje i akapity określonego dokumentu.
        absorber.visit(doc);
        // Wywołaj funkcję getPageMarkups(), aby pobrać kolekcję wchłoniętych znaczników PageMarkup.
       for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // Przejdź przez kolekcję MarkupSection znalezioną na stronie, używając metody getSections().
           for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Wywołaj metodę getParagraphs(), która pobiera kolekcję MarkupParagraph znalezioną na stronie. https://apireference.aspose.com/pdf/java/com.aspose.pdf/PageMarkup#getParagraphs--
               for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Wywołaj metodę getLines(), aby iterować wiersze akapitu.
                   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++;
            }
        }

Zdobądź bezpłatną licencję

Możesz uzyskać bezpłatną licencję tymczasową, aby wypróbować API bez ograniczeń ewaluacyjnych.

Podsumowując

To prowadzi nas do końca tego artykułu. Omówiliśmy, jak programowo wyodrębnić tekst z pliku PDF w Javie. Ponadto sprawdziliśmy fragmenty kodu umożliwiające wyodrębnienie tekstu z określonego regionu strony, a także sprawdziliśmy wyodrębnianie tekstu w formie akapitu. Ponadto możesz przejrzeć dokumentację, aby poznać inne funkcje tej biblioteki PDF Java. Wreszcie conholdate.com konsekwentnie pisze nowe posty na blogu. Dlatego prosimy o kontakt w celu uzyskania najnowszych aktualizacji.

Zadać pytanie

W razie jakichkolwiek pytań prosimy pisać do nas na forum.

Zobacz też