Trích xuất văn bản từ tài liệu Word bằng Java

Trong một số trường hợp nhất định, bạn có thể cần trích xuất văn bản từ tài liệu Word của mình cho nhiều mục đích khác nhau. Là nhà phát triển Java, bạn có thể dễ dàng trích xuất văn bản từ các tệp DOC hoặc DOCX theo chương trình. Trong bài viết này, bạn sẽ tìm hiểu cách trích xuất văn bản từ tài liệu Word bằng Java.

Các chủ đề sau được thảo luận/đề cập trong bài viết này:

API Java để trích xuất văn bản từ tài liệu Word

Để trích xuất văn bản từ các tệp DOC hoặc DOCX, chúng tôi sẽ sử dụng API GroupDocs.Parser for Java. Nó cho phép trích xuất văn bản, siêu dữ liệu và hình ảnh từ các định dạng tệp phổ biến của Word, PDF, ExcelPowerPoint. Nó cũng hỗ trợ trích xuất văn bản thô, được định dạng và có cấu trúc từ các tệp của định dạng được hỗ trợ.

Bạn có thể tải xuống JAR của API hoặc chỉ cần thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven của bạn để thử các ví dụ mã được đề cập bên dưới.

<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>

Trích xuất văn bản từ tài liệu Word bằng Java

Bạn có thể phân tích bất kỳ tài liệu Word nào và trích xuất văn bản bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

  • Đầu tiên, tải tệp DOCX bằng lớp Trình phân tích cú pháp.
  • Sau đó, gọi phương thức Parser.getText() để trích xuất văn bản từ tài liệu đã tải.
  • Nhận kết quả của phương thức Parser.getText() trong đối tượng lớp TextReader.
  • Cuối cùng, gọi phương thức TextReader.readToEnd() để đọc tất cả các ký tự từ vị trí hiện tại đến cuối trình đọc văn bản và trả về chúng dưới dạng một chuỗi.

Mẫu mã sau đây cho biết cách trích xuất văn bản từ tệp DOCX bằng Java.

// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// Trích xuất văn bản thô vào trình đọc
try (TextReader reader = parser.getText()) {
    // In văn bản từ tài liệu
    // Nếu trích xuất văn bản không được hỗ trợ thì trình đọc sẽ không có giá trị
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Trích xuất văn bản từ tài liệu Word bằng Java

Trích xuất văn bản từ tài liệu Word bằng Java

Trích xuất văn bản từ các trang cụ thể của tài liệu Word bằng Java

Bạn có thể phân tích tài liệu Word và trích xuất văn bản từ một trang cụ thể bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

Mẫu mã sau đây cho thấy cách trích xuất văn bản từ từng trang một bằng cách sử dụng Java.

// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// Kiểm tra xem tài liệu có hỗ trợ trích xuất văn bản không
if (!parser.getFeatures().isText()) {
    System.out.println("The document doesn't support text extraction.");
    return;
}

// Nhận thông tin tài liệu
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Kiểm tra xem tài liệu có trang không
if (documentInfo.getPageCount() == 0) {
    System.out.println("The document has zero pages.");
    return;
}

// Lặp lại qua các trang
for (int p = 0; p < documentInfo.getPageCount(); p++) {
    // In số trang
    System.out.println(String.format("Page number: %d/%d", p + 1, documentInfo.getPageCount()));
    // Trích xuất văn bản vào trình đọc
    try (TextReader reader = parser.getText(p)) {
        // In văn bản từ tài liệu
        // Chúng tôi bỏ qua việc kiểm tra null vì chúng tôi đã kiểm tra hỗ trợ tính năng trích xuất văn bản trước đó
        System.out.println(reader.readToEnd());
    }
}
Trích xuất văn bản từ các trang cụ thể của tài liệu bằng Java

Trích xuất văn bản từ các trang cụ thể của tài liệu bằng Java

Nhận phần đánh dấu từ tài liệu Word bằng Java

Phần đánh dấu là một phần của văn bản thường được sử dụng để giải thích ngữ cảnh của văn bản tìm thấy trong chức năng tìm kiếm. Bạn có thể trích xuất phần đánh dấu từ tài liệu bằng cách làm theo các bước đơn giản được đề cập bên dưới:

Mẫu mã sau đây cho biết cách trích xuất phần đánh dấu từ tài liệu bằng Java.

// Tạo một thể hiện của lớp Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // Trích xuất một điểm nổi bật:
    HighlightItem hl = parser.getHighlight(0, true, new HighlightOptions(8));
    // Kiểm tra xem tính năng trích xuất nổi bật có được hỗ trợ không
    if (hl == null) {
        System.out.println("Highlight extraction isn't supported");
        return;
    }
    // In phần đánh dấu được trích xuất
    System.out.println(String.format("At %d: %s", hl.getPosition(), hl.getText()));
}
At 0: Overview

