Извлечение текста из документов Word с помощью Java

В некоторых случаях вам может понадобиться извлечь текст из документов Word для различных целей. Как разработчик Java, вы можете легко программно извлекать текст из файлов DOC или DOCX. В этой статье вы узнаете, как извлекать текст из документов Word с помощью Java.

В этой статье обсуждаются/рассматриваются следующие темы:

Java API для извлечения текста из документов Word

Для извлечения текста из файлов DOC или DOCX мы будем использовать API GroupDocs.Parser for Java. Он позволяет извлекать текст, метаданные и изображения из файлов популярных форматов Word, PDF, Excel и PowerPoint. Он также поддерживает извлечение необработанного, форматированного и структурированного текста из файлов поддерживаемых форматов.

Вы можете загрузить JAR API или просто добавить следующую конфигурацию pom.xml в свое Java-приложение на основе Maven, чтобы попробовать приведенные ниже примеры кода.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

Извлечение текста из документов Word с помощью Java

Вы можете проанализировать любой документ Word и извлечь текст, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл DOCX с помощью класса Parser.
  • Затем вызовите метод Parser.getText(), чтобы извлечь текст из загруженного документа.
  • Получить результаты метода Parser.getText() в объекте класса TextReader.
  • Наконец, вызовите метод TextReader.readToEnd() , чтобы прочитать все символы от текущей позиции до конца средства чтения текста и вернуть их в виде одной строки.

В следующем примере кода показано, как извлечь текст из файла DOCX с помощью Java.

// Создайте экземпляр класса Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// Извлечь необработанный текст в ридер
try (TextReader reader = parser.getText()) {
    // Распечатать текст из документа
    // Если извлечение текста не поддерживается, средство чтения недействительно.
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Извлечение текста из документов Word с помощью Java

Извлечение текста из документов Word с помощью Java

Извлечение текста с определенных страниц документа Word с использованием Java

Вы можете проанализировать документ Word и извлечь текст с определенной страницы, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл DOCX с помощью класса Parser.
  • Затем используйте Parser.getFeatures().isText(), чтобы проверить, поддерживает ли документ функцию извлечения текста. Узнайте больше о поддерживаемых функциях.
  • Теперь вызовите метод Parser.getDocumentInfo(), чтобы получить общую информацию о документе. Например, тип файла, количество страниц, размер и т. д.
  • Получить результаты работы метода Parser.getDocumentInfo() в интерфейсном объекте IDocumentInfo.
  • Затем проверьте, не равно ли значение IDocumentInfo.getPageCount() нулю. Этот метод возвращает общее количество страниц документа.
  • Переберите все страницы и вызовите метод Parser.getText() для каждого индекса страницы, чтобы извлечь текст и получить результаты в объекте класса TextReader.
  • Наконец, покажите результаты, вызвав метод TextReader.readToEnd() для чтения извлеченного текста.

В следующем примере кода показано, как извлекать текст со страниц одну за другой с помощью Java.

// Создайте экземпляр класса Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// Проверьте, поддерживает ли документ извлечение текста
if (!parser.getFeatures().isText()) {
    System.out.println("The document doesn't support text extraction.");
    return;
}

// Получить информацию о документе
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Проверить, есть ли в документе страницы
if (documentInfo.getPageCount() == 0) {
    System.out.println("The document has zero pages.");
    return;
}

// Перебирать страницы
for (int p = 0; p < documentInfo.getPageCount(); p++) {
    // Распечатать номер страницы
    System.out.println(String.format("Page number: %d/%d", p + 1, documentInfo.getPageCount()));
    // Извлечь текст в ридер
    try (TextReader reader = parser.getText(p)) {
        // Распечатать текст из документа
        // Мы игнорируем проверку на нуль, так как мы проверили поддержку функции извлечения текста ранее.
        System.out.println(reader.readToEnd());
    }
}
Извлечение текста с определенных страниц документа с помощью Java

Извлечение текста с определенных страниц документа с помощью Java

Получить выделение из документов Word с помощью Java

Выделение — это часть текста, которая обычно используется для пояснения контекста найденного текста в функции поиска. Вы можете извлечь выделение из документа, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл DOCX с помощью класса Parser.
  • Создайте экземпляр объекта класса HighlightOptions и передайте максимальную длину в качестве входного параметра его конструктору, чтобы извлечь выделение фиксированной длины.
  • Затем вызовите метод Parser.getHighlight() с начальной позицией и объектом класса HighlightOptions, чтобы извлечь выделение из документа как объект класса HighlightItem.
  • Наконец, вызовите методы Highlight.getPosition() и HighlightItem.getText(), чтобы получить положение и текст выделения.

В следующем примере кода показано, как извлечь выделение из документа с помощью Java.

// Создайте экземпляр класса Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // Извлечь выделение:
    HighlightItem hl = parser.getHighlight(0, true, new HighlightOptions(8));
    // Проверьте, поддерживается ли извлечение выделения
    if (hl == null) {
        System.out.println("Highlight extraction isn't supported");
        return;
    }
    // Распечатать извлеченную подсветку
    System.out.println(String.format("At %d: %s", hl.getPosition(), hl.getText()));
}
At 0: Overview

Извлечение форматированного текста из DOCX с помощью Java

Вы можете анализировать документы Word и извлекать текст без потери форматирования стиля, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл DOCX с помощью класса Parser.
  • Определите FormattedTextOptions и установите для FormattedTextMode значение HTML. Он позволяет извлекать текст в формате HTML из документа.
  • Затем вызовите метод Parser.getFormattedText() для извлечения форматированного текста.
  • Получить результаты метода Parser.getText() в объекте класса TextReader.
  • Наконец, вызовите метод TextReader.readToEnd(), чтобы прочитать весь текст.

В следующем примере кода показано, как извлечь форматированный текст из файла DOCX с помощью Java.

// Создайте экземпляр класса Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // Извлечь форматированный текст в ридер
    try (TextReader reader = parser.getFormattedText(new FormattedTextOptions(FormattedTextMode.Html))) {
        // Печать форматированного текста из документа
        // Если извлечение форматированного текста не поддерживается, средство чтения недействительно.
        System.out.println(reader == null ? "Formatted text extraction isn't suppported" : reader.readToEnd());
    }
}
Извлечение форматированного текста из DOCX с помощью Java

Извлечение форматированного текста из DOCX с помощью Java

Извлечение текста по оглавлению с помощью Java

Вы можете извлечь текст из документа по оглавлению, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл DOCX с помощью класса Parser.
  • Затем вызовите метод Parser.getToc(), чтобы извлечь оглавление как набор объектов класса TocItem. TocItem представляет элемент, который используется в функциях извлечения оглавления.
  • Теперь проверьте, не является ли коллекция нулевой.
  • Затем выполните итерацию по коллекции TocItem и вызовите метод TocItem.extractText() для извлечения текста из документа, на который ссылается объект TocItem.
  • Получить результаты в объекте класса TextReader.
  • Наконец, вызовите метод TextReader.readToEnd(), чтобы прочитать весь текст.

В следующем примере кода показано, как извлечь текст по оглавлению из документов Word с помощью Java.

// Создайте экземпляр класса Parser
try (Parser parser = new Parser("C:\\Files\\sampleTOC.docx")) {
    // Получить оглавление
    Iterable<TocItem> tocItems = parser.getToc();
    // Проверьте, поддерживается ли извлечение toc
    if (tocItems == null) {
        System.out.println("Table of contents extraction isn't supported");
    }
    else
    {
        // Перебирать элементы
        for (TocItem tocItem : tocItems) {
            // Распечатать текст главы
            try (TextReader reader = tocItem.extractText()) {
                System.out.println("----");
                System.out.println(reader.readToEnd());
            }
        }
    }
}
Извлечение текста по оглавлению с помощью Java

Извлечение текста по оглавлению с помощью Java

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

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

Вывод

В этой статье вы узнали, как извлекать текст из документов Word с помощью Java. Более того, вы видели, как программно извлечь форматированный текст из файла DOCX. В этой статье также объясняется, как извлечь текст по оглавлению и выделить выделение из документа. Кроме того, вы можете узнать больше о GroupDocs.Parser for Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

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