メインコンテンツへスキップ
APIYIのほとんどの主流チャットモデルは画像を「見る」ことができます。テキスト抽出(OCR)、オブジェクトのカウント、シーンの説明、複数の画像の比較などが可能です。このページでは、2026-10-11 (UTC+8) のテストに基づくサポートリスト、画像1枚あたりの消費token数、4つのリクエスト形式がそれぞれどのモデルに対応しているか、および最も一般的なエラーについて説明します。
最初にこの3点をご確認ください:
  1. 汎用的な形式はOpenAI互換のimage_urlです: テストした22種類のビジョンモデルすべてで{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}が動作しました。Responses形式およびAnthropic形式は一部のモデルにしか対応していません — 「各形式がサポートするモデル」をご覧ください。
  2. deepseek-v4-proやglm-5.3などのテキスト専用モデルは画像を受け付けません: リクエストは200を返しますが、画像は破棄され、モデルは画像が見えないとだけ応答します。画像がモデルに届いたかどうかを確認するには、レスポンス内のusage.prompt_tokensをご確認ください。
  3. base64を推奨します: 公開URLを使用する場合、プロバイダーが画像をダウンロードする必要があるため、ホストが遅い場合や直リンク防止が設定されている場合、またはContent-Lengthヘッダーがない場合(Qwenではこの場合に400が返されます)に失敗します。

画像認識 · APIYI オンラインツール

コードを書きたくないですか?ブラウザ上で画像をアップロードし(複数画像の分析に対応)、一般認識、商品タイトル、5つの特徴説明(五点記述)、属性分析、OCR用の組み込みテンプレートを利用して、モデルを切り替えながら結果を比較できます。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 を取得してください。

  1. エンドポイントとフォーマット:デフォルトではOpenAI互換のPOST https://api.apiyi.com/v1/chat/completionsを使用し、各画像を次のように渡します…

全9項目です。以下のボタンを使用して完全な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枚のみを読み取るため、純粋な表や身分証明書などのシナリオでのみご使用ください。
モデルの価格は公式サイトに準拠しており、随時改定される場合があります。上記の表は参考情報です。最新かつ正確な情報は、トップナビゲーションのモデル価格タブをご確認ください:モデル価格。

画像に対応していないモデル

その他のモデルについては、モデル詳細ページの「入力モダリティ」行をご確認ください。1つのAPIでテキストと画像を処理 も参照してください。

各フォーマットがサポートするモデル

新規プロジェクトにはOpenAI互換チャットフォーマットの使用をおすすめします — モデルの切り替えはモデル名を変更するだけです。ResponsesはすでにOpenAI Responses SDKを使用しているプロジェクトに適しており、AnthropicフォーマットはClaudeエコシステム(Claude Code、Anthropic SDK)に、Geminiネイティブはすでにgoogle-genai SDKを使用しているプロジェクトに適しています。

クイックスタート:共通フォーマット (image_url)

ローカル画像(Base64、推奨)

公開画像URL

複数の画像を比較する

画像ごとに image_url ブロックを順番に1つずつ追加し、prompt 内で「画像1」「画像2」のように参照します:

curl

Base64が推奨される理由:画像URLを使用する場合、プロバイダーがリアルタイムで画像をダウンロードするため、ホストの応答が遅い場合や直リンク防止機能が有効な場合、アクセス制限がある場合に失敗します。また、Qwen モデルではホストが Content-Length ヘッダーを送信する必要があります(一部のCDNはこれを含めずにチャンク転送を使用するため、弊社のテストでは Missing Content-Length of multimodal url が返されました)。Base64 を使用すれば、外部からのダウンロードを行わずにリクエストボディへ直接画像を含めることができます。Base64 は元のサイズの約1.33倍になるため、エンコード前に大きな画像を縮小してください — 「まず大きな画像を縮小する」を参照してください。

