Extraire du texte d'un fichier PDF en Java

Extraire du texte d’un fichier PDF en Java

Dans ce monde en évolution rapide, le volume de données augmente de façon exponentielle. Les fichiers PDF sont énormément utilisés pour stocker et représenter des données. Il devient difficile de parcourir un grand nombre de pages PDF pour accéder à des paragraphes utiles. Par conséquent, nous apprendrons à extraire du texte d’un fichier PDF en Java par programmation. Cependant, l’automatisation de l’ensemble du processus d’extraction de texte permettra d’économiser du temps et des efforts et apportera de l’efficacité. Nous utiliserons une bibliothèque Java PDF facile à installer qui propose des méthodes configurables pour travailler avec des fichiers PDF.

Les points suivants seront abordés dans cet article de blog :

Bibliothèque Java PDF - étapes d’installation

Vous pouvez installer cette bibliothèque facilement dans votre application Java en téléchargeant les fichiers jar, ou vous pouvez suivre les configurations Maven suivantes.

Dépôt

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

Dépendance

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

Extraire du texte d’un fichier PDF en Java

Dans cette section, nous allons écrire les étapes et l’extrait de code qui extrait le texte de toutes les pages d’un document PDF.

Suivez les étapes suivantes :

  1. Ouvrez un document PDF en créant un objet de la classe Document.
  2. Initialisez un objet de la classe TextAbsorber pour effectuer l’extraction de texte.
  3. Appelez la méthode getPages() qui accepte l’absorbeur pour toutes les pages.
  4. Obtenez le texte extrait en appelant la méthode getText().
  5. Écrivez le texte extrait dans le fichier et fermez le rédacteur.

Copiez et collez l’extrait de code suivant pour extraire le texte du document PDF par programmation.

        // Ouvrez un document PDF en créant un objet de la classe Document.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Initialise un objet de TextAbsorber pour effectuer l'extraction de texte.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Appelez la méthode getPages() qui accepte l'absorbeur pour toutes les pages.
        pdfDocument.getPages().accept(textAbsorber);

        // Obtenez le texte extrait en appelant la méthode getText().
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Ecrire une ligne de texte dans le fichier
            writer.write(extractedText);
            // Fermer le flux
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

Comment extraire du texte d’une région de page particulière

Cette bibliothèque vous permet également d’extraire du texte de la page souhaitée d’un document PDF.

Nous suivrons les étapes suivantes pour y parvenir :

  1. Créez un objet de la classe Document et chargez un fichier PDF source.
  2. Instanciez un objet de la classe TextAbsorber pour extraire des données.
  3. Appelez la méthode getTextSearchOptions() qui permet de définir un rectangle délimitant le texte extrait.
  4. Appelez getPages() pour obtenir la collection de pages de document et acceptez l’absorbeur pour la première page.
  5. Appelez getText() pour obtenir le texte extrait et écrivez-le dans le fichier.
  6. Appelez la méthode close() pour fermer le flux.

Copiez et collez l’extrait de code suivant dans votre fichier Java :

       // créez un objet de la classe Document et chargez un fichier PDF source.
        Document doc = new Document("INPUT-PDF-FILE");
        // instancier un objet de TextAbsorber pour extraire des données.
        TextAbsorber absorber = new TextAbsorber();
        // appelez la méthode getTextSearchOptions() qui permet de définir un rectangle qui délimite le texte extrait.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // appelez getPages() pour obtenir la collection de pages de document et acceptez l'absorbeur pour la première page.
        doc.getPages().get_Item(1).accept(absorber);
        // Appelez getText() pour obtenir le texte extrait et écrivez-le dans le fichier
        String extractedText = absorber.getText();
        // créer un écrivain et ouvrir le fichier
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // écrire le contenu extrait
        writer.write(extractedText);
        // Fermer l'écrivain
        writer.close();

Bibliothèque Java pour extraire le texte d’un fichier PDF sous forme de paragraphes

Cette section illustre les étapes suivantes et les extraits de code pour extraire des données de documents PDF dans des paragraphes.

  1. Initialisez un objet de la classe Document et chargez un fichier PDF source.
  2. Créez un objet de la classe ParagraphAbsorber.
  3. Appelez visit(Document doc) qui effectue une recherche de sections et de paragraphes sur le document spécifié.
  4. Appelez getPageMarkups() pour obtenir la collection de PageMarkup qui ont été absorbés.
  5. Parcourez la collection de MarkupSection trouvée sur la page à l’aide de la méthode getSections().
  6. Appelez cette méthode getParagraphs() qui obtient la collection de MarkupParagraph trouvée sur la page.
  7. Appelez la méthode getLines() pour parcourir les lignes du paragraphe.
        // Initialisez un objet de la classe Document et chargez un fichier PDF source.
        Document doc = new Document(  "./static/sample.pdf");
        // Créez un objet de la classe ParagraphAbsorber.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Appelez visit(Document doc) qui effectue une recherche de sections et de paragraphes sur le document spécifié.
        absorber.visit(doc);
        // Appelez getPageMarkups() pour obtenir la collection de PageMarkup qui ont été absorbés.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // Parcourez la collection de MarkupSection trouvée sur la page à l'aide de la méthode getSections().
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Appelez cette méthode getParagraphs() qui récupère la collection de MarkupParagraph trouvée sur la page. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Appelez la méthode getLines() pour itérer les lignes du paragraphe.
                    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++;
            }
        }

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour essayer l’API sans limitation d’évaluation.

Résumé

Ceci nous amène à la fin de cet article. Nous avons expliqué comment extraire du texte d’un fichier PDF en Java par programme. De plus, nous avons parcouru les extraits de code pour extraire le texte d’une région de page particulière et avons également exploré l’extraction de texte sous forme de paragraphe. De plus, vous pouvez parcourir la documentation pour explorer d’autres fonctionnalités de cette bibliothèque PDF Java. Enfin, conholdate.com écrit constamment de nouveaux articles de blog. Par conséquent, veuillez rester en contact pour les dernières mises à jour.

poser une question

En cas de questions, n’hésitez pas à nous écrire sur le forum.

Voir également