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ừ 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
- Nhận phần đánh dấu từ tài liệu Word 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
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, Excel và PowerPoint. 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ừ 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:
- Đầu tiên, tải tệp DOCX bằng lớp Trình phân tích cú pháp.
- Sau đó, sử dụng Parser.getFeatures().isText() để kiểm tra xem tài liệu có hỗ trợ tính năng trích xuất văn bản hay không. Đọc thêm về các tính năng được hỗ trợ.
- Bây giờ, hãy gọi phương thức Parser.getDocumentInfo() để lấy thông tin chung về tài liệu. Chẳng hạn như Loại tệp, Số trang, Kích thước, v.v.
- Nhận kết quả của phương thức Parser.getDocumentInfo() trong đối tượng giao diện IDocumentInfo.
- Sau đó, kiểm tra xem IDocumentInfo.getPageCount() có bằng 0 hay không. Phương thức này trả về tổng số trang tài liệu.
- Lặp lại tất cả các trang và gọi phương thức Parser.getText() cho mỗi chỉ mục trang để trích xuất văn bản và nhận kết quả trong đối tượng lớp TextReader.
- Cuối cùng, hiển thị kết quả bằng cách gọi phương thức TextReader.readToEnd() để đọc văn bản được trích xuất.
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());
}
}
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:
- Đầu tiên, tải tệp DOCX bằng lớp Trình phân tích cú pháp.
- Tạo một thể hiện của đối tượng lớp HighlightOptions và chuyển độ dài tối đa làm tham số đầu vào cho hàm tạo của nó để trích xuất phần đánh dấu có độ dài cố định.
- Sau đó, gọi phương thức Parser.getHighlight() với vị trí bắt đầu và đối tượng lớp HighlightOptions để trích xuất phần đánh dấu từ tài liệu dưới dạng đối tượng của lớp HighlightItem.
- Cuối cùng, gọi phương thức Highlight.getPosition() và HighlightItem.getText() để lấy vị trí và văn bản của phần đánh dấu.
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:
- Đầu tiên, tải tệp DOCX bằng lớp Trình phân tích cú pháp.
- Xác định Tùy chọn văn bản có định dạng và đặt Chế độ văn bản có định dạng thành HTML. Nó cho phép bạn trích xuất văn bản có định dạng HTML từ tài liệu.
- Sau đó, gọi phương thức Parser.getFormattedText() để trích xuất văn bản đã định dạng.
- 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ả văn bản.
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 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());
}
}
}
}
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.