CLAUDE LABEN
CORPS — Anthropicが$150Mの全国フェローシップ「Claude Corps」を発表(6/11)。早期キャリア人材1,000人をAI実務で育成し米国の非営利団体へ配置。第1期は10月開始SUBAGENTS — Claude Codeでサブエージェントの入れ子が可能に(最大5階層)。多段の委譲ワークフローをそのまま設計できるようになりましたWORKFLOWS — Dynamic workflowsがリサーチプレビューで登場。CLI・Desktop・VS Code拡張から、コードベース全域のバグ探索や大規模移行を組めます(Max/Team/Enterprise)BILLING — 6/15の課金変更まで残り2日。Agent SDK・headless・GitHub Actionsが月次クレジット($20/$100/$200)へ移行。同日にSonnet 4とOpus 4がAPIから引退しますFABLE5 — Fable 5の無料同梱期間は6/22まで継続中。Pro/Max/Team/Enterpriseで追加費用なしに試せますCODE80 — 「Claudeが自身のコードの80%超を書く」とIPO関連報道。2025年2月の10%未満から1年余りで急伸CORPS — Anthropicが$150Mの全国フェローシップ「Claude Corps」を発表(6/11)。早期キャリア人材1,000人をAI実務で育成し米国の非営利団体へ配置。第1期は10月開始SUBAGENTS — Claude Codeでサブエージェントの入れ子が可能に(最大5階層)。多段の委譲ワークフローをそのまま設計できるようになりましたWORKFLOWS — Dynamic workflowsがリサーチプレビューで登場。CLI・Desktop・VS Code拡張から、コードベース全域のバグ探索や大規模移行を組めます(Max/Team/Enterprise)BILLING — 6/15の課金変更まで残り2日。Agent SDK・headless・GitHub Actionsが月次クレジット($20/$100/$200)へ移行。同日にSonnet 4とOpus 4がAPIから引退しますFABLE5 — Fable 5の無料同梱期間は6/22まで継続中。Pro/Max/Team/Enterpriseで追加費用なしに試せますCODE80 — 「Claudeが自身のコードの80%超を書く」とIPO関連報道。2025年2月の10%未満から1年余りで急伸
記事一覧/API & SDK
API & SDK/2026-06-13上級

Claude Vision API 実装パターン — 画像解析・PDF 処理・OCR を本番品質で動かすまで

Claude API のビジョン機能を本番投入するための実装パターンをまとめました。Base64・URL・Files API の使い分け、ネイティブ PDF 処理、Tool Use による壊れない構造化抽出、Batch API でのコスト削減、エラー対処まで動くコードで解説します。

Claude API67vision6multimodal3PDF2OCRTool Use5Batch API2

プレミアム記事

「とりあえず動いた」Vision 実装が本番で躓く3つの場所

画像を Base64 にして messages.create に渡せば、Claude はその場で内容を説明してくれます。ここまでは30分で動きます。

問題はその先です。私自身、画像解析のパイプラインを運用に乗せる過程で、検証段階では見えなかった壁に3回ぶつかりました。

ひとつ目はコストです。画像はテキストよりはるかに多くのトークンを消費します。リサイズせずに高解像度画像を流し続けると、請求額が想定の数倍になります。

ふたつ目は出力の不安定さです。「JSON で返してください」とプロンプトで頼む方式は、9割は動きます。しかし残り1割で前置きの文章が混ざり、json.loads が例外を投げ、深夜のバッチが停止します。

みっつ目は PDF です。PDF を画像に変換してから送る古い実装をそのまま使うと、テキストレイヤーの情報を捨ててしまい、精度もコストも悪化します。

ここからは、この3つの壁をひとつずつ越えていきます。コード例はすべて Python で、そのまま実行できる形にしてあります。

入力方式は3つ — 再利用するかどうかで決める

Claude API に画像を渡す方法は Base64 直接埋め込み・URL 参照・Files API の3通りです。どれを選ぶかは「同じ画像を何回使うか」と「画像が公開可能か」で決まります。

| 方式 | 向いている条件 | 注意点 | |------|----------|------| | Base64 | 1回きりの解析・非公開画像 | リクエストサイズが膨らむ | | URL 参照 | 公開済み画像・CDN 配信資産 | 非公開画像には使えない | | Files API | 同じ画像を複数回解析する | アップロードの一手間が必要 |

Base64 直接埋め込み — 最初の選択肢

非公開の画像を1回だけ解析するなら、Base64 が最も素直です。

import anthropic
import base64
from pathlib import Path
 
client = anthropic.Anthropic()  # ANTHROPIC_API_KEY を環境変数から読み込み
 
