# ReadImage 画像対応ワーカーが画像を直接受け取るか、対応ワーカーに問い合わせて説明文を受け取る。 ## 基本 ```js ReadImage({ file_path: "input/screenshot.png" }) // → 画像内の文字・図表・物体について自然言語の説明が返る ``` BrowseWeb で開いたページに載っていた画像は `source/images/` に自動で溜まる。そのまま渡せば読める。ページを開き直してスクリーンショットを撮る必要はない。索引 `source/index.jsonl` の `kind: "image"` の行に、どのページに載っていた画像かが入っている(詳細は `ReadToolDoc({ name: "BrowseWeb" })`)。 ```js ReadImage({ file_path: "source/images/example.com-figure.png" }) ``` ## 動作要件 このツールが使える条件は 2 通りある。 | 条件 | 何が返るか | |---|---| | 実行中の worker が `capabilities.image: true` | 画像そのものが会話に注入される。以後の発言で画像を見ながら考えられる | | 実行中の worker は非対応だが `llm.offload.image: true` かつ `capabilities.image: true` の worker が居る | 対応 worker が書いた**説明文だけ**が返る。画像は会話に載らない | どちらにも当てはまらないとき、このツールはワークスペースで許可されていても function definition から自動除外される。 ### 回した実行(委譲モード)の性質 - **1 回きりの問い合わせ**。画像はエージェントのコンテキストに載らない - 「さっきの画像の右下は何色だった?」のような**追い質問はできない**。知りたいことは `prompt` に全部書く。`prompt` を省くと汎用の説明が返るだけで、価値が大きく落ちる - 観点を変えて聞きたくなったら、`prompt` を変えてもう一度呼ぶ - 呼び出し先は `capabilities.image: true` の worker から空きのある台が自動で選ばれる。全台が埋まって いれば空くまで待つ(タスクを中断すれば待ちからも抜ける) - ブラウザ操作の分割スクリーンショット(既定で最大 10 枚)をこのモードで読むと、 1 枚ずつ独立した説明が 10 個返る。「この表の続きは次の画像」といった**横断した 判断はできない**。必要なら 1 枚ずつ観点を指定して呼ぶ ### prompt の書き方 ```js // 悪い例(委譲モードでは特に価値が低い) ReadImage({ file_path: "input/chart.png" }) // 良い例 ReadImage({ file_path: "input/chart.png", prompt: "縦軸の単位と、2024 年のバーの値を読み取って。凡例の項目名も全部挙げて。", }) ``` ## 用途 - スクリーンショットの内容説明 - 図・グラフ・チャートの読み取り - ページレイアウトの確認 - 写真の被写体・状況把握 ## 文字読み取りについて - ある程度の OCR は可能だが、**精度が要求される文字情報**には別途 OCR ツールの使用を検討 - 数字・記号・固有名詞を厳密に扱う場合は VLM のハルシネーションに注意 - パラメータシート、表、コード等は誤読リスクが高い ## 入力ファイル - `input/` / `output/` / `source/images/` 配下のローカル画像ファイル - URL 指定は不可(DownloadFile で先にローカル保存する) 対応形式は 2 通りある。 | | 形式 | 渡し方 | |---|---|---| | そのまま渡す | png, jpg, jpeg, gif, webp, bmp | ファイルの中身をそのままモデルへ | | PNG に起こして渡す | svg, avif, tiff, tif, ico | こちら側で PNG に変換してからモデルへ。ファイル自体は元の形式のまま残る | 後者はページの魚拓が溜める形式(`source/images/`)に合わせたもの。**BMP を格納した古い形式の `.ico` だけは読めず**、理由付きのエラーが返る(いまの web のアイコンはほぼ PNG を格納しているので通常は当たらない)。