その他のフォーマット

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 に指定するだけです:
REST 形式の場合:ヘッダー 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枚のテスト結果は以下のとおりです:
アップロード前に長辺を約2048 pxにリサイズしてください:同じ画像を2048×1365に縮小したところ、表にある8つのモデルすべてが画像1枚あたり約700–3,700 tokensで完全に正しくOCR処理を通過し、gpt-6-solは63,658から3,320に減少しました。Claudeが429を返した場合は、まずエラー本文を確認してください。image exceedsは画像が大きすぎることを意味しており、再試行しても解決しません。

よくあるエラー

画像URLのダウンロードタイムアウト

画像URLを渡した際に以下のエラーが発生した場合:
これはプロバイダーがその画像URLのダウンロード中にタイムアウトしたことを意味しており、モデル、キー、残高とは関係ありません。典型的な原因としては、ホストの応答が遅い、または一部の地域からのアクセスに適していない、画像サイズが大きすぎる、直リンク防止機能やログイン認証が設定されたURLであることなどが挙げられます。 解決策: base64に切り替える(推奨:ダウンロードの手順が完全に不要になります)、または高速でパブリックにアクセス可能なURLを使用する、あるいは画像を圧縮して再試行してください。

マルチモーダルURLのContent-Lengthの欠落(Qwen)

Qwenモデルでは、画像ホストがContent-Lengthレスポンスヘッダーを送信する必要があります。一部のCDN(Cloudflareなど)はチャンク転送で画像を配信し、このヘッダーが含まれないため、このエラーが発生します。同じ画像をオブジェクトストレージから配信するか、代わりにbase64として送信してください。

invalid base64 data(base64フィールドにURLが配置されている)

以下のような400エラーが発生した場合(重要なフレーズはinvalid base64 dataです。文言はモデルによって多少異なります):
これは通常、data URIのbase64データ部分に画像URLが貼り付けられていることを意味します:
data:image/...;base64,プレフィックスに続く内容は、画像ファイル自体のbase64エンコーディングである必要があります。URL形式とbase64形式は排他的であり、混在させることはできません:
セルフチェック: 送信前に画像ソースを確認してください。文字列がhttpで始まる場合はURL形式を使用し、そうでない場合はbase64エンコードしてdata URIを構築します。有効なbase64には://や?などの文字は絶対に含まれないため、base64,の後にこれらがある場合は、ほぼ確実にリンクが貼り付けられています。

宣言された画像タイプが実際のフォーマットと一致しない(メディアタイプの不一致)

以下のような400エラーが発生した場合(重要なフレーズはThe image was specified using the image/png media type, but the image appears to be a image/jpeg imageです):
これは、data URIが画像をPNGとして宣言している(data:image/png;base64,...)ものの、プロバイダーがそれをデコードしてファイルヘッダーを確認したところ実際の内容がJPEGであることが判明したため、リクエストが拒否されたことを意味します。よくある原因としては、変更されたファイル拡張子からフォーマットを推測したことや、コード内にimage/pngをハードコードしたことなどが挙げられます。
これがチェックされるかどうかは、モデルが使用するアップストリームのチャネルによって異なります。2026-10-11 (UTC+8) のテストでは、PNGとして宣言されたJPEGの送信は22種類のビジョンモデルすべてで動作しましたが、Bedrockチャネル経由で提供されるClaudeモデルでは上記のエラーが返されました。「宣言されたタイプは実際の内容と一致していなければならない」というルールに基づいてコードを記述すれば、どのチャネルでも安全です。
解決策: data URIを構築する前にファイルヘッダーから実際のフォーマットを検出するか、「大きな画像をあらかじめ縮小する」の見出し下にある関数のように、PILを使ってすべてをJPEGに変換してください:
file xxx.png(macOS / Linuxのコマンドライン)を使用するとファイルの実際のフォーマットが瞬時に表示され、PythonではImage.open(path).formatで同様の確認が可能です。

上級者向けのヒント

画像が実際にモデルに届いたか確認する

