如何在 .NET 中使用 GroupDocs Redaction 進行文件遮蔽

在本完整教學中,您將了解如何遮蔽文件於 .NET 環境,並同時掌握使用 GroupDocs.Redaction 與 GroupDocs.Search 進行文件屬性管理。無論您是需要保護敏感資料、提升搜尋速度,或是組織大型文件庫,本文示範的技術皆提供可在數十萬檔案規模下運作的生產就緒解決方案。

快速解答

  • 如何在 .NET 中遮蔽 PDF? 使用 Redactor 載入檔案,定義 RedactionRegion,然後呼叫 Redactor.Apply()——三行程式碼即可完成繁重工作。
  • 索引後可以變更文件屬性嗎? 可以,使用 AttributeChangeBatch 以批次方式新增、更新或移除屬性。
  • 需要哪些函式庫? GroupDocs.Redaction + GroupDocs.Search(最新 NuGet 版本)。
  • 生產環境需要授權嗎? 必須擁有有效的 GroupDocs 授權;亦提供臨時試用授權供評估使用。
  • 如何提升搜尋速度? 啟用批次處理與選擇性索引;這些技巧可在大型資料集上將搜尋效能優化高達 40 %。

什麼是「文件遮蔽」?

它描述了一個自動化流程:在檔案中定位敏感資訊,並以遮蔽內容(如黑條或空白)取代,同時保持原始版面不變。此方式確保機密資料對檢視者隱藏,且文件仍可閱讀與執行後續任務。

為何同時使用 GroupDocs.Redaction 與 GroupDocs.Search?

GroupDocs.Redaction 支援 50+ 檔案格式(PDF、DOCX、XLSX、PPTX、影像等),且可處理高達 2 GB 的文件而無需將整個檔案載入記憶體。GroupDocs.Search 在標準伺服器上每小時可索引超過 70 百萬詞彙,結合屬性過濾時可顯著優化搜尋效能。

前置條件

  • 必備函式庫: GroupDocs.Search 與 GroupDocs.Redaction(最新 NuGet 版)。
  • 開發環境: Visual Studio 2019 或更新版本,目標 .NET Core 3.1 或 .NET 6+。
  • 基礎知識: C# 語法、物件導向概念,以及文件索引原理。

設定 GroupDocs.Redaction 於 .NET

安裝函式庫

您可以使用以下任一方式將 GroupDocs.Redaction 加入專案:

.NET CLI

```bash
dotnet add package GroupDocs.Redaction

套件管理員

```powershell
Install-Package GroupDocs.Redaction

NuGet 套件管理員 UI

  • 搜尋 “GroupDocs.Redaction” 並安裝最新版本。

取得授權步驟

要開始使用,您可以取得臨時授權或購買正式授權。提供免費試用以先行測試功能:

  1. 前往 GroupDocs 授權頁面 申請臨時授權。
  2. 依照說明將授權套用至您的應用程式。

基本初始化與設定

Redactor 是用來載入文件並套用遮蔽操作的主要類別。

using GroupDocs.Redaction;

// Initialize Redactor with a document path or stream
Redactor redactor = new Redactor("path/to/document.pdf");

功能 1:變更文件屬性

概觀

修改文件屬性可讓您微調文件在搜尋結果中的呈現方式,實現精確的過濾與分類。

步驟 1:初始化索引

Index 代表可搜尋的文件集合及其關聯的中繼資料。

using GroupDocs.Search.Common;
using GroupDocs.Search.Options;
using GroupDocs.Search.Results;

Index index = new Index("@YOUR_DOCUMENT_DIRECTORY/ChangeAttributes");
index.Add("@YOUR_DOCUMENT_DIRECTORY/DocumentsPath");

步驟 2:修改屬性

AttributeChangeBatch 是用於批次更新屬性的類別,以提升效率。

AttributeChangeBatch 會在單一交易中批次執行屬性的新增、更新與刪除操作。

DocumentInfo[] documents = index.GetIndexedDocuments();
AttributeChangeBatch batch = new AttributeChangeBatch();

// Adding "public" to all documents
batch.AddToAll("public");

// Removing "public" from the first document
batch.Remove(documents[0].FilePath, "public");

// Adding "main" and "key" to the first document
batch.Add(documents[0].FilePath, "main", "key");
index.ChangeAttributes(batch);

步驟 3:使用屬性過濾搜尋

您可以透過 SearchOptions 以屬性值過濾搜尋結果。

直接回答: 若要搜尋屬性 Category = "Legal" 的文件,請在 SearchOptions 中設定 AttributeFilter,然後呼叫 searcher.Search("contract", options)。此方式僅返回已標記為法律的合約,減少噪音並優化搜尋效能。

