Извлечь текст из файла PDF в Java

Извлечь текст из файла PDF в Java

В этом быстро меняющемся мире объем данных растет экспоненциально. Файлы PDF широко используются для хранения и представления данных. Становится трудно просмотреть большое количество страниц PDF, чтобы получить доступ к полезным абзацам. Поэтому мы узнаем, как программно извлекать текст из PDF-файла на Java. Однако автоматизация всего процесса извлечения текста сэкономит время и усилия и повысит эффективность. Мы будем использовать простую в установке библиотеку PDF Java, которая предлагает настраиваемые методы для работы с файлами PDF.

В этом блоге будут освещены следующие моменты:

Библиотека Java в формате PDF — этапы установки

Вы можете легко установить эту библиотеку в свое Java-приложение, загрузив jar-файлы, или вы можете использовать следующие конфигурации Maven.

Репозиторий

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

Зависимость

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

Извлечь текст из файла PDF в Java

В этом разделе мы напишем шаги и фрагмент кода, который извлекает текст со всех страниц PDF-документа.

Выполните следующие шаги:

  1. Откройте документ PDF, создав объект класса Document.
  2. Инициализировать объект класса TextAbsorber для извлечения текста.
  3. Вызовите метод getPages(), который принимает поглотитель для всех страниц.
  4. Получите извлеченный текст, вызвав метод getText().
  5. Запишите извлеченный текст в файл и закройте модуль записи.

Скопируйте и вставьте следующий фрагмент кода, чтобы программно извлечь текст из документа PDF.

        // Откройте документ PDF, создав объект класса Document.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Инициализировать объект TextAbsorber для извлечения текста.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Вызовите метод getPages(), который принимает поглотитель для всех страниц.
        pdfDocument.getPages().accept(textAbsorber);

        // Получите извлеченный текст, вызвав метод getText().
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Записать строку текста в файл
            writer.write(extractedText);
            // Закрыть поток
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

Как извлечь текст из определенной области страницы

Эта библиотека также позволяет извлекать текст с нужной страницы PDF-документа.

Для этого мы выполним следующие шаги:

  1. Создайте объект класса Document и загрузите исходный файл PDF.
  2. Создайте объект класса TextAbsorber для извлечения данных.
  3. Вызовите метод getTextSearchOptions(), который позволяет определить прямоугольник, ограничивающий извлеченный текст.
  4. Вызовите getPages(), чтобы получить коллекцию страниц документа и принять поглотитель для первой страницы.
  5. Вызовите getText(), чтобы получить извлеченный текст и записать его в файл.
  6. Вызовите метод close(), чтобы закрыть поток.

Скопируйте и вставьте следующий фрагмент кода в файл Java:

       // создайте объект класса Document и загрузите исходный файл PDF.
        Document doc = new Document("INPUT-PDF-FILE");
        // создать экземпляр объекта TextAbsorber для извлечения данных.
        TextAbsorber absorber = new TextAbsorber();
        // вызовите метод getTextSearchOptions(), который позволяет определить прямоугольник, ограничивающий извлеченный текст.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // вызовите getPages(), чтобы получить набор страниц документа и принять поглотитель для первой страницы.
        doc.getPages().get_Item(1).accept(absorber);
        // Вызовите getText(), чтобы получить извлеченный текст и записать его в файл.
        String extractedText = absorber.getText();
        // создать писатель и открыть файл
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // записать извлеченное содержимое
        writer.write(extractedText);
        // Близкий писатель
        writer.close();

Библиотека Java для извлечения текста из файла PDF в виде абзацев

В этом разделе в абзацах демонстрируются следующие шаги и фрагменты кода для извлечения данных из PDF-документов.

  1. Инициализируйте объект класса Document и загрузите исходный файл PDF.
  2. Создайте объект класса ParagraphAbsorber.
  3. Вызовите visit(Document doc), который выполняет поиск разделов и абзацев в указанном документе.
  4. Вызовите getPageMarkups(), чтобы получить коллекцию PageMarkup, которые были поглощены.
  5. Перебрать коллекцию MarkupSection, найденную на странице, с помощью метода getSections().
  6. Вызовите этот метод getParagraphs(), который получает коллекцию MarkupParagraph, найденную на странице.
  7. Вызовите метод getLines() для перебора строк абзаца.
        // Инициализируйте объект класса Document и загрузите исходный файл PDF.
        Document doc = new Document(  "./static/sample.pdf");
        // Создайте объект класса ParagraphAbsorber.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Вызов визита(Document doc), который выполняет поиск разделов и абзацев в указанном документе.
        absorber.visit(doc);
        // Вызовите getPageMarkups(), чтобы получить коллекцию поглощенных PageMarkup.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // Перебрать коллекцию MarkupSection, которая была найдена на странице, с помощью метода getSections().
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Вызовите метод getParagraphs(), который получает коллекцию MarkupParagraph, найденную на странице. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Вызовите метод getLines() для перебора строк абзаца.
                    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++;
            }
        }

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать API без ограничений пробной версии.

Подведение итогов

Это подводит нас к концу этой статьи. Мы рассмотрели, как программно извлечь текст из файла PDF на Java. Кроме того, мы рассмотрели фрагменты кода для извлечения текста из определенной области страницы, а также изучили извлечение текста в форме абзаца. Кроме того, вы можете просмотреть документацию, чтобы изучить другие функции этой библиотеки Java в формате PDF. Наконец, conholdate.com постоянно пишет новые сообщения в блог. Поэтому, пожалуйста, оставайтесь на связи для получения последних обновлений.

Задайте вопрос

Если у вас возникнут вопросы, пишите нам на форум.

Смотрите также