[]
人工知能(AI)のPDFドキュメント管理への統合は、人や組織がデジタルコンテンツとやり取りする方法を大きく変革しています。従来、契約書や論文、レポートなど長いPDFから重要な情報を抽出する作業は手作業で時間がかかるものでした。AI搭載ツールによって、ドキュメントの要約、関連データの抽出、さらにはドキュメントのアウトラインツリーの生成まで自動化が可能となりました。
DioDocs for PDF のAI機能は、GrapeCity.Documents.Pdf.AI 名前空間で提供されており、DioDocs.Pdf.AI.ja という別パッケージでご利用いただけます。このパッケージはOpenAIサービスを利用し、以下の2つのクラスによってAI機能を実装しています。
OpenAIDocumentAssistant - OpenAI .NET パッケージを利用し、OpenAI REST API と連携
AzureOpenAIDocumentAssistant - Azure.AI.OpenAI パッケージを利用し、Azure OpenAI サービスと連携
現在、以下の3つのAI搭載機能が対応されています。
DioDocs.Pdf.AI.ja ライブラリには追加ライセンスは不要ですが、ご利用のアプリケーションで渡す GcPdfDocument インスタンスで動作します。すべての機能を制限なく利用するには、DioDocs for PDF ライブラリが正しくライセンスされている必要があります。
DioDocs for PDF がライセンスされていない場合:
PDFドキュメントの最初の5ページのみが処理されます。
出力の各ページにライセンスリマインダー(ナグメッセージ)が表示されます。
DioDocs for PDF でライセンスを適用する方法については、「ライセンス情報」をご参照ください。
Microsoft Visual Studio を開き、新しいプロジェクトの作成します。

DioDocs.Pdf.ja および DioDocs.Pdf.AI.ja パッケージをインストールします。