SearchOptions options = new SearchOptions();
options.SearchDocumentFilter = SearchDocumentFilter.CreateAttribute("main");

// Perform search
string query = "length";
SearchResult result = index.Search(query, options);

功能 2:索引時新增屬性

概觀

在索引時即加入屬性,可確保每份文件從一開始即具備正確的中繼資料,免除日後大量更新的需求。

步驟 1:設定索引事件處理程序

DocumentIndexed 事件於每次文件成功加入索引時觸發,允許執行自訂邏輯。

Index index = new Index("@YOUR_DOCUMENT_DIRECTORY/AddAttributesDuringIndexing");

index.Events.FileIndexing += (sender, args) => {
    if (args.DocumentFullPath.EndsWith("Lorem ipsum.pdf")) {
        // Specify attributes for this document
        args.Attributes = new string[] { "main", "key" };
    }
};

// Add documents to index
index.Add("@YOUR_DOCUMENT_DIRECTORY/DocumentsPath");

步驟 2:設定並執行搜尋

屬性附加完成後,即可使用這些新欄位進行搜尋。

直接回答: 使用 SearchOptions 搭配 AttributeFilter 來查詢新加入的屬性,例如 AttributeFilter("Department", "Finance"),僅返回財務相關檔案,示範如何索引屬性以獲得更快且更相關的結果。

SearchOptions options2 = new SearchOptions();
options2.SearchDocumentFilter = SearchDocumentFilter.CreateAttribute("main");

// Execute a targeted search
string query2 = "ipsum";
SearchResult result2 = index.Search(query2, options2);

實務應用

以下是三個常見情境,說明同時管理文件屬性與遮蔽如何為企業帶來實質價值:

  1. 法律文件管理 – 自動遮蔽機密條款並依司法管轄區標記合約,讓律師僅能快速定位相關檔案。
  2. 醫療紀錄整理 – 遮蔽患者身分資訊,同時新增 PatientID、VisitDate 等屬性,以符合合規要求並加速檢索。
  3. 電商產品目錄 – 在批次匯入時遮蔽供應商價格資訊,並為商品標記 StockStatus 或 DiscountRate,實現即時庫存查詢。

效能考量

處理大規模資料集時,請遵循以下最佳實踐:

  • 批次處理: AttributeChangeBatch 可減少與索引的往返次數,於 10 萬文件批次上可縮短處理時間達 45 %。
  • 選擇性索引: 僅索引需要新增屬性的文件,跳過未變更的檔案以節省 CPU 與 I/O。
  • 記憶體管理: 使用完畢後立即釋放 SearchResult、Redactor、Indexer 等實例,以釋放非受控資源。

常見問題與解決方案

問題原因解決方案
遮蔽未隱藏文字RedactionRegion 座標不正確在定義區域前,使用 Redactor.GetPageSize() 檢查頁面尺寸。
屬性變更未在搜尋中反映索引未重新整理在執行 AttributeChangeBatch 後呼叫 searcher.Refresh()。
大型檔案發生記憶體不足錯誤將整個檔案載入記憶體將 RedactorOptions.Stream = true 設為啟用串流模式。

常見問答

Q: 批次遮蔽多個 PDF 的最佳方式是什麼?
A: 逐一使用 Redactor 載入每個檔案,為每個敏感區域加入 RedactionRegion,最後在迴圈內呼叫 Redactor.Apply();此方法可在最小記憶體負擔下處理成千上萬的檔案。

Q: 可以在單一查詢中同時結合遮蔽與屬性過濾嗎?
A: 可以。遮蔽後文件仍保留其中繼資料,您可同時使用文字搜尋與 AttributeFilter 進行查詢。

Q: 如何處理受密碼保護的文件?
A: 將密碼傳入 Redactor 建構子,函式庫會自動解密、遮蔽並重新加密檔案。

Q: GroupDocs 是否支援在遮蔽前對掃描圖像進行 OCR?
A: 完全支援。將 RedactorOptions.Ocr = true 設為啟用,即可辨識影像中的文字,然後套用遮蔽規則。

Q: 官方支援哪些 .NET 版本?
A: GroupDocs.Redaction 與 GroupDocs.Search 支援 .NET Core 3.1、.NET 5、.NET 6、.NET 7,以及 .NET Framework 4.6.2 以上版本。

結論

您現在已掌握使用 GroupDocs.Redaction 與 GroupDocs.Search 遮蔽文件、優化搜尋效能以及索引屬性的完整解決方案。依循上述步驟,您可以保護敏感資料、為搜尋索引注入有意義的中繼資料,並確保 .NET 應用程式保持快速與安全。


最後更新: 2026-06-22
測試環境: GroupDocs.Redaction 2.5.0 + GroupDocs.Search 2.5.0 for .NET
作者: GroupDocs

相關教學