DEV Community

Cover image for DeepSeek V4-Flash-Vision API 使い方 (画像入力ガイド)
Akira
Akira

Posted on Originally published at apidog.com

DeepSeek V4-Flash-Vision API 使い方 (画像入力ガイド)

DeepSeekの最安値モデルが画像認識に対応しました。2026年8月21日、DeepSeekは deepseek-v4-flash-vision-exp をリリースしました。これはV4-Flashの画像認識対応ビルドであり、テキスト専用モデルと同じ料金で本番APIから画像を受け付けます。画像は1枚あたり最大384入力トークンとして課金されます。公式リリースノートでは、V4-Flash相当のテキスト性能に加え、DeepSeekがOpus 4.8に近いとしているマルチモーダルエージェント性能を目指した画像理解機能が説明されています。

Apidogを今すぐ試す

このガイドでは、モデルの位置付け、Exp を本番導入する際の考え方、画像を送る3つの方法、制限事項、評価方法を解説します。画像認識リクエストはテキストと画像コンテンツが混在し、Base64を使うとペイロードも大きくなります。手作業でJSONを編集するより、Apidogでリクエストを保存・比較できる状態にしておくと効率的です。

deepseek-v4-flash-vision-exp とは

このモデルは、画像エンコーダーを搭載した V4-Flash-0731 です。DeepSeekによれば、エージェントワークロード、推論、世界知識を含むテキストタスクではベースモデルと同等の性能を持つため、既存のV4-Flash用途を大きく変えずに切り替えられます。

OpenRouterのモデル一覧では、総パラメーター数284B、アクティブパラメーター数13Bの疎な混合エキスパート(MoE)モデルとして説明されています。

V4-FlashはDeepSeekの低価格ラインです。テキストモデルの利用方法はDeepSeek V4-Flash APIガイドで確認できます。画像認識をフラッシュ価格で利用できる点は重要ですが、ベンダーのベンチマークはそのまま採用せず、自分のドキュメント・画面・帳票を使って精度評価を行ってください。

Exp はサンドボックス限定を意味しません。このモデルは他のV4モデルと同じレート制限とSLAで本番APIエンドポイントから利用でき、待機リストや特別なアクセス申請は不要です。

料金:フラッシュレートで画像認識を利用する

DeepSeekの料金ページによると、deepseek-v4-flash-vision-exp の料金はテキスト専用の deepseek-v4-flash と同一です。

区分 オフピーク ピーク
入力・キャッシュヒット(100万トークンあたり) $0.007 $0.014
入力・キャッシュミス(100万トークンあたり) $0.22 $0.44
出力(100万トークンあたり) $0.66 $1.32

画像は最大384入力トークンとして扱われ、入力単価で課金されます。ピーク時・キャッシュミス単価では、最大トークンとして計算した画像1枚の入力コストは約 $0.00017 です。

コストを抑えるには、次の2点を意識します。

  1. バッチはオフピーク時間に実行する

    平日UTC 01:00〜04:00および06:00〜10:00がピーク時間です。スケジュール可能な帳票処理や画像分類は、ピーク時間外に実行すると入力・出力ともに半額になります。

  2. 固定プロンプトを再利用する

    同じシステムプロンプトや抽出ルールを繰り返し送る場合、コンテキストキャッシュが重要になります。画像ごとに指示文を変えるのではなく、固定部分をできるだけ共通化してください。

料金ページにはV4ラインの100万トークンコンテキストウィンドウが記載されていますが、実際の出力はそれより大幅に小さい上限で制約されます。長い結果を必要とする場合は、出力を分割する設計を検討してください。

画像を送信する3つの方法

モデルは標準のChat Completionsエンドポイントで利用できます。

https://api.deepseek.com/chat/completions
Enter fullscreen mode Exit fullscreen mode

V4-Flash Responses APIの解説で紹介されているように、メッセージ形式とResponses形式の呼び出しもサポートされています。画像は user メッセージの content 配列に入れます。

1. Base64をインラインで送る

単発の処理では、画像をデータURLとしてBase64エンコードする方法が最も手軽です。画像あたりの上限は32 MiBです。

import base64
from openai import OpenAI

client = OpenAI(
    [REDACTED CREDENTIAL]YOUR_DEEPSEEK_KEY",
    base_url="https://api.deepseek.com",
)

with open("invoice.png", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
    model="deepseek-v4-flash-vision-exp",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Extract the line items and totals as JSON.",
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{b64}",
                    },
                },
            ],
        },
    ],
)

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

2. 公開URLを渡す

画像がすでにCDNや公開ストレージにあるなら、Base64へ変換せずURLを渡せます。URLの最大長は8,192文字です。

