如何在 .NET 中從文件提取文字:完整的 GroupDocs.Annotation 指南

有沒有遇過在 .NET 應用程式中卡住,無法提取文件的文字內容?你並不孤單。在本指南中,我們將示範如何使用 GroupDocs.Annotation for .NET 提取文字,無論你是要建立搜尋索引、合規掃描器或是遷移工具。你將獲得可直接執行的解決方案、效能技巧以及實務使用模式。

快速回答

  • 哪個函式庫負責文字提取? GroupDocs.Annotation for .NET.
  • 支援的格式? 超過 50 種格式,包括 PDF、DOCX、PPTX、XLSX 以及影像。
  • 最低 .NET 版本? .NET Framework 4.6.1、.NET Core 3.1,或任何 .NET Standard 2.0 目標。
  • 授權需求? 生產環境需要有效的 GroupDocs.Annotation 授權。
  • 可以用 C# 處理 PDF 嗎? 可以 — 使用 Annotator 類別載入 PDF 並取得其文字。

何時使用文件文字提取

在深入程式碼之前,讓我們釐清文字提取至關重要的情境:

  • 建立搜尋與索引系統 – 讓每份文件皆可依內容搜尋。
  • 建立文件分析工具 – 統計字數、偵測模式,或執行自然語言處理。
  • 開發合規軟體 – 抽取受規範的資料(例如合約條款)以供稽核報告使用。
  • 內容遷移專案 – 將文字從舊有格式搬移至現代系統。
  • 文件審閱工作流程 – 在人工註解前自動化初步篩選。

GroupDocs.Annotation 的優勢在於它抽象化了格式差異,並在所有支援的檔案類型上提供一致的結果。

前置條件與設定

開發環境

  • Visual Studio 2019 或更新版本(Community 版亦可)。
  • .NET Framework 4.6.1+ 或 .NET Core 3.1+
  • 至少 2 GB 記憶體以處理較大的文件。

知識需求

  • 基本的 C# 程式設計
  • 了解 using 陳述式以確保確定性釋放
  • 熟悉 NuGet 套件管理

安裝 GroupDocs.Annotation

透過 NuGet 套件管理員主控台:

Install-Package GroupDocs.Annotation -Version 25.4.0

透過 .NET CLI:

dotnet add package GroupDocs.Annotation --version 25.4.0

專業提示: 總是固定版本(例如 Install-Package GroupDocs.Annotation -Version 23.10),以避免套件自動更新時產生意外的破壞性變更。

授權設定

GroupDocs.Annotation 在生產環境使用時需要授權。選項包括:

  • 免費試用 – 適合評估與小型概念驗證。
  • 臨時授權 – 適用於開發與自動化測試流程。
  • 完整授權 – 任何商業部署皆需此授權。

前往 GroupDocs 購買頁面 以及完整的 文件說明。

如何使用 GroupDocs.Annotation 提取文字?

載入文件,讓 Annotator 解析,並取得純文字表示——只需兩個簡潔步驟。Annotator 類別負責格式偵測、串流管理與文字彙整,讓你專注於業務邏輯。此直接解答提供可直接複製貼上的即用模式,適用於任何 .NET 專案。

Annotator 是 GroupDocs.Annotation 的核心類別,用於載入與解析文件,以進行註解與文字提取。

// Load the file
using (var annotator = new Annotator("sample.pdf"))
{
    // Retrieve all pages' text as a single string
    string fullText = annotator.GetDocumentText();
}

步驟式實作指南

步驟 1:基本設定與初始化

using 陳述式保證在區塊結束時釋放所有非受控資源,避免在處理大量或大型檔案時發生記憶體洩漏。

using GroupDocs.Annotation;

// Set the path to your document
const string DOCUMENT_PATH = "YOUR_DOCUMENT_DIRECTORY";

// Initialize Annotator with the document path
using (Annotator annotator = new Annotator(DOCUMENT_PATH + "/ANNOTATED_DOCX"))
{
    // Further operations will go here
}

步驟 2:核心文字提取實作

GetDocumentText() 會回傳載入文件中所有頁面的串接純文字。

using GroupDocs.Annotation;
using GroupDocs.Annotation.Models;

// Ensure you have set DOCUMENT_PATH correctly
using (Annotator annotator = new Annotator(DOCUMENT_PATH + "/ANNOTATED_DOCX"))
{
    // Subsequent operations will be performed within this context
}

步驟 3:取得文件資訊

GetDocumentInfo() 提供載入文件的中繼資料,如頁數、檔案大小與格式。

// Retrieve document information using GroupDocs.Annotation API
IDocumentInfo documentInfo = annotator.Document.GetDocumentInfo();

步驟 4:處理頁面資訊

GetPagesInfo() 會回傳 PageInfo 物件的集合,每個物件代表單一頁面的詳細資訊,包括文字、尺寸與旋轉角度。

foreach (PageInfo page in documentInfo.PagesInfo)
{
    // Display page number, width, and height
    Console.WriteLine($"Page number {page.PageNumber}, width: {page.Width} and height: {page.Height}");
}

如何使用 C# 與 GroupDocs.Annotation 從 PDF 提取文字?

使用 Annotator 載入 PDF,呼叫 GetDocumentText(),即可一次取得完整文字內容。此方法適用於任何 PDF,無論是否包含嵌入字型或向量圖形,且會保留 Unicode 字元。

using (var annotator = new Annotator("contract.pdf"))
{
    string pdfText = annotator.GetDocumentText();
}

當 PDF 已包含可選取文字時,此方法可免除第三方 OCR 套件的需求。若為掃描 PDF,則需結合 GroupDocs.Annotation 的 OCR 附加元件(本指南不涵蓋)。

GroupDocs.Annotation 支援哪些格式的文字提取?

GroupDocs.Annotation 支援 超過 50 種 輸入與輸出格式,包括 PDF、DOCX、PPTX、XLSX、TXT、HTML 以及常見影像類型(PNG、JPEG、BMP)。此函式庫會原生處理每種格式,意味著在提取文字前無需先轉換檔案。

常見挑戰與解決方案

檔案路徑問題

問題: 即使檔案存在仍出現 “File not found” 錯誤。
解決方案: 總是使用絕對路徑,或在呼叫 API 前確認工作目錄。

IsSupported() 會檢查給定的檔案格式是否受 GroupDocs.Annotation 支援。

string documentPath = Path.GetFullPath(DOCUMENT_PATH + "/your-document.docx");
if (!File.Exists(documentPath))
{
    throw new FileNotFoundException($"Document not found: {documentPath}");
}

大型文件的記憶體管理

問題: 處理數百頁檔案時發生記憶體不足例外。
解決方案: 將文件分段處理,及時釋放每個 Annotator 實例,若在資源受限的伺服器上,可考慮啟用 MemoryLimit 屬性。

損壞文件的處理

問題: 損壞檔案會拋出例外。
解決方案: 將呼叫包在 try‑catch 區塊中,記錄例外,並可選擇在解析前使用驗證程序檢查檔案完整性。

格式相容性問題

問題: 不支援的格式會導致當機。
解決方案: 在初始化前呼叫 Annotator.IsSupported(filePath),若格式不支援則通知使用者。

效能最佳實踐

記憶體最佳化

  • 為每個 Annotator 實例使用 using 陳述式。
  • 以逐頁方式處理大型檔案,而非一次載入整個文件至記憶體。
  • 如有可能,將常用文件快取於唯讀記憶體儲存區。

效能監控

  • 記錄不同檔案大小執行 GetDocumentText() 的耗時。
  • 使用效能計數器或分析工具追蹤記憶體使用情況。
  • 為 UI 友善的應用程式啟用非同步處理(Task.Run)。

錯誤處理策略

  • 將所有註解操作的例外處理集中管理。
  • 回傳使用者友善的訊息(例如 “所選檔案已損壞或不支援”)。
  • 為暫時性的 I/O 錯誤實作重試機制,特別是從網路共享讀取時。

真實案例實作情境

文件管理系統整合

對每個上傳的文件進行文字提取後建立索引,將文字儲存於可搜尋的索引(例如 Elasticsearch)。這樣即可在 PDF、Word 檔案與簡報間進行全文搜尋,無需第三方轉換器。

法律文件處理

自動抽取合約中的條款標題、日期與當事人名稱。將提取的文字與正規表達式或 NLP 函式庫結合,以標示高風險語句。

電子學習平台強化

讓講義投影片與課程 PDF 可搜尋,產生行動版摘要,並將文字輸入推薦引擎,以建議相關內容。

合規與稽核系統

從法規表單中抽取必要欄位(例如稅號、合規代碼),再將其輸入報告管線,產生稽核追蹤。

進階設定選項

效能調校

  • 根據伺服器記憶體調整 Annotator.Options.MemoryLimit。
  • 設定 Annotator.Options.MaxConcurrentProcesses 以控制平行度。
  • 若僅需文字,可使用 Annotator.Options.SkipImages 以縮短處理時間。

Options 屬性允許為 Annotator 實例設定與效能相關的設定,如記憶體上限與併發數量。

安全性考量

  • 將授權存放於安全保管庫,切勿硬編碼。
  • 將文件於靜止時加密,僅在處理時於記憶體中解密。
  • 針對每筆註解與提取請求進行稽核,以符合合規需求。

疑難排解指南

  • 「授權無效」錯誤: 檢查授權檔案路徑,並確保授權版本與函式庫版本相符。
  • 處理速度緩慢: 檢查文件大小,啟用串流 (Annotator.Options.UseStream = true),並考慮非同步執行。
  • 格式特定差異: 某些舊版 Office 檔案可能需要 OfficeInterop 附加元件;請參考官方格式矩陣。
  • 網路相關問題: 從雲端儲存讀取時,使用具容錯的檔案傳輸邏輯,搭配逾時與指數退避。

常見問答

Q: GroupDocs.Annotation 所需的最低 .NET 版本是什麼?
A: 它支援 .NET Framework 4.6.1+、.NET Standard 2.0 以及 .NET Core 3.1+,讓你在舊版與現代專案間皆具彈性。

Q: 能否處理儲存在雲端儲存(如 AWS S3 或 Azure Blob)中的文件?
A: 可以,先將檔案下載至暫存串流,然後將該串流傳入 Annotator 建構子。

Q: 如何處理極大型文件而不致記憶體問題?
A: 啟用串流,逐頁處理,並確保即時釋放 Annotator 實例。

Q: 文件大小或註解數量有上限嗎?
A: 沒有硬性上限,但效能會隨檔案大小與註解密度而變化;請以實際工作負載進行基準測試。

Q: 完全支援哪些文件格式?
A: 超過 50 種格式——包括 PDF、DOCX、PPTX、XLSX、TXT、HTML 以及常見影像類型——皆支援文字提取。

Q: 能從受密碼保護的文件提取文字嗎?
A: 可以——在建立 Annotator 時提供密碼(例如 new Annotator(path, password))。

Q: 從掃描文件提取文字的準確度如何?
A: 掃描影像需要 OCR;GroupDocs.Annotation 可整合 OCR 附加元件,將基於影像的頁面轉換為可搜尋文字。

Q: 能在多執行緒應用程式中使用嗎?
A: 完全可以,但每個執行緒需建立獨立的 Annotator,以避免共享狀態衝突。

結論

現在你已掌握使用 GroupDocs.Annotation for .NET 從幾乎所有文件格式提取文字的完整、可投入生產的做法。依循步驟、套用效能技巧,並結合實務情境,即可打造可擴充的搜尋、合規與遷移解決方案。

接下來的步驟:

  1. 實作上述的基本提取模式。
  2. 使用 PageInfo 探索分頁,以供 UI 呈現。
  3. 如有需要,為掃描 PDF 加入 OCR 支援。
  4. 將提取的文字整合至索引或分析管線。

請記住,最佳的文件處理解決方案會隨應用程式成長——從簡單開始,之後再加入自訂註解、批次處理與安全加固等進階功能。

其他資源


最後更新: 2026-07-01
測試環境: GroupDocs.Annotation 23.10 for .NET
作者: GroupDocs

相關教學