パッケージ名をインクルードし、以下のコード例のように OpenAI または AzureOpenAI のトークン およびエンドポイントを指定してください。
using GrapeCity.Documents.Pdf.AI;
// OpenAIを利用する場合。
var openAiToken = @"...";
var a = new OpenAIDocumentAssistant(openAiToken);メモ: 同様の手順で AzureOpenAIDocumentAssistantt クラスも利用可能です。
DioDocs.Pdf.AI.ja では、ドキュメントの要約や概要を生成するための GetAbstract および GetSummary メソッドが提供されています。AIエンジンへのリクエスト内容をカスタマイズするために、2つの文字列プロパティ GetAbstractMessage および GetSummaryMessage が用意されています。また、リクエスト対象となるページ範囲を指定するための OutputRange パラメーターも提供されています。このパラメーターは既定でnullに設定されており、その場合はドキュメント全体のページが要約対象となります。
以下のコードスニペットは、GetAbstract および GetSummary メソッドの使用方法を示しています。
var doc = new GcPdfDocument();
using var fs = File.OpenRead("myDocument.pdf");
doc.Load(fs);
// 概要メッセージを設定します。
a.GetAbstractMessage = "PDFを分析し、文書の簡潔な要約を返してください。";
// PDFの概要を取得します。
string @abstract = await a.GetAbstract(doc/*, pageRange*/);
//pageRangeは既定でnull。
// 要約メッセージを設定します。
a.GetSummaryMessage = "PDFを分析し、文書の概要を返してください。";
// 要約対象のページ範囲を設定します(例:1〜5ページ)。
OutputRange o1 = new OutputRange("1-5");
// 要約を取得します。
string summary = await a.GetSummary(doc, pageRange: o1);
制限事項:
AIによる生成結果は常に正確とは限りません。GetTable や BuildOutlines などのメソッドはAIベースの処理に依存しているため、出力の精度や信頼性が変動します。
メモ: DioDocs for PDF用のAIアシスタントは、エンドポイントやモデルなどのオプションを指定することができます。詳細については、こちらの「デモ」をご参照ください。
DioDocs.Pdf.AI.ja では、PDFドキュメントのアウトライン(目次)を生成する BuildOutlines メソッドが用意されています。AIが生成するアウトラインは アウトラインテキストのみ で、座標情報は含みません。AIエンジンへのリクエスト内容をカスタマイズする BuildOutlinesMessage プロパティも用意されています。
AI以外で追加アウトラインを持たせる場合の OutlineNodeCollection パラメータ、またリクエストページ範囲を指定する OutputRange パラメータも利用できます。
以下のコードスニペットは、BuildOutlines メソッドの使用例です。
// アウトラインの生成します。
await a.BuildOutlines(doc);
doc.Save("myDocumentWithOutlines.pdf");
制限事項:
AIエンジンから返されるテキストがPDF内のテキストと完全一致しない場合、このマッチング処理が失敗することがあります。書式や空白、言い換えの違いなどで一致しない場合があります。
AIエンジンはアウトラインツリーをJSON形式で返しますが、まれにJSONが不正な場合があり、その際は BuildOutlines メソッドで「invalid JSON response」例外がスローされます。
DioDocs.Pdf.AI.ja では、PDFドキュメント内のテーブルを抽出するための GetTable メソッドが提供されています。このメソッドは GrapeCity.Documents.Pdf.AI 名前空間の Table クラスで定義される Table オブジェクトを返します。このテーブルはAIの応答結果に基づき構築されます。
抽出したいテーブルをAIに特定させるため、tableRequest という文字列パラメータで、自然言語によるプロンプトを指定します。例:
「'PDFファイルからすべての表を抽出してください。」
AIエンジンへのリクエスト内容をカスタマイズする GetTableMessageFmt プロパティや、リクエストページ範囲を指定する OutputRange パラメータも利用できます。
以下のコードスニペットは、GetTable メソッドの使用例です。
// PDFからGrapeCity.Documents.AI.Tableオブジェクトを取得します。
// GetTableMessageFmtはAIへの一般的なリクエストで、以下はそのデフォルト値です。
a.GetTableMessageFmt = "PDFを分析してください。{0}。追加情報なしで表のみを返してください。";
// (第2引数はtableRequestです。)
var t = await a.GetTable(doc, "PDFファイルからすべての表を抽出してください。");
メモ: AIプロンプトでは、表の位置を「ページ番号」ではなく「章(見出し)」などの内容に基づいて指定することを推奨します。PDFはページごとではなく、1つの連続したテキストとしてAIに渡されるため、ページ番号を指定しても正しく認識されない場合があります。
AI生成機能に関する注意
1. 本機能の概要および外部AIサービスの利用
本機能は、サーバーを介して外部のAI関連サービス、クラウドサービス、またはこれらに付随するAPI(以下、総称して「外部AIサービス」といいます)を利用し、お客様(外部AIサービスの利用者を含みます。以下同じ)の入力内容に基づいて、テキスト、画像および分析結果等を生成する補助機能です。
外部AIサービスにおけるデータの取扱いについては、各提供者が定める規約が適用されます。
2. 利用上の注意
AIの特性上、本機能により生成される内容(文章、回答、分析結果その他一切の内容を含むものとし、以下「生成結果」といいます)には、不正確な情報や不完全な表現、または誤解を招く内容が含まれる可能性があります。お客様は、生成結果をあくまで参考情報として取り扱い、当該結果のみに基づいて意思決定、判断、または行動を行わないものとします。
生成結果を実際の業務や意思決定に利用する場合は、必ずお客様ご自身で内容をご確認・検証してください。
本機能は、お客様の業務を補助する目的で提供されるものであり、業務上の最終的な判断およびその生成結果については、お客様ご自身の責任において行うものとします。
3. AI生成結果に関する免責事項
本機能は、お客様が契約する第三者が提供する外部AIサービスを利用しており、当該サービスの仕様変更、利用制限、または技術的な問題等に起因して、生成結果の品質や提供状況に影響が生じる場合があります。
本機能の生成結果は、人工知能による自動生成であり、その確実性、完全性、真実性、正確性、最新性、有用性、特定目的への適合性または合法性について、当社は一切保証しません。また、当該生成結果の利用に起因してお客様または第三者に生じた損害について、当社は一切の責任を負わないものとします。
4. 利用者の責任および法令遵守
お客様は、本機能に入力する情報について、適法に取得されたものであり、本機能に入力・利用するために必要な正当な権限を有していることを前提としてご利用ください。
当社は、生成結果が、当社または第三者の知的財産権(著作権、特許権、商標権等を含みます)その他一切の権利を侵害しないことを保証しません。
本機能の利用にあたっては、関係法令および第三者の権利を遵守してください。