レスポンス内の usage.prompt_tokens を確認してください。1200×760 の画像は、ほとんどのプロバイダーで約 900〜1,300 tokens(DeepSeek Vision では約 570 tokens)を消費します。テキストのみのリクエストと比べてカウントがほとんど増えない、あるいはまったく増えない場合、画像は破棄されています。これはテキスト専用モデル(deepseek-v4-pro、glm-5.3)、Anthropic エンドポイント経由の Grok、および Anthropic の URL ソース経由の Gemini で発生します。
画像を受信しなかったモデルは回答を捏造する可能性があります。 テストにおいて、画像を添付せずに「画像内のすべてのテキストを書き起こしてください」と指示したところ、gemini-3.8-flash は 6 回の実行中 1 回で存在しないテーブル全体を捏造しましたが、他のすべてのモデルは画像が見えないと回答しました。そのため、バッチパイプラインでは回答のみを信用せず、まず prompt_tokens で配信を確認してください。

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

このページでテストされた22種類すべてのビジョンモデル(Gemini、GPT、Claude、Grok、Seed、Qwen、Kimi、MiniMax、DeepSeek Vision)が対応しています。deepseek-v4-pro や glm-5.3 などのテキスト専用モデルは対応していません。その他のモデルについては、モデル詳細ページの「入力モダリティ」の行をご確認ください。
まずレスポンス内の usage.prompt_tokens を確認してください。数十 tokens 程度の場合、画像がモデルに届いていません。主な原因は次のとおりです:① テキスト専用モデルを選択している、② Anthropic エンドポイント経由で Grok を呼び出している、または Anthropic の URL ソース経由で Gemini を呼び出している(どちらも画像が暗黙的に破棄されます)、③ プロバイダーが公開 URL をダウンロードできなかった。base64 を使用して chat image_url に切り替えることで、これらの問題はほぼすべて解決します。
一部のモデルのみをサポートする Responses または Anthropic フォーマットを使用している可能性が高いです(「各フォーマットがサポートするモデル」を参照)。OpenAI 互換の chat image_url フォーマットに切り替えることで、各プロバイダー共通で動作するようになります。
まずエラー本文を確認してください。image exceeds 10 MB maximum と表示されている場合、画像が大きすぎます(base64 エンコード後のサイズで判定)。再試行しても解決しないため、長辺を約 2048 px にリサイズして再送信してください。
ほぼ確実に画像のピクセル数が多すぎます(数千万ピクセルの元画像など)。ピーク時間帯には、プロバイダーが数分間キューに入れた後にリジェクトするか、直ちに patches ... exceeding the limit を返します。再試行しても解決しません。長辺を 2048 px に縮小して再送信してください。テスト結果と診断方法については、「画像理解リクエストがタイムアウトし続ける — 画像が大きすぎますか?」をご覧ください。
GPT モデルは画像タイル単位で課金されるため、元の画像が大きいほどより多くの tokens がかかります。弊社のテストでは、1 枚の 9000×6000 の画像に対して gpt-6-sol で 63,658 入力 tokens が課金されました。長辺を約 2048 px にリサイズした後、同じ画像は gpt-6-sol で 3,320 tokens に減少し、各プロバイダー全体でも約 700〜3,700 tokens に収まりました。
JPEG、PNG、GIF、WebP などの主要なフォーマットはすべて動作します。弊社のテストでは、スマートフォンのカメラによる MPO ファイル(拡張子は .jpg のまま)も認識されました。最も安全なアプローチは、送信前に PIL を使ってすべて JPEG に変換することです。

関連リソース

モデル料金

すべてのモデルと最新の料金

動画理解 API

動画コンテンツの認識、シーン説明、タイムスタンプ

Gemini ネイティブフォーマット

ネイティブフォーマットでのストリーミング、推論バジェットなど

テキスト+画像を1つの API で

モデルがサポートしている入力モダリティの確認方法