使用 GroupDocs.Viewer for Java 從 docx 提取文字
您是否想以程式方式 從 docx 檔案提取文字?無論您需要提取頁碼、捕獲每一行文字,或是建立可搜尋的索引,手動操作都既耗時又容易出錯。GroupDocs.Viewer for Java 透過提供高效能的 API,讀取文件結構並返回純淨的文字資料,使整個流程變得簡單。
在本教學中,您將學習如何設定 GroupDocs.Viewer、提取頁面中繼資料,並從 DOCX 檔案中抽取每一行文字。完成後,您將擁有一個可直接使用的解決方案,能整合至任何基於 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>
取得授權步驟
- 免費試用: 從 GroupDocs 下載頁面 下載免費試用版。
- 臨時授權: 透過 臨時授權頁面 取得延長測試的臨時授權。
- 購買授權: 若需完整功能與支援,請透過 GroupDocs 購買入口 購買授權。
基本初始化
- 匯入所需的類別。
- 建立指向您的 DOCX 檔案的
Viewer實例。 - 使用
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。 |
大型檔案出現 OutOfMemoryError | Viewer 在記憶體中保留過多頁面 | 將頁面分成較小批次處理,或重複使用相同的 Viewer 實例。 |
實務應用
- 搜尋引擎索引: 將頁碼與提取的文字一起儲存,以實現精確的片段檢索。
- 法律文件審查: 抽取每一行文字,用於自動條款偵測或遮蔽工作流程。
- 內容遷移: 將舊有 DOCX 內容遷入 CMS,並保留其結構。
- 報表儀表板: 透過提取標題與項目符號,彙總關鍵章節。
效能考量
- 正確釋放資源: 必須關閉
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 等框架無縫結合。
資源
- GroupDocs Documentation
- API Reference
- Download GroupDocs.Viewer
- Purchase a License
- Free Trial Download
- Temporary License Request
最後更新: 2026-04-13
測試環境: GroupDocs.Viewer for Java 25.2
作者: GroupDocs