{
  "type": "image_url",
  "image_url": {
    "url": "https://example.com/chart.png"
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Files APIのファイルIDを参照する

同じ画像を複数回使う場合は、Files APIへ一度アップロードして file_id を再利用します。DeepSeekのFiles APIは現在画像アップロードを無料で受け付けており、この方法では同一画像をリクエストごとに再送信する必要がありません。画像ファイルの上限も64 MiBです。

{
  "type": "file",
  "file": {
    "file_id": "file-api-xxxxxxxxxxxxxxxx"
  }
}
Enter fullscreen mode Exit fullscreen mode

使い分けは次のとおりです。

状況 推奨方法
単発で画像を送る Base64インライン
画像がすでに公開URLにある 外部URL
同じ画像を繰り返し使う Files APIの file_id

detail パラメーターで画像処理を調整する

各画像には任意の detail フィールドを指定できます。

  • "low":512×512へダウンスケール。高速で、分類や大まかな内容確認に向いています。
  • "high" / "original":元の寸法を維持。高密度な文書や小さな文字を読む用途に向いています。
  • "auto":APIに選択を任せます。

内部では、トークン数のために画像が約800×800へ正規化され、画像あたり最大384トークンという上限が維持されます。

帳票、領収書、ダッシュボードなどでOCRに近い抽出を行う場合は、実データで "low""high" を比較してください。コスト差は小さくても、細かい文字・表・数値の精度差は大きくなる可能性があります。

評価用には、同一画像・同一プロンプトで detail だけを変え、次の項目を記録すると比較しやすくなります。

  • 必須フィールドの抽出成功率
  • 数値・日付・合計金額の一致率
  • JSONのパース成功率
  • レスポンス時間
  • 出力トークン数

本番環境に入れる前の制限事項

制約
1リクエストあたりの最大画像数 600
インライン(Base64)画像サイズ 32 MiB
Files API画像サイズ 64 MiB
リクエストボディ合計 48 MiB
画像寸法 1辺あたり8,192 px。15枚以上の画像を含むリクエストでは4,096 px
外部URLの長さ 8,192文字
画像を置けるメッセージ user のみ

特に注意すべきなのは、画像を system または assistant メッセージに含めると400エラーになる点です。画像は必ず user メッセージへ置いてください。

複数画像とテキストは自由に混在できます。そのため、スクリーンショットを取得し、内容を推論し、次の操作を決めるエージェントループにも利用できます。DeepSeekは同日にDeepSeek Harness 0.1.1でこのモデルのネイティブサポートを追加しました。DeepSeek Harnessの概要も参考にしてください。

ツール呼び出しも画像認識と併用できます。基本的なフローは、DeepSeek V4 Proの関数呼び出しガイドで説明されているテキストモデルの場合と同じです。

Exp を本番運用するための設計

Exp はペイウォールではなく、短期間で改訂・置き換えられる可能性があることを示すラベルです。依存箇所を限定しておくと、後継モデルへの移行と比較評価が容易になります。

モデルIDを設定に集約する

モデルIDをアプリケーション中へ直接書かず、環境変数や設定値に置きます。

DEEPSEEK_VISION_MODEL=deepseek-v4-flash-vision-exp
DEEPSEEK_TEXT_MODEL=deepseek-v4-flash
Enter fullscreen mode Exit fullscreen mode

アプリケーションでは、画像の有無に応じて使い分けます。

model = (
    os.environ["DEEPSEEK_VISION_MODEL"]
    if has_images
    else os.environ["DEEPSEEK_TEXT_MODEL"]
)
Enter fullscreen mode Exit fullscreen mode

テキスト専用のフォールバックを残す

画像を含まないトラフィックは、安定した deepseek-v4-flash へ送る保守的な構成にできます。VisionモデルはテキストタスクでもV4-Flashと同等とされていますが、画像を使わない用途まで実験的IDへ寄せる必要はありません。

評価結果をスナップショット化する

後継モデルが出たときに比較できるよう、次を保存してください。

  • 評価画像と期待結果
  • プロンプトのバージョン
  • モデルID
  • detail 設定
  • JSONの検証結果
  • 入出力トークン数とレイテンシ

ベンダーのベンチマークではなく、自分の実運用データで前後比較できる状態が重要です。

実例:請求書パイプラインの月額コスト

毎月50,000件のスキャン済み請求書を処理するケースを考えます。

前提:

  • 請求書ごとに画像1枚
  • 指示プロンプトは200トークン
  • JSON出力は平均400トークン
  • 画像は最大384入力トークンとして計算
  • ピーク時・キャッシュミス単価で計算

画像入力

50,000 × 384 = 19.2M トークン
19.2 × $0.44 = 約 $8.45
Enter fullscreen mode Exit fullscreen mode

テキスト入力

50,000 × 200 = 10M トークン
10 × $0.44 = 約 $4.40
Enter fullscreen mode Exit fullscreen mode

固定の指示ブロックにコンテキストキャッシュが効くなら、キャッシュヒット単価では約 $0.14 まで下がります。

出力

50,000 × 400 = 20M トークン
20 × $1.32 = $26.40
Enter fullscreen mode Exit fullscreen mode

合計はピーク時で月額約35〜40ドルです。バッチをピーク時間外に実行できるなら、その約半額になります。

この例では出力トークンがコストの中心です。画像のダウンスケールに注力するより、返却形式を厳密にして出力を小さくする方が効果的な場合があります。自由形式の説明文ではなく、必要なフィールドだけを返すコンパクトなJSONを要求してください。

悪い例:
画像の内容をできるだけ詳しく説明してください。

良い例:
次のJSONだけを返してください。
{
  "invoice_number": "string",
  "issue_date": "YYYY-MM-DD",
  "total": 0,
  "currency": "string",
  "line_items": [
    { "description": "string", "quantity": 0, "amount": 0 }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Apidogでマルチモーダルリクエストをテストする

画像認識リクエストを手動で反復すると、Base64文字列によってJSONが読みにくくなり、detail の比較も煩雑になります。次の手順でテストを再現可能にしてください。

  1. リクエストを保存する

    Apidogプロジェクトで {{model_id}}{{detail}}、画像ペイロードを変数化します。画像や詳細レベルの切り替えを、リクエスト本文の編集なしで行えるようにします。

  2. Base64変換をスクリプト化する

    プリリクエストスクリプトで画像を読み込み、Base64文字列を挿入します。リクエスト本文には大きな文字列を直接保存せず、構造を読みやすく保ちます。

  3. レスポンス構造をアサートする

    明細、グラフ値、抽出項目などをJSONで返すよう指示した場合は、レスポンスをパースして必須フィールド、型、配列長を検証します。これにより、「問題なさそう」という判断を、モデル改訂時に再実行できる合否テストへ変えられます。

  4. フロントエンドにはスマートモックを使う

    プロンプトを調整している間も、Apidogのスマートモックでレスポンススキーマを返せば、実APIを消費せずにフロントエンドを並行開発できます。

Apidogを無料でダウンロードし、モデルID、画像、detail、JSONアサーションを一度セットアップしておけば、DeepSeekが実験モデルを改訂した際もワンクリックで再評価できます。

FAQ

deepseek-v4-flash-vision-exp は無料ですか?

無料ではありません。ただし、テキストモデルと同じフラッシュレートで利用でき、画像はそれぞれ最大384入力トークンに制限されます。DeepSeekのFiles APIによる画像ストレージは無料で、画像をリクエスト入力として使うときに料金が発生します。

deepseek-v4-flash を置き換えますか?

いいえ。テキストモデルは安定したIDとして残ります。Visionモデルはテキストタスクでも同等の性能とされていますが、保守的な構成では画像を含むリクエストだけを deepseek-v4-flash-vision-exp へ送ります。

AnthropicスタイルのAPI形式で使えますか?

はい。DeepSeekのV4エンドポイントはChat Completions、Messages形式、Responses形式の呼び出しを受け付けます。これらの形式を使っている既存クライアントでは、リクエストの方言を大きく変えずに画像ブロックを追加できます。V4 Pro APIウォークスルーでは、ファミリー全体で共有されるエンドポイントの仕組みを確認できます。

GPTやClaudeの画像認識と比べて料金はどうですか?

画像1枚あたり最大384トークン、入力100万トークンあたり $0.22$0.44 という料金は、主要なマルチモーダルモデルと比べて非常に低価格です。ただし、重要なのは自分のワークロードにおける精度です。実際の画像、プロンプト、期待JSONを使った評価を先に行ってください。

まとめ

deepseek-v4-flash-vision-exp は、本番エンドポイントで低コストな画像理解を利用できるモデルです。Base64、外部URL、Files APIという3つの入力方法を用途で使い分け、detail 設定を実データで比較し、画像数・サイズ・メッセージ配置の制限を実装へ組み込んでください。

まずはApidogでリクエスト、変数、アサーションを保存し、評価セットを固定することをおすすめします。これにより、実験モデルを今日から検証でき、後継モデルが公開された際も同じ条件で比較できます。

Top comments (0)