テキストを難読化して PDF ドキュメントからのテキスト抽出を防止する

ブログ カテゴリ: PDF.NET

2020/05/18

VintaSoft Imaging .NET SDK は、すべてのフォント タイプのテキスト エンコーディングを難読化する機能をサポートしています。

目的は何ですか?例えば、ドキュメントをオープンアクセスで公開する場合(またはサードパーティに渡す場合)、ドキュメントのテキストを任意の PDF ビューアでコピー/貼り付けによって簡単に抽出できないようにします。

解決策 1: PDF ドキュメントのセキュリティ設定のフラグを使用してテキストの抽出を禁止します。ただし、設定の遵守は、ユーザーがドキュメントを表示するために使用するアプリケーションによって異なります。PDF ビューアが PDF ドキュメントのセキュリティ設定を無視すると、テキストが簡単に抽出される可能性があります。

解決策 2: テキストのエンコーディングに関する情報を完全に削除し、フォントのグリフを混ぜ合わせ、ページ上の記号コードを混ぜ合わせます。これは、VintaSoft PDF .NET Plug-in で提供されるテキスト エンコーディングを難読化する機能を使用して実行できます。難読化メカニズムにより、テキストのエンコーディングに関する情報が完全に削除され、フォント内およびページ上の記号のグリフが混ぜ合わされ、フォントと記号のグリフが複製されます。このように難読化されたテキストは、OCR を使用してのみ抽出できます。

VintaSoft PDF Editor デモ アプリケーションを使用して、単純な PDF ドキュメント (document-without-text-obfuscation.pdf) の難読化を確認しましょう。

文書は2ページあります。4つの文は3つの異なるフォントを使用して書かれています。

1ページ目と2ページ目の最初の文は同じフォントを使用して書かれています。
Text before text encoding obfuscation in PDF document

テキスト抽出パネルとフォント表示ダ​​イアログには、すべてのシンボルが正しいテキストエンコーディングを持っていることが示されています。
Text characters before text encoding obfuscation in PDF document

テキストエンコーディングの難読化ダイアログは、アプリケーションメニューから呼び出すことができます:テキスト -> テキストエンコーディングの難読化 -> 設定:
Standard settings for text encoding obfuscation in PDF document

デフォルト設定で難読化を実行し、難読化されたテキストを含む出力ドキュメントを確認します: document-with-default-text-obfuscation.pdf

文書を確認すると、フォントが完全に変更され、グリフがランダムに再配置されています。抽出されたテキストは、テキスト抽出パネルで確認できます。
Text after text encoding obfuscation in PDF document

両ページの最初の文は同じフォントで書かれているため、最初の単語(緑色で強調表示)の記号は両ページとも同一です。
The same word is written using one font after text encoding obfuscation in PDF document

「簡単なプログラムを作成してテキストを抽出します。手動で文字マッピングテーブルを作成し、テキストをデコードします。」 そうです。これは可能です。特に文書にフォントが少ない場合は可能です。そのため、難読化設定を実装しました。これにより、デコードタスクの解決がほぼ不可能になります。

テキストエンコーディングの難読化ダイアログを再度開き、 Settings for strong text encoding obfuscation in PDF document

この後、PDF ドキュメント内のテキストエンコードをもう一度難読化し、難読化されたテキストを含む出力 PDF ドキュメントを確認します: document-with-strong-text-obfuscation.pdf

文字「e」に異なるグリフが使用され、抽出されたテキストにはこの文字の異なるコードを持つシンボルが含まれていることがわかります。
The same character is written using different glyphs after text encoding obfuscation in PDF document

1行目の単語「Text」は異なるフォントで書かれています。各フォントでは、独自のランダムな位置とグリフの複製が使用されています。これで、1ページ目と2ページ目からの単語抽出結果は全く異なるものになります。
The same word is written using different fonts after text encoding obfuscation in PDF document