MEDIA_TYPES = {
    ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
    ".png": "image/png", ".gif": "image/gif", ".webp": "image/webp",
}
 
def encode_image(path: str) -> tuple[str, str]:
    """画像を Base64 化し、media_type と合わせて返します"""
    p = Path(path)
    media_type = MEDIA_TYPES.get(p.suffix.lower(), "image/jpeg")
    data = base64.standard_b64encode(p.read_bytes()).decode("utf-8")
    return data, media_type
 
def analyze_image(path: str, prompt: str) -> str:
    data, media_type = encode_image(path)
    message = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=[{
            "role": "user",
            "content": [
                {"type": "image",
                 "source": {"type": "base64", "media_type": media_type, "data": data}},
                {"type": "text", "text": prompt},
            ],
        }],
    )
    return message.content[0].text
 
print(analyze_image("screenshot.png", "この画面に表示されているエラーメッセージを抽出してください。"))

ここで気をつけたいのは、リクエスト全体のサイズ上限が 32MB という点です。Base64 化すると元ファイルの約1.33倍に膨らむため、20MB の画像を複数枚束ねるとあっさり超えます。複数画像を扱う設計なら、後述するリサイズを必ず挟んでください。

URL 参照 — 公開資産ならこちら

すでに CDN で配信している画像なら、URL を渡すだけで済みます。リクエストが軽くなり、自前で Base64 化する処理も不要になります。

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {"type": "image",
             "source": {"type": "url", "url": "https://example.com/assets/diagram.png"}},
            {"type": "text", "text": "この図の処理フローを箇条書きで説明してください。"},
        ],
    }],
)

ただし、Anthropic のサーバーが取得できる URL である必要があります。社内ネットワーク限定の URL や、認証付きのストレージの署名なし URL は失敗します。失敗時は invalid_request_error が返るので、URL 方式を採用する場合はこのエラーを Base64 へのフォールバックに接続しておくと運用が安定します。

Files API — 同じ画像を何度も解析するなら

同じ画像に対して「まず分類、次に詳細解析、最後にメタデータ抽出」のように複数回リクエストを投げる設計では、毎回 Base64 を送り直すのは無駄です。Files API で一度アップロードし、file_id で参照する方が転送量もコードの見通しも良くなります。

# アップロードは一度だけ
uploaded = client.beta.files.upload(
    file=("design.png", open("design.png", "rb"), "image/png"),
)
 
# 以降は file_id で参照
message = client.beta.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    betas=["files-api-2025-04-14"],
    messages=[{
        "role": "user",
        "content": [
            {"type": "image", "source": {"type": "file", "file_id": uploaded.id}},
            {"type": "text", "text": "この UI デザインの配色をリストアップしてください。"},
        ],
    }],
)

私はこの3方式を「再利用2回以上なら Files API、公開済みなら URL、それ以外は Base64」という基準で選んでいます。迷ったら Base64 で始めて、転送量が気になり始めた段階で移行する順番が現実的です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Base64・URL・Files API の3つの画像入力方式を、再利用頻度とセキュリティ条件で使い分ける判断基準
Tool Use の JSON Schema 強制で OCR・表抽出のパース失敗を実測ほぼゼロに抑える実装パターン
Message Batches API とプロンプトキャッシュを組み合わせ、大量画像処理のコストを50%以上削減する手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-04-25
Claude API × Tauri 2 で本番デスクトップ AI アプリを構築する — Rust ブリッジ・SSE ストリーミング・配布までの実装
Tauri 2 と Claude API を組み合わせて、軽量で安全な本番デスクトップ AI アプリを構築する方法を解説。Rust 側でのキー保管、SSE ストリーミング、Tool Use 実装、コード署名と配布までを実装コード付きで体系的にまとめます。
API & SDK2026-04-17
Claude API で作る GitHub PR レビューボット — Webhook統合からセキュリティスキャン・品質スコアリングまで実装
Claude API × GitHub Webhook で動く PR レビューボットを完全実装。Tool Use で構造化スコアリング、セキュリティ検査、改善提案を自動化。レート制限・コスト管理・本番運用まで網羅した実践ガイド。
API & SDK2026-03-30
Claude API 料金ガイド 2026 — 全モデルのコスト・Batch API・Prompt Caching まで実装解説
Claude API の料金体系を2026年最新情報で解説。Opus 4.6・Sonnet 4.6・Haiku 4.5 のトークン単価、Batch APIやPrompt Cachingによるコスト削減方法、実際の利用シナリオ別の費用試算まで、開発者が知るべき全てをまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →