Claude APIで画像を扱う(ビジョン)

Claude API API 6分で読めます

Claude は画像を理解できるマルチモーダルモデルです。写真・図表・スクリーンショット・図面などをメッセージに含めて渡すと、内容を読み取って説明・分析・書き起こし・分類などを行えます。本記事では Claude API(Messages API)に画像を渡す基本を、対応形式・渡し方(base64 / URL)・複数画像・実務上の注意点まで解説します。これは Anthropic 公式ドキュメントの非公式日本語訳です。最新の仕様は公式ドキュメントをご確認ください。

画像入力の概要

画像は Messages API のメッセージ内で、テキストと同じ content 配列の中に「画像コンテンツブロック」として並べて渡します。1つのメッセージにテキストと画像を混在させられるため、「この画像に写っているものを説明して」「このグラフの数値を書き出して」といった指示が自然に書けます。用途は、写真の説明、手書き・印刷文字の書き起こし(OCR的な用途)、図表やグラフの読み取り、UIスクリーンショットの分析、複数画像の比較など多岐にわたります。画像はモデルへの入力(プロンプト)として扱われ、画像の分だけ入力トークンを消費します。

対応する画像形式

対応する画像形式は JPEG・PNG・GIF・WebP です。渡し方は主に2つで、画像を Base64 に符号化して埋め込む方法と、公開されている画像の URL を指定する方法があります。サイズには上限があり、Base64 で埋め込む場合は1枚あたりのサイズ制限(目安として数MB程度)に注意してください。解像度が非常に高い画像はモデル側で自動的に縮小されるため、極端に大きい画像を送ってもトークンを無駄に消費するだけで精度は上がりません。長辺がおおむね1568ピクセル程度に収まるようリサイズしておくと、コストと速度のバランスが良くなります。1回のリクエストで複数枚(多数)の画像を渡すこともできます。

base64で画像を渡す

手元の画像ファイルを送る場合は、ファイルを Base64 文字列に変換し、type: "image" のブロックとして sourcetype: "base64"media_type(例: image/jpeg)・data(Base64文字列)を指定します。

{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image",
          "source": {
            "type": "base64",
            "media_type": "image/jpeg",
            "data": "/9j/4AAQSkZJRg..."
          }
        },
        { "type": "text", "text": "この画像に写っているものを説明してください。" }
      ]
    }
  ]
}

media_type は実際の画像形式と一致させてください(PNGなら image/png)。公式SDK(Python / TypeScript)を使うと、ファイル読み込みと Base64 変換をヘルパーで簡潔に書けます。

URLで画像を渡す

インターネット上に公開された画像であれば、Base64 に変換せず URL を直接指定できます。sourcetype"url" にして url を渡すだけです。

{
  "type": "image",
  "source": { "type": "url", "url": "https://example.com/diagram.png" }
}

URL 方式はリクエスト本文が軽くなる利点がありますが、その URL に Anthropic 側からアクセスできる必要があります(認証が必要な非公開URLは不可)。社内画像や一時ファイルなど公開できないものは Base64 で渡してください。同じ画像を繰り返し使う場合は、後述の Files API に一度アップロードして参照する方法も便利です。

複数画像とプロンプトのコツ

複数の画像を渡すときは、content 配列に画像ブロックを並べ、各画像の前後にテキストで「1枚目」「2枚目」などのラベルを添えると、モデルがどの画像を指しているか取り違えにくくなります。「2枚の画像の違いを挙げて」「左が変更前、右が変更後です」のように、画像同士の関係を言葉で明示するのが有効です。精度を上げるコツとして、(1)必要な情報が読める解像度は保ちつつ大きすぎない画像にする、(2)何を答えてほしいか(説明・抽出・分類など)を具体的に指示する、(3)表やJSONなど出力形式を指定する、が挙げられます。なお画像内の細かすぎる文字や低品質なスキャンは読み取り精度が下がることがあるため、重要な数値は出力を検証してください。