eDocArrangement2 ヘルプ / 共通マクロ書式
AI書式のマクロは、AI解析サーバー「eDocAIServer」と連携し、画像をAI(画像解析モデル)に渡して、指示文に従った情報の読み取り(OCR・項目抽出など)を行います。利用には eDocAIServer のセットアップと起動が必要です。
eDocAIServerは現在開発中のアプリケーションです。AI書式マクロは現在は使用できません。
接続先は eDocAIServer 側の「接続先(クライアント)」設定(ホスト/ポート/APIキー)を参照します。同一PCで運用する場合は既定(127.0.0.1:8765)で動作します。別PCのAIサーバーを利用する場合は、接続先がローカル以外のときに画像を自動で base64 化して送信します。
|
項目 |
説明 |
|---|---|
|
指示文 |
読み取ってほしい内容を自由な文章で指定します。結果のキー名は指示文で指定します(例「注文番号を読み取って」→キー「注文番号」)。指示文中にカンマ「,」を含める場合は、マクロの引数区切りと区別するため |, とエスケープして記述します(例「A|,B|,Cを読み取って」)。 |
|
結果の格納 |
解析結果は結果属性名のスレッド配下にユーザーデータとして格納されます。 |
|
成否判定 |
結果属性名スレッド内の |
|
画像 |
ローカルドライブのパスで指定します。DocuWorks文書は |
|
think(任意) |
末尾の任意引数。推論モード(on|off|auto)。省略時は既定が使われます。 |
|
プロンプト名(任意) |
末尾の任意引数。eDocAIServer に登録した名前付きプロンプトの選択。省略または「デフォルト」で既定プロンプトを使用します。 |
画像を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)})}
)}
画像を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)})}
)}
複数の画像をまとめて解析します。画像パスをユーザーデータに順に追加( 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,注文番号)})}
複数の画像を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)}
AIサーバーが稼働し、解析モデルがロード済みかを確認します。利用可能な場合は ok を、未稼働またはモデル未ロードの場合は ng を返します。バッチの先頭でサーバーの状態を確認する用途に使用します。
例1 AIサーバーが利用可能な場合のみ解析処理を行い、利用できない場合はエラーログに出力する。
{%IF({%AI_HEALTH()}=ok,
{%AI_ANALYZE_IMAGE({%GET(FullPathFileName)},注文番号を読み取って,Res)}
,
{%WRITE_ERROR_LOG(AIサーバーが利用できません。)}
)}