Tìm kiếm một từ trong PDF bằng Java

Bạn có thể cần tìm kiếm một văn bản cụ thể từ tài liệu Word hoặc PDF. Là nhà phát triển Java, bạn có thể tìm kiếm bất kỳ văn bản nào từ tài liệu PDF theo chương trình. Trong bài viết này, bạn sẽ tìm hiểu cách tìm kiếm một từ trong tài liệu PDF bằng Java.

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

API Java để tìm kiếm văn bản

Tôi sẽ sử dụng API GroupDocs.Search for Java để tìm kiếm trong tài liệu PDF. Nó cho phép bạn thực hiện các thao tác tìm kiếm văn bản ở tất cả các định dạng tài liệu phổ biến như PDF, Word, Excel, PowerPoint, v.v. Bạn có thể dễ dàng tìm nạp thông tin cần thiết của mình từ các tệp, tài liệu, email và kho lưu trữ bằng API này. Nó cũng cho phép bạn tạo và hợp nhất nhiều chỉ mục. Bạn có thể sử dụng các truy vấn đơn giản, Boolean, Biểu thức chính quy (Regex), Fuzzy và các loại truy vấn khác để tìm kiếm nhanh chóng và thông minh thông qua các chỉ mục.

Tải xuống và cấu hình

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 các ứ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>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>20.11</version> 
</dependency>

Tìm kiếm văn bản trong PDF bằng Java

Bạn có thể dễ dàng tìm kiếm bất kỳ văn bản hoặc một từ cụ thể nào trong tài liệu PDF của mình bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

  • Tạo một Chỉ mục
  • Chỉ định đường dẫn đến thư mục chỉ mục
  • Đăng ký sự kiện chỉ mục
  • Thêm tệp vào Chỉ mục bằng cách gọi phương thức add
  • Thực hiện tìm kiếm bằng phương pháp tìm kiếm
  • Sử dụng SearchResult và in tóm tắt
  • Đánh dấu kết quả tìm kiếm ở đầu ra bằng phương pháp highlight

Mẫu mã sau đây cho biết cách tìm kiếm một từ trong tài liệu PDF bằng Java.

String indexFolder = "C:\\Index\\"; // Specify the path to the index folder
String documentsFolder = "C:\\Files\\"; // Specify the path to a folder containing documents to search

// Tạo một chỉ mục mới hoặc
// Mở một chỉ mục hiện có
Index index = new Index(indexFolder);

// Đăng ký các sự kiện chỉ mục
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
    public void invoke(Object sender, IndexErrorEventArgs args) {
        System.out.println(args.getMessage()); // Writing error messages to the console
    }
});

// Thêm tập tin đồng bộ
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// Thực hiện tìm kiếm
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// Sử dụng kết quả tìm kiếm
// In kết quả
System.out.println("Documents found: " + result.getDocumentCount());
System.out.println("Total occurrences found: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
}

// Đánh dấu các lần xuất hiện trong văn bản
if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0); // Getting the first found document
    String path = "C:\\Output\\Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the HtmlHighlighter object
    index.highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    System.out.println();
    System.out.println("Generated HTML file can be opened with Internet browser.");
    System.out.println("The file can be found by the following path:");
    System.out.println(Paths.get(path).toAbsolutePath().toString());
}

Mẫu mã trên sẽ tạo ra kết quả đầu ra sau:

Documents found: 1
Total occurrences found: 6
	Document: C:\Files\Lorem ipsum.pdf
	Occurrences: 6

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Output\Highlighted.html
Tìm kiếm một từ trong tài liệu PDF bằng Java

Tìm kiếm một từ trong tài liệu PDF bằng Java

Chỉ mục và sự kiện chỉ mục

Lớp Index là lớp chính để lập chỉ mục tài liệu và tìm kiếm thông qua chúng. Một chỉ mục có thể được tạo trong bộ nhớ hoặc trên đĩa bằng cách gọi hàm tạo của lớp này. Tôi đã tạo nó trên đĩa để có thể sử dụng lại.

Để nhận thông tin về lỗi lập chỉ mục, tôi đã đăng ký sự kiện ErrorOccurred. Nó sẽ hiển thị các lỗi nếu có xảy ra trong quá trình lập chỉ mục các tệp.

Thêm tệp vào chỉ mục

Phương thức add của lớp Index thêm một tệp hoặc tất cả các tệp trong một thư mục hoặc các thư mục con theo đường dẫn tuyệt đối hoặc tương đối. Tất cả các tài liệu trên đường dẫn nhất định sẽ được lập chỉ mục.

Thực hiện thao tác tìm kiếm

Lớp Index cung cấp các phương thức tìm kiếm khác nhau để thực hiện thao tác tìm kiếm. Bạn có thể tìm kiếm theo từ khóa đơn giản hoặc bằng cách xác định SearchQuery.

Lớp SearchResult cung cấp chi tiết về kết quả tìm kiếm phù hợp với truy vấn tìm kiếm. Một số phương pháp được mô tả ở đây:

Đánh dấu kết quả tìm kiếm

Lớp HtmlHighlighter tạo điều kiện làm nổi bật kết quả tìm kiếm trong toàn bộ văn bản tài liệu được định dạng bằng HTML.

Phương thức highlight của lớp Index tạo ra các lần xuất hiện đánh dấu đầu ra HTML của các thuật ngữ được tìm thấy. Bạn có thể tìm thêm thông tin chi tiết về “Đánh dấu kết quả tìm kiếm" trong tài liệu.

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 tìm kiếm một từ trong tài liệu PDF bằng Java. Bạn có thể tìm hiểu thêm về GroupDocs.Tìm kiếm 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