使用 GroupDocs.Viewer for Java 從 docx 提取文字

您是否想以程式方式 從 docx 檔案提取文字?無論您需要提取頁碼、捕獲每一行文字,或是建立可搜尋的索引,手動操作都既耗時又容易出錯。GroupDocs.Viewer for Java 透過提供高效能的 API,讀取文件結構並返回純淨的文字資料,使整個流程變得簡單。

在本教學中,您將學習如何設定 GroupDocs.Viewer、提取頁面中繼資料,並從 DOCX 檔案中抽取每一行文字。完成後,您將擁有一個可直接使用的解決方案,能整合至任何基於 Java 的後端。

Document Analysis with GroupDocs.Viewer for Java

快速解答

  • 什麼是「從 docx 提取文字」? 這表示以程式方式讀取 DOCX 檔案,並逐行取得其純文字內容。
  • 哪個函式庫負責此功能? GroupDocs.Viewer for Java 提供 Viewer 類別及相關 API。
  • 我需要授權嗎? 免費試用可用於評估,正式上線則需購買授權。
  • 需要哪個 Java 版本? 任何相容於 Maven 的 JDK 8 以上皆可。
  • 可以處理大量批次嗎? 可以——透過重複使用 Viewer 實例並以串流方式處理頁面。

什麼是「從 docx 提取文字」?

從 DOCX 檔案提取文字是指讀取文件內部的 XML 結構,並返回不含格式的可讀文字。此功能可用於建立索引、搜尋,或將內容輸入後續的分析管線。

為何使用 GroupDocs.Viewer for Java?

  • 準確度: 能處理複雜版面、表格與多欄文件。
  • 速度: 最佳化的渲染引擎,即使在大型檔案上也能快速運作。
  • 跨格式支援: 同一套 API 可用於 PDF、PPTX、XLSX 等多種格式,讓程式碼得以重複使用。
  • 無外部相依性: 純 Java 實作,無需本機函式庫。

前置條件

  • Java Development Kit (JDK) 8 或更新版本。
  • 已安裝 Maven 用於相依管理。
  • 您欲分析的 DOCX 檔案(請放置於已知資料夾)。

設定 GroupDocs.Viewer for Java

將 GroupDocs 的儲存庫與相依加入您的 pom.xml

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/viewer/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-viewer</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

取得授權步驟

基本初始化

  1. 匯入所需的類別。
  2. 建立指向您的 DOCX 檔案的 Viewer 實例。
  3. 使用 ViewInfoOptions.forPngView(true) 以請求頁面層級資訊(中繼資料與文字行)。

如何從 docx 提取文字 – 步驟指南

1. 提取頁面中繼資料

頁面中繼資料(例如頁碼)在您需要建立導覽結構或引用特定章節時相當重要。

try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
    ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
    ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
    for (Page page : viewInfo.getPages()) {
        int pageNumber = page.getNumber();
        System.out.println("Page: " + pageNumber); // Outputs the page number
    }
}
  • ViewInfoOptions.forPngView(true): 指示 API 在準備 PNG 渲染時收集頁面資訊。
  • viewInfo.getPages(): 回傳一個集合,每個 Page 物件包含其頁碼及其他中繼資料。

小技巧:try‑with‑resources 區塊中釋放 Viewer,即可自動釋放原生資源。

2. 從頁面提取文字行

現在您已能辨識每一頁,接下來提取實際的文字行。

try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
    ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
    ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
    for (Page page : viewInfo.getPages()) {
        System.out.println("Page: " + page.getNumber());
        System.out.println("Text lines:");
        
        for (Line line : page.getLines()) {
            String lineText = line.getValue();
            System.out.print(lineText + "\t");
        }
    }
}
  • page.getLines(): 回傳 Line 物件的清單,每個物件代表頁面上出現的單一文字行。
  • 內層迴圈會印出每一行文字,並以 Tab 分隔以提升可讀性。

常見問題與解決方案

症狀可能原因解決方式
null 頁碼文件未正確載入確認檔案路徑且確保檔案存在。
未返回文字行不支援的檔案格式確認 DOCX 版本受支援;如有需要,升級 GroupDocs。
大型檔案出現 OutOfMemoryErrorViewer 在記憶體中保留過多頁面將頁面分成較小批次處理,或重複使用相同的 Viewer 實例。

實務應用

  1. 搜尋引擎索引: 將頁碼與提取的文字一起儲存,以實現精確的片段檢索。
  2. 法律文件審查: 抽取每一行文字,用於自動條款偵測或遮蔽工作流程。
  3. 內容遷移: 將舊有 DOCX 內容遷入 CMS,並保留其結構。
  4. 報表儀表板: 透過提取標題與項目符號,彙總關鍵章節。

效能考量

  • 正確釋放資源: 必須關閉 Viewer(使用 try‑with‑resources)。
  • 批次處理: 處理大量文件時,於每個執行緒重複使用單一 Viewer 實例以降低開銷。
  • 渲染選項: 若僅需文字,可使用 ViewInfoOptions.forTextView()(此處未示範)跳過 PNG 渲染,以縮短處理時間。

結論

現在您已了解如何使用 GroupDocs.Viewer for Java 從 docx 檔案提取文字、取得頁碼,並逐行遍歷文字。這些基礎組件讓您能建立快速、可靠且易於維護的文件處理管線。

後續步驟

  • 嘗試使用相同 API 處理其他格式(如 PDF、PPTX)。
  • 將提取的文字與全文搜尋引擎(如 Elasticsearch)結合。
  • 若同時需要視覺預覽,可探索渲染圖像的樣式設定選項。

常見問答

Q: GroupDocs.Viewer 支援哪些檔案格式?
A: 它支援多種格式,包括 DOCX、PDF、XLSX、PPTX 等等。

Q: 提取文字行時,我可以自訂輸出格式嗎?
A: 可以,透過設定 ViewInfoOptions(例如 forTextView() 取得純文字)即可。

Q: 可處理的頁數有上限嗎?
A: 沒有硬性上限,但極大型文件可能需要批次處理以維持記憶體效能。

Q: 如何在 GroupDocs.Viewer 中處理例外情況?
A: 將 Viewer 程式碼包在 try‑catch 區塊,依需求處理 ViewerException 或一般的 IOException

Q: 此工具能與其他 Java 框架整合嗎?
A: 當然可以!它能與 Spring、Hibernate、Jakarta EE 等框架無縫結合。

資源


最後更新: 2026-04-13
測試環境: GroupDocs.Viewer for Java 25.2
作者: GroupDocs