Skip to main content

PDF の理解

Chat Completions、Responses API、DashScope、Anthropic 互換 API を使用して、PDF ドキュメントのテキストと画像を解析できます。

サポートされるモデル

qwen4-max-preview (Token Plan 限定), qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-27b qwen3.8-27b の PDF の理解は、北京リージョンの Chat Completions または DashScope でのみ利用できます。

クイックスタート

以下の例は、PDF ファイルをモデルに送信する方法を示しています。
API キーの取得およびAPI キーを環境変数として設定を完了している必要があります。
  • OpenAI 互換
  • DashScope
  • Responses API
  • Python
  • Node.js
  • HTTP

サンプルコード

from openai import OpenAI
import os

client = OpenAI(
    # 環境変数が設定されていない場合は、ご自身の Model Studio API キーに置き換えます: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下はシンガポールリージョンの URL です。API を呼び出す際は、{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "file",
                    "file": {
                        "file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
                    }
                },
                {
                    "type": "text",
                    "text": "Summarize this PDF document"
                }
            ]
        }
    ],
    stream=True,
    stream_options={"include_usage": True}
)

for chunk in completion:
    if not chunk.choices:
        print(f"\nUsage: {chunk.usage}")
        continue
    delta = chunk.choices[0].delta
    if hasattr(delta, "content") and delta.content:
        print(delta.content, end="", flush=True)

Base64 入力の使用

URL を指定できない場合は、PDF ファイルを Base64 エンコードされた文字列として渡すことができます。file_data を使用する場合、filename フィールドは必須です。
Base64 エンコーディングにより、データサイズが約 3 分の 1 増加します。例えば、150 MB のファイルはエンコード後に約 200 MB となり、リクエストボディのサイズ制限を超えてしまいます。サイズの大きいファイルの場合は、代わりに URL メソッドを使用してください。
  • Chat Completions / DashScope
  • Anthropic
import base64
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下はシンガポールリージョンの URL です。API を呼び出す際に、{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# PDF ファイルを読み取り、エンコードします
with open("report.pdf", "rb") as f:
    pdf_base64 = base64.b64encode(f.read()).decode("utf-8")

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "file",
                    "file": {
                        "file_data": f"data:application/pdf;base64,{pdf_base64}",
                        "filename": "report.pdf"
                    }
                },
                {
                    "type": "text",
                    "text": "このレポートの主要な調査結果は何ですか?"
                }
            ]
        }
    ]
)

print(completion.choices[0].message.content)

リクエストパラメータ

以下のパラメーター表は Chat Completions に適用されます。Responses API では type: "input_file" と file_url を使用します。Anthropic 互換 API では type: "document" と、source 内の type: "base64"、media_type: "application/pdf"、data(Data URI のプレフィックスを含まない Base64 文字列)を使用します。 DashScope では、content 配列内の file_url または file_data を含む要素でファイルを入力します。
URL フィールドは文字列のみを受け付けます。URL のリスト (配列) はサポートされていません。
OpenAI 互換フォーマット:

パラメータ

型

必須

説明

file_url文字列条件付きダウンロードする PDF ファイルの URL です。file_data とは相互に排他的です。
file_data文字列条件付きdata:application/pdf;base64,... フォーマットの Base64 エンコードされた PDF データです。file_url とは相互に排他的です。
filename文字列条件付きファイル名です。file_data を使用する場合に必須です。
file_format文字列いいえファイル形式です。現在、pdf のみがサポートされています。デフォルト値は pdf です。

制限事項

項目

制限

最大ファイルサイズ150 MB
最大ページ数256 ページ
PDF 解析は、通常のテキストリクエストよりも時間がかかる場合があります。最初のトークンのタイムアウトは最大 300 秒です。長時間の待機を避けるため、ストリーミング出力のご利用を推奨します。

課金

課金には、以下が含まれます:
  • モデルの入力トークン:PDF から抽出されたテキストおよびページから解析されたイメージは、入力トークンとしてカウントされ、モデルの標準入力トークンレートで課金されます。
  • ドキュメント解析手数料:解析された PDF ドキュメントのページごとに課金され、測定項目 document_parsing (pdf) に対応します。各地域で単価が異なります。中国 (北京):1 ページあたり 0.003 USD、シンガポール:1 ページあたり 0.0033 USD。 グローバルデプロイモード:1 ページあたり 0.003 USD。
モデルごとの入出力トークン価格については、「モデル推論の料金」をご参照ください。

解析されたPDFのページ数を確認する

Chat Completions と Responses API ではリクエスト本文の最上位に include_tool_usage: true を指定し、usage.x_tools.pdf_page_parser.count を参照します。DashScope では usage.plugins.pdf_page_parser.count を参照します。Anthropic 互換 API ではレスポンス最上位の x_tools.pdf_page_parser.count にページ数が返されます。カウントが省略されても、解析料金が発生していないとは限りません。
Anthropic
{
    "x_tools": {
        "pdf_page_parser": {
            "count": 10,
            "strategy": "normal"
        }
    }
}