- 汎用的な形式はOpenAI互換の
image_urlです: テストした22種類のビジョンモデルすべてで{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}が動作しました。Responses形式およびAnthropic形式は一部のモデルにしか対応していません — 「各形式がサポートするモデル」をご覧ください。 deepseek-v4-proやglm-5.3などのテキスト専用モデルは画像を受け付けません: リクエストは200を返しますが、画像は破棄され、モデルは画像が見えないとだけ応答します。画像がモデルに届いたかどうかを確認するには、レスポンス内のusage.prompt_tokensをご確認ください。- base64を推奨します: 公開URLを使用する場合、プロバイダーが画像をダウンロードする必要があるため、ホストが遅い場合や直リンク防止が設定されている場合、または
Content-Lengthヘッダーがない場合(Qwenではこの場合に400が返されます)に失敗します。
画像認識 · APIYI オンラインツール
動画理解 API
AIエージェントに統合を任せる
このpromptをコピーしてCodex / Claude Code / Cursorに貼り付けてください
まずこのページのプレーンテキスト版を取得し(任意のドキュメントURLの末尾に.mdを追加)、プロジェクト独自のスタックでコードを記述します。汎用的なimage_urlフォーマット、大きな画像の事前のダウンスケール、画像が実際にモデルに届いたことを確認するためのprompt_tokensのチェックは、あらかじめ要件に組み込まれています。
このプロジェクトにおける画像認識(vision understanding)の統合/トラブルシューティング:OCR、カウント、シーン説明、複数画像の比較のためにマルチモーダルモデルに画像を送信します。
コードを触る前にドキュメントを読んでください:このページのプレーンテキスト版を取得するには https://docs.apiyi.com/en/api-capabilities/vision-understanding.md を取得してください。
- エンドポイントとフォーマット:デフォルトではOpenAI互換の
POST https://api.apiyi.com/v1/chat/completionsを使用し、各画像を次のように渡します…
全9項目です。以下のボタンを使用して完全なpromptをコピーしてください。
このpromptが回避するリスク
このpromptが回避するリスク
対応モデル
これらの結果は、2026-10-11 (UTC+8) に実施されたテストに基づいています。すべてのモデルは、同一の1200×760の中英混合注文書画像(表を含む)を一字一句正確に文字起こしし、図形の数を数え、2枚の画像の違いを見つけ、公開画像URLを読み取るテストを受けました。画像を見ずに生成された回答を排除するため、対照実験として空白の画像が使用されました。gemini-3.1-flash-lite および gpt-5.4-mini も画像を読み取ることができ、OCRは完全に正確でしたが、オブジェクトのカウント数を誤る傾向があり(それぞれ3回中0回、3回中1回のみ正解)、カウントタスクへの使用は避けてください。qwen-vl-ocr は専用のOCRモデルで、表のみを出力し、表外のテキストはすべてスキップします。また、複数画像の処理リクエストでは最初の1枚のみを読み取るため、純粋な表や身分証明書などのシナリオでのみご使用ください。
画像に対応していないモデル
各フォーマットがサポートするモデル
クイックスタート:共通フォーマット (image_url)
ローカル画像(Base64、推奨)
公開画像URL
複数の画像を比較する
画像ごとにimage_url ブロックを順番に1つずつ追加し、prompt 内で「画像1」「画像2」のように参照します:
curl
その他のフォーマット
OpenAI Responses (input_image)
すでに OpenAI Responses SDK を利用しているプロジェクト向けです。GPT、Grok、Qwen3.8、Kimi、MiniMax、DeepSeek Vision のみに対応しています — Gemini / Claude / Seed は 400 を返します。
Anthropic Messages (image)
Claude エコシステム(Anthropic SDK、Claude Code など)向けで、エンドポイントは https://api.apiyi.com です。base64 ソースは Claude、Gemini、GPT、Qwen、Kimi、MiniMax に対応していますが、url ソースは Claude でのみ動作します(Gemini は通知なしで画像を破棄します)。
Gemini ネイティブフォーマット (inline_data)
プロジェクトですでに Google 公式の google-genai SDK を使用している場合は、base_url を https://api.apiyi.com に指定するだけです:
x-goog-api-key: YOUR_API_KEY を指定した POST https://api.apiyi.com/v1beta/models/gemini-3.8-flash:generateContent を使用し、画像は contents[].parts[] 内に {"inline_data": {"mime_type": "image/png", "data": "<BASE64>"}} として配置します。ネイティブ形式の詳細な使い方については、Gemini ネイティブフォーマット を参照してください。
まず大きな画像を縮小する
プロバイダーによって大きな画像の処理方法は大きく異なります。約10 MBの9000×6000 JPEG画像1枚のテスト結果は以下のとおりです:よくあるエラー
画像URLのダウンロードタイムアウト
画像URLを渡した際に以下のエラーが発生した場合:マルチモーダルURLのContent-Lengthの欠落(Qwen)
Qwenモデルでは、画像ホストがContent-Lengthレスポンスヘッダーを送信する必要があります。一部のCDN(Cloudflareなど)はチャンク転送で画像を配信し、このヘッダーが含まれないため、このエラーが発生します。同じ画像をオブジェクトストレージから配信するか、代わりにbase64として送信してください。
invalid base64 data(base64フィールドにURLが配置されている)
以下のような400エラーが発生した場合(重要なフレーズはinvalid base64 dataです。文言はモデルによって多少異なります):
data:image/...;base64,プレフィックスに続く内容は、画像ファイル自体のbase64エンコーディングである必要があります。URL形式とbase64形式は排他的であり、混在させることはできません:
宣言された画像タイプが実際のフォーマットと一致しない(メディアタイプの不一致)
以下のような400エラーが発生した場合(重要なフレーズはThe image was specified using the image/png media type, but the image appears to be a image/jpeg imageです):
data:image/png;base64,...)ものの、プロバイダーがそれをデコードしてファイルヘッダーを確認したところ実際の内容がJPEGであることが判明したため、リクエストが拒否されたことを意味します。よくある原因としては、変更されたファイル拡張子からフォーマットを推測したことや、コード内にimage/pngをハードコードしたことなどが挙げられます。
上級者向けのヒント
画像が実際にモデルに届いたか確認する
レスポンス内のusage.prompt_tokens を確認してください。1200×760 の画像は、ほとんどのプロバイダーで約 900〜1,300 tokens(DeepSeek Vision では約 570 tokens)を消費します。テキストのみのリクエストと比べてカウントがほとんど増えない、あるいはまったく増えない場合、画像は破棄されています。これはテキスト専用モデル(deepseek-v4-pro、glm-5.3)、Anthropic エンドポイント経由の Grok、および Anthropic の URL ソース経由の Gemini で発生します。
detail パラメーター
image_url 内の detail: "low" は、一部のモデルでのみ有効です。具体的には gpt-5.4-mini(1,147 → 233 tokens、ただし小さなテキストで誤読が発生し始めます)や Seed(1,340 → 602 tokens、OCR の正確性は完全に維持)などです。GPT-6 / 5.6、Gemini、Claude、Qwen はこれを無視します。tokens を節約するためのより移植性の高い方法は、自身で画像をダウンスケールすることです。
パラメーター
チャットエンドポイントでは、max_tokens と temperature は GPT(GPT-6 を含む)、Claude、Gemini で正常に動作します(テストではこれらすべてで temperature=0.3 が成功しました)。MiniMax-M3 はその <think>...</think> 推論を content 内に含めるため、自身で除去してください。
一般的なタスク向けの prompt アイデア
コードを変更することなく、prompt を変更するだけで同じ画像からまったく異なるタスクを実行できます。- OCR: 「画像内のすべてのテキストを一語一句書き起こし、テーブルは Markdown テーブルとして出力してください」
- カウント / 構造化出力: 「各オブジェクトの個数を数え、JSON のみを出力してください:
{"object": count}」 - 製品分析: 「製品の種類とブランドを特定し、その主なセールスポイントとターゲット層をリストアップしてください」
- 複数画像の比較: 「以下は画像 1 と画像 2 です。すべての相違点をリストアップしてください」
- グラフの読み取り: 「軸、データの傾向、最大値および最小値を読み取ってください」
FAQ
どのモデルが画像を読み取れますか?
どのモデルが画像を読み取れますか?
deepseek-v4-pro や glm-5.3 などのテキスト専用モデルは対応していません。その他のモデルについては、モデル詳細ページの「入力モダリティ」の行をご確認ください。画像を送信したのに、モデルが画像が見えないと応答します
画像を送信したのに、モデルが画像が見えないと応答します
usage.prompt_tokens を確認してください。数十 tokens 程度の場合、画像がモデルに届いていません。主な原因は次のとおりです:① テキスト専用モデルを選択している、② Anthropic エンドポイント経由で Grok を呼び出している、または Anthropic の URL ソース経由で Gemini を呼び出している(どちらも画像が暗黙的に破棄されます)、③ プロバイダーが公開 URL をダウンロードできなかった。base64 を使用して chat image_url に切り替えることで、これらの問題はほぼすべて解決します。モデルを切り替えた途端に同じコードが 400 エラーを返します
モデルを切り替えた途端に同じコードが 400 エラーを返します
image_url フォーマットに切り替えることで、各プロバイダー共通で動作するようになります。Claude が 429 を返しました — レート制限にかかっていますか?
Claude が 429 を返しました — レート制限にかかっていますか?
image exceeds 10 MB maximum と表示されている場合、画像が大きすぎます(base64 エンコード後のサイズで判定)。再試行しても解決しないため、長辺を約 2048 px にリサイズして再送信してください。GPT ビジョンがタイムアウトし続けるか、429 やパッチ上限超過の 400 を返します
GPT ビジョンがタイムアウトし続けるか、429 やパッチ上限超過の 400 を返します
patches ... exceeding the limit を返します。再試行しても解決しません。長辺を 2048 px に縮小して再送信してください。テスト結果と診断方法については、「画像理解リクエストがタイムアウトし続ける — 画像が大きすぎますか?」をご覧ください。なぜ 1 枚の画像に数万 tokens も消費されたのですか?
なぜ 1 枚の画像に数万 tokens も消費されたのですか?
gpt-6-sol で 63,658 入力 tokens が課金されました。長辺を約 2048 px にリサイズした後、同じ画像は gpt-6-sol で 3,320 tokens に減少し、各プロバイダー全体でも約 700〜3,700 tokens に収まりました。どの画像フォーマットがサポートされていますか?
どの画像フォーマットがサポートされていますか?