Trích xuất văn bản được định dạng từ DOCX bằng Java

Bạn có thể phân tích tài liệu Word và trích xuất văn bản mà không làm mất định dạng kiểu bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

Mẫu mã sau đây cho biết cách trích xuất văn bản có định dạng từ tệp DOCX bằng Java.

// Tạo một thể hiện của lớp Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // Trích xuất văn bản đã định dạng vào trình đọc
    try (TextReader reader = parser.getFormattedText(new FormattedTextOptions(FormattedTextMode.Html))) {
        // In văn bản được định dạng từ tài liệu
        // Nếu trích xuất văn bản có định dạng không được hỗ trợ thì trình đọc sẽ không có giá trị
        System.out.println(reader == null ? "Formatted text extraction isn't suppported" : reader.readToEnd());
    }
}
Trích xuất văn bản được định dạng từ DOCX bằng Java

Trích xuất văn bản được định dạng từ DOCX bằng Java

Trích xuất văn bản theo mục lục bằng Java

Bạn có thể trích xuất văn bản từ tài liệu theo mục lục bằng cách thực hiện theo các bước đơn giản được đề cập dưới đây:

  • Đầu tiên, tải tệp DOCX bằng lớp Trình phân tích cú pháp.
  • Sau đó, gọi phương thức Parser.getToc() để trích xuất mục lục dưới dạng tập hợp các đối tượng lớp TocItem. TocItem đại diện cho mục được sử dụng trong chức năng trích xuất mục lục.
  • Bây giờ, hãy kiểm tra xem bộ sưu tập có rỗng không.
  • Sau đó, lặp lại bộ sưu tập của TocItem và gọi phương thức TocItem.extractText() để trích xuất văn bản từ tài liệu mà đối tượng TocItem tham chiếu đến.
  • Nhận kết quả trong đối tượng lớp TextReader.
  • Cuối cùng, gọi phương thức TextReader.readToEnd() để đọc tất cả văn bản.

Mẫu mã sau đây cho thấy cách trích xuất văn bản theo mục lục từ tài liệu Word bằng Java.

// Tạo một thể hiện của lớp Parser
try (Parser parser = new Parser("C:\\Files\\sampleTOC.docx")) {
    // Lấy mục lục
    Iterable<TocItem> tocItems = parser.getToc();
    // Kiểm tra xem việc trích xuất toc có được hỗ trợ không
    if (tocItems == null) {
        System.out.println("Table of contents extraction isn't supported");
    }
    else
    {
        // Lặp lại các mục
       for (TocItem tocItem : tocItems) {
            // In văn bản của chương
            try (TextReader reader = tocItem.extractText()) {
                System.out.println("----");
                System.out.println(reader.readToEnd());
            }
        }
    }
}
Trích xuất văn bản theo mục lục bằng Java

Trích xuất văn bản theo mục lục bằng Java

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không bị giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Phần kết luận

Trong bài viết này, bạn đã học cách trích xuất văn bản từ tài liệu Word bằng Java. Hơn nữa, bạn đã thấy cách trích xuất văn bản có định dạng từ tệp DOCX theo chương trình. Bài viết này cũng giải thích cách trích xuất văn bản theo mục lục và trích xuất phần đánh dấu từ tài liệu. Ngoài ra, bạn có thể tìm hiểu thêm về GroupDocs.Parser cho API Java bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm