如何在 .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 從幾乎所有文件格式提取文字的完整、可投入生產的做法。依循步驟、套用效能技巧,並結合實務情境,即可打造可擴充的搜尋、合規與遷移解決方案。
接下來的步驟:
- 實作上述的基本提取模式。
- 使用
PageInfo探索分頁,以供 UI 呈現。 - 如有需要,為掃描 PDF 加入 OCR 支援。
- 將提取的文字整合至索引或分析管線。
請記住,最佳的文件處理解決方案會隨應用程式成長——從簡單開始,之後再加入自訂註解、批次處理與安全加固等進階功能。
其他資源
最後更新: 2026-07-01
測試環境: GroupDocs.Annotation 23.10 for .NET
作者: GroupDocs