HELP

共通マクロ書式

AI書式

AI書式のマクロは、AI解析サーバー「eDocAIServer」と連携し、画像をAI(画像解析モデル)に渡して、指示文に従った情報の読み取り(OCR・項目抽出など)を行います。利用には eDocAIServer のセットアップと起動が必要です。

eDocAIServerは現在開発中のアプリケーションです。AI書式マクロは現在は使用できません。

接続先は eDocAIServer 側の「接続先(クライアント)」設定(ホスト/ポート/APIキー)を参照します。同一PCで運用する場合は既定(127.0.0.1:8765)で動作します。別PCのAIサーバーを利用する場合は、接続先がローカル以外のときに画像を自動で base64 化して送信します。

項目 説明
指示文 読み取ってほしい内容を自由な文章で指定します。結果のキー名は指示文で指定します(例「注文番号を読み取って」→キー「注文番号」)。指示文中にカンマ「,」を含める場合は、マクロの引数区切りと区別するため |, とエスケープして記述します(例「A|,B|,Cを読み取って」)。
結果の格納 解析結果は結果属性名のスレッド配下にユーザーデータとして格納されます。{%GET_U(結果属性名,項目名)}で取得します。読み取れなかった項目は空文字になります。
成否判定 結果属性名スレッド内の_status(ok / error / timeout)で判定します。エラー内容は_errorに格納されます。同期マクロは戻り値でも同じ値を返します。
画像 ローカルドライブのパスで指定します。DocuWorks文書はDW_OUTPUT_JPEG_IMAGE等で一時画像を出力して渡します。
think(任意) 末尾の任意引数。推論モード(on|off|auto)。省略時は既定が使われます。
プロンプト名(任意) 末尾の任意引数。eDocAIServer に登録した名前付きプロンプトの選択。省略または「デフォルト」で既定プロンプトを使用します。
NAME AI画像解析(同期)
FORMAT {%AI_ANALYZE_IMAGE(画像パス,指示文,結果属性名,[think],[プロンプト名])}

画像をAIサーバーに送り、指示文に従って解析した結果をユーザーデータに格納します。解析が完了するまで待機する同期処理です。少量・対話的な処理に向いています。

戻り値は ok / error / timeout を返します(結果属性名スレッド内の _status と同じ値)。結果の各項目は結果属性名スレッド配下に格納され、 {%GET_U(結果属性名,項目名)} で取得します。

引数 説明
画像パス 解析する画像ファイルのパス。
指示文 読み取り内容の指示。指示文中にカンマを含める場合は |, とエスケープします。
結果属性名 結果を格納するユーザーデータ名。
think(任意) 推論モード on|off|auto。省略時は既定。
プロンプト名(任意) 名前付きプロンプトの選択。省略時は既定。
例1
処理中の画像から注文番号と氏名を読み取り、ログに出力する。エラーの場合はエラーログに出力する。
{%AI_ANALYZE_IMAGE({%GET(FullPathFileName)},注文番号と氏名を読み取って,Res)}
{%IF({%GET_U(Res,_status)}=ok,
    {%WRITE_LOG(注文番号:{%GET_U(Res,注文番号)} 氏名:{%GET_U(Res,氏名)})}
,
    {%WRITE_ERROR_LOG(AI解析失敗:{%GET_U(Res,_error)})}
)}
NAME AI画像解析(非同期)
FORMAT {%AI_ANALYZE_IMAGE_ASYNC(画像パス,指示文,結果属性名,エコー属性名,結果ファイルパス,[think],[プロンプト名])}

画像をAIサーバーに非同期で投入します。投入後すぐに戻るため、大量の画像を次々に投入できます。解析が完了すると、サーバーが結果ファイルパスに結果を書き出します。戻り値はジョブID(投入に失敗した場合は空文字)です。

エコー属性名には、結果に同梱したい文脈データ(対象ファイル名やページ番号など)のユーザーデータ名を指定します(事前に SET_U で設定)。サーバーはこのデータを結果ファイルにそのまま書き出すため、どの入力に対する結果かを回収側で判別できます。

結果ファイルは LOAD_USER_DATA 形式(UTF-8)で書き出されます。回収側のバッチで結果ファイル(例 .txt)をフォルダ監視し、 {%LOAD_USER_DATA(...,Leave,UTF-8)} で読み込みます。読み込んだ後、根の _status 、結果属性名スレッド、エコー属性名スレッドを参照します。

引数 説明
画像パス 解析する画像ファイルのパス。
指示文 読み取り内容の指示。指示文中にカンマを含める場合は |, とエスケープします。
結果属性名 結果ファイル内で解析結果を格納するスレッド名。
エコー属性名 結果に同梱する文脈データのユーザーデータ名(事前に SET_U で設定)。
結果ファイルパス 解析完了時にサーバーが結果を書き出すファイルのフルパス。
think(任意) 推論モード on|off|auto。省略時は既定。
プロンプト名(任意) 名前付きプロンプトの選択。省略時は既定。
例1
処理中の画像を非同期で投入する(投入側のバッチ)。対象ファイル名とページを結果に同梱する。
{%SET_U(Echo,対象ファイル名,{%GET(FileName)})}
{%SET_U(Echo,ページ,1)}
{%AI_ANALYZE_IMAGE_ASYNC({%GET(FullPathFileName)},注文番号を読み取って,Res,Echo,D:\AI\Temp\{%GET(FileNameWithoutExtension)}.txt)}
例2
結果ファイル(*.txt)をフォルダ監視で処理し、解析結果と同梱データを取得する(回収側のバッチ)。
{%LOAD_USER_DATA({%GET(FullPathFileName)},Result,Leave,UTF-8)}
{%IF({%GET_U(Result,_status)}=ok,
    {%WRITE_LOG(対象:{%GET_U(Result,Echo,対象ファイル名)} 注文番号:{%GET_U(Result,Res,注文番号)})}
,
    {%WRITE_ERROR_LOG(AI解析失敗:{%GET_U(Result,_error)})}
)}
NAME AI複数画像解析(同期)
FORMAT {%AI_ANALYZE_IMAGES(画像リストユーザーデータ名,指示文,結果属性名,結合,[think],[プロンプト名])}

複数の画像をまとめて解析します。画像パスをユーザーデータに順に追加( ADD_U )し、そのユーザーデータ名を画像リストユーザーデータ名に指定します。解析が完了するまで待機する同期処理です。

結合に each を指定すると画像ごとに独立して解析し、結果属性名スレッド配下に 1, 2, … の番号スレッドで格納します(各番号スレッドには画像単位の _status も付きます)。 together を指定すると全画像を1回でまとめて解析します。

引数 説明
画像リストユーザーデータ名 画像パスを順に格納したユーザーデータ名(ADD_U で追加)。
指示文 読み取り内容の指示。指示文中にカンマを含める場合は |, とエスケープします。
結果属性名 結果を格納するユーザーデータ名。
結合 each(画像ごとに独立)|together(まとめて1回)。
think(任意) 推論モード on|off|auto。省略時は既定。
プロンプト名(任意) 名前付きプロンプトの選択。省略時は既定。
例1
2枚の画像をそれぞれ解析し(each)、画像ごとの注文番号をログに出力する。
{%ADD_U(ImgList,D:\AI\Temp\0001.jpg)}
{%ADD_U(ImgList,D:\AI\Temp\0002.jpg)}
{%AI_ANALYZE_IMAGES(ImgList,注文番号を読み取って,Res,each)}
{%WRITE_LOG(1枚目:{%GET_U(Res,1,注文番号)})}
{%WRITE_LOG(2枚目:{%GET_U(Res,2,注文番号)})}
NAME AI複数画像解析(非同期)
FORMAT {%AI_ANALYZE_IMAGES_ASYNC(画像リストユーザーデータ名,指示文,結果属性名,エコー属性名,結果ファイルパス,結合,[think],[プロンプト名])}

複数の画像をAIサーバーに非同期で投入します。投入後すぐに戻り、解析完了時にサーバーが結果ファイルパスに結果を書き出します。戻り値はジョブID(投入に失敗した場合は空文字)です。

引数は AI複数画像解析(同期) に、エコー属性名と結果ファイルパスを加えたものです。エコー・結果ファイルの扱いは AI画像解析(非同期) と同じです。

例1
複数画像をまとめて非同期投入する(投入側のバッチ)。
{%ADD_U(ImgList,{%GET(FullPathFileName)})}
{%SET_U(Echo,対象ファイル名,{%GET(FileName)})}
{%AI_ANALYZE_IMAGES_ASYNC(ImgList,2つの画像の相違点を読み取って,Res,Echo,D:\AI\Temp\{%GET(FileNameWithoutExtension)}.txt,together)}
NAME AIサーバー疎通確認
FORMAT {%AI_HEALTH()}

AIサーバーが稼働し、解析モデルがロード済みかを確認します。利用可能な場合は ok を、未稼働またはモデル未ロードの場合は ng を返します。バッチの先頭でサーバーの状態を確認する用途に使用します。

例1
AIサーバーが利用可能な場合のみ解析処理を行い、利用できない場合はエラーログに出力する。
{%IF({%AI_HEALTH()}=ok,
    {%AI_ANALYZE_IMAGE({%GET(FullPathFileName)},注文番号を読み取って,Res)}
,
    {%WRITE_ERROR_LOG(AIサーバーが利用できません。)}
)}