.NET で GroupDocs Redaction を使用してドキュメントを赤字(マスク)する方法

この包括的なチュートリアルでは、.NET 環境で ドキュメントを赤字(マスク)する方法 を学び、同時に GroupDocs.Redaction と GroupDocs.Search を使用したドキュメント属性管理をマスターできます。機密データの保護、検索速度の向上、または大規模なドキュメントライブラリの整理が必要な場合でも、ここで示す手法は数十万ファイルにスケールする本番環境向けソリューションを提供します。

クイック回答

  • .NET で PDF を赤字(マスク)するには? Redactor でファイルを読み込み、RedactionRegion を定義し、Redactor.Apply() を呼び出します – 3 行のコードで重い処理を実行します。
  • インデックス作成後にドキュメント属性を変更できますか? はい、AttributeChangeBatch を使用して属性を一括で追加、更新、削除できます。
  • 必要なライブラリは何ですか? GroupDocs.Redaction + GroupDocs.Search(最新の NuGet バージョン)。
  • 本番環境でライセンスは必要ですか? 有効な GroupDocs ライセンスが必要です。評価用に一時的なトライアルライセンスも利用可能です。
  • 検索速度を向上させるには? バッチ処理と選択的インデックス作成を有効にします。これらの手法により、大規模データセットで検索パフォーマンスを最大 40 % 最適化できます。

「ドキュメントの赤字(マスク)方法」とは?

これは、ファイル内の機密情報を自動的に検出し、黒いバーや空白などの隠蔽コンテンツに置き換えるプロセスを指します。元のレイアウトはそのまま保持されます。この方法により、機密データは閲覧者から隠されますが、ドキュメントは読みやすく、下流のタスクでも機能し続けます。

GroupDocs.Redaction と GroupDocs.Search を一緒に使用する理由

GroupDocs.Redaction は 50 以上のファイル形式(PDF、DOCX、XLSX、PPTX、画像など)をサポートし、ファイル全体をメモリに読み込まずに 2 GB までのドキュメントを処理できます。GroupDocs.Search は標準サーバーで 1 時間あたり 7,000 万語 をインデックスし、属性ベースのフィルタリングと組み合わせることで 検索パフォーマンスを大幅に最適化 できます。

前提条件

  • 必要なライブラリ: GroupDocs.Search と GroupDocs.Redaction(最新の NuGet リリース)。
  • 開発環境: Visual Studio 2019 以降、.NET Core 3.1 または .NET 6+ を対象。
  • 基本知識: C# の構文、オブジェクト指向の概念、ドキュメントインデックスの原則に関する知識。

.NET 用 GroupDocs.Redaction の設定

ライブラリのインストール

以下のいずれかの方法で GroupDocs.Redaction をプロジェクトに追加できます:

.NET CLI

```bash
dotnet add package GroupDocs.Redaction

パッケージ マネージャー

```powershell
Install-Package GroupDocs.Redaction
  • NuGet パッケージ マネージャー UI
    • Search for “GroupDocs.Redaction” and install the latest version.

ライセンス取得手順

開始するには、一時ライセンスを取得するか購入してください。機能を試すための無料トライアルライセンスが利用可能です。

  1. GroupDocs Licensing Page にアクセスし、一時ライセンスをリクエストします。
  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);

実用的な応用例

以下は、ドキュメント属性管理と赤字(マスク)を組み合わせることで具体的なビジネス価値をもたらす 3 つの一般的なシナリオです:

  1. 法務ドキュメント管理 – 機密条項を自動的に赤字(マスク)し、管轄別に契約書にタグ付けすることで、弁護士が関連ファイルのみを検索できるようにします。
  2. 医療記録の整理 – 患者識別子を赤字(マスク)し、PatientID や VisitDate などの属性を追加して、コンプライアンスを保ちつつ高速に取得できるようにします。
  3. Eコマース製品カタログ – 仕入先の価格情報を赤字(マスク)し、バルクインポート時に 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: 赤字(マスク)前にスキャン画像の 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

関連チュートリアル