Qwen-OCR は、スキャンされたドキュメント、表、レシートなど、さまざまな画像からテキストを抽出し、構造化データを解析する視覚理解モデルです。多言語をサポートし、特定のタスクの指示に基づいて、情報抽出、表解析、数式認識などの高度な関数を実行できます。
サポートされているリージョン:シンガポール、米国 (バージニア)、中国 (北京)、中国 (香港)、ドイツ (フランクフルト)。ご利用のリージョンに対応する API キーとエンドポイントを使用してください。
オンラインで試す:Alibaba Cloud Model Studio コンソールに移動し、右上隅でリージョンを選択して、vision ページに移動し、Qwen OCR を選択します。
例
入力画像 | 認識結果 |
複数言語の認識
|
|
傾いた画像の認識
| Product Introduction Imported fiber filaments from South Korea. 6941990612023 Item No.: 2023 |
テキスト位置の特定
高精度認識タスクはテキストのローカライズをサポートしています。 | ローカライズの可視化
各テキスト行のバウンディングボックスを元の画像に描画する方法については、よくある質問をご参照ください。 |
サポートされているモデル
インターナショナル
インターナショナルデプロイモードでは、エンドポイントとデータストレージはシンガポールリージョンに配置され、モデル推論のコンピューティングリソースはグローバルに (中国本土を除く) 動的にスケジュールされます。
モデル | バージョン | コンテキストウィンドウ | 最大入力 | 最大出力 | 入力価格 | 出力価格 | 無料クォータ |
(トークン) | (100 万トークンあたり) | ||||||
qwen-vl-ocr 現在、qwen-vl-ocr-2025-11-20 と同等の機能 | 安定 | 38,192 | 30,000 画像あたり最大:30000 | 8,192 | $0.07 | $0.16 | それぞれ 100 万トークン Model Studio のアクティベート後 90 日間有効 |
qwen-vl-ocr-2025-11-20 また、qwen-vl-ocr-1120 Qwen3-VL ベース。ドキュメント解析とテキストのローカライズが大幅に改善 | スナップショット | ||||||
グローバル
グローバルデプロイモードでは、エンドポイントとデータストレージは米国 (バージニア) リージョンまたはドイツ (フランクフルト) リージョンに配置され、モデル推論のコンピューティングリソースはグローバルに動的にスケジュールされます。
モデル | バージョン | コンテキストウィンドウ | 最大入力 | 最大出力 | 入力価格 | 出力価格 |
(トークン) | (100 万トークンあたり) | |||||
qwen-vl-ocr 現在、qwen-vl-ocr-2025-11-20 と同等の機能 | 安定 | 38,192 | 30,000 画像あたり最大:30000 | 8,192 | $0.043 | $0.072 |
qwen-vl-ocr-2025-11-20 また、 qwen-vl-ocr-1120 Qwen3-VL ベース。ドキュメント解析とテキストのローカライズが大幅に改善 | スナップショット | |||||
中国本土
中国本土デプロイモードでは、エンドポイントとデータストレージは北京リージョンに配置され、モデル推論のコンピューティングリソースは中国本土に限定されます。
モデル | バージョン | コンテキストウィンドウ | 最大入力 | 最大出力 | 入力価格 | 出力価格 | 無料クォータ |
(トークン) | (100 万トークンあたり) | ||||||
qwen-vl-ocr 現在、qwen-vl-ocr-2025-11-20 と同等の機能 バッチ呼び出しは半額 | 安定 | 38,192 | 30,000 画像あたり最大:30000 | 8,192 | $0.043 | $0.072 | 無料クォータなし |
qwen-vl-ocr-latest 最新のスナップショットと同等の機能 | 最新 | ||||||
qwen-vl-ocr-2025-11-20 また、qwen-vl-ocr-1120 Qwen3-VL ベース。ドキュメント解析とテキストのローカライズが大幅に改善 | スナップショット | ||||||
qwen-vl-ocr-2025-08-28 また、qwen-vl-ocr-0828 | 34,096 | 4,096 | $0.717 | $0.717 | |||
qwen-vl-ocr-2025-04-13 また、qwen-vl-ocr-0413 | |||||||
qwen-vl-ocr-2024-10-28 また、 qwen-vl-ocr-1028 | |||||||
qwen-vl-ocr, qwen-vl-ocr-2025-04-13, and qwen-vl-ocr-2025-08-28モデルでは、max_tokensパラメーター (最大出力長) のデフォルトは 4096 です。この値を 4097 から 8192 の範囲に増やすには、modelstudio@service.aliyun.com にメールを送信し、ご利用の Alibaba Cloud アカウント ID、画像タイプ (ドキュメント画像、e コマース画像、契約書など)、モデル名、推定 QPS (秒間クエリ数) と 1 日あたりの合計リクエスト数、およびモデルの出力長が 4096 トークンを超えるリクエストの割合を記載してください。
事前準備
API キーを作成し、API キーを環境変数として設定していること。
OpenAI SDK または DashScope SDK を使用する場合は、最新の SDK バージョンをインストールする必要があります。最小バージョン:DashScope Python SDK 1.22.2、Java SDK 2.21.8。
DashScope SDK
利点:画像の回転補正や組み込み OCR タスクなど、すべての高度な機能をサポートします。シンプルな呼び出しメソッドで完全な機能セットを提供します。
シナリオ:全機能が必要なプロジェクト。
OpenAI 互換 SDK
利点:すでに OpenAI SDK またはそのエコシステムツールを使用しているユーザーの移行を容易にします。
制限:画像の回転補正や組み込み OCR タスクなどの高度な機能をパラメーターで直接呼び出すことはサポートされていません。複雑なプロンプトを作成してから出力を解析することで、これらの機能を手動でシミュレートする必要があります。
シナリオ:すでに OpenAI との統合があり、DashScope 独自の高度な機能に依存しないプロジェクト。
はじめに
この例では、乗車券の画像 (URL) からキー情報を抽出し、その情報を JSON 形式で返します。こちらもご参照ください:ローカルファイルの渡し方および画像の制限。
OpenAI 互換
Python
from openai import OpenAI
import os
PROMPT_TICKET_EXTRACTION = """
乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。
キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。
データを JSON 形式で返してください:{'Invoice Number': 'xxx', 'Train Number': 'xxx', 'Departure Station': 'xxx', 'Destination Station': 'xxx', 'Departure Date and Time': 'xxx', 'Seat Number': 'xxx', 'Seat Type': 'xxx', 'Ticket Price': 'xxx', 'ID Card Number': 'xxx', 'Passenger Name': 'xxx'}
"""
try:
client = OpenAI(
# API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に置き換えてください
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-ocr-2025-11-20",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192
},
# モデルはテキストフィールドにプロンプトを渡すことをサポートしています。プロンプトが渡されない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{"type": "text",
"text": PROMPT_TICKET_EXTRACTION}
]
}
])
print(completion.choices[0].message.content)
except Exception as e:
print(f"エラーメッセージ:{e}")Node.js
import OpenAI from 'openai';
// 乗車券情報を抽出するためのプロンプトを定義します。
const PROMPT_TICKET_EXTRACTION = `
乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。
キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。
データを JSON 形式で返してください:{'Invoice Number': 'xxx', 'Train Number': 'xxx', 'Departure Station': 'xxx', 'Destination Station': 'xxx', 'Departure Date and Time': 'xxx', 'Seat Number': 'xxx', 'Seat Type': 'xxx', 'Ticket Price': 'xxx', 'ID Card Number': 'xxx', 'Passenger Name': 'xxx'}
`;
const openai = new OpenAI({
// API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、baseURL を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に置き換えてください
// 中国 (北京) リージョンのモデルを使用する場合は、baseURL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください
baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
});
async function main() {
const response = await openai.chat.completions.create({
model: 'qwen-vl-ocr-2025-11-20',
messages: [
{
role: 'user',
content: [
// モデルは、次のテキストフィールドにプロンプトを渡すことをサポートしています。プロンプトが渡されない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{ type: 'text', text: PROMPT_TICKET_EXTRACTION},
{
type: 'image_url',
image_url: {
url: 'https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg',
},
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
min_pixels: 32 * 32 * 3,
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
max_pixels: 32 * 32 * 8192
}
]
}
],
});
console.log(response.choices[0].message.content)
}
main();curl
# ======= 重要 =======
# API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、ベース URL を https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください
# 中国 (北京) リージョンのモデルを使用する場合は、ベース URL を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-vl-ocr-2025-11-20",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
"min_pixels": 3072,
"max_pixels": 8388608
},
{"type": "text", "text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{\'Invoice Number\': \'xxx\', \'Train Number\': \'xxx\', \'Departure Station\': \'xxx\', \'Destination Station\': \'xxx\', \'Departure Date and Time\': \'xxx\', \'Seat Number\': \'xxx\', \'Seat Type\': \'xxx\', \'Ticket Price\': \'xxx\', \'ID Card Number\': \'xxx\', \'Passenger Name\': \'xxx\'}"}
]
}
]
}'応答例
DashScope
Python
import os
import dashscope
PROMPT_TICKET_EXTRACTION = """
乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。
キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。
データを JSON 形式で返してください:{'Invoice Number': 'xxx', 'Train Number': 'xxx', 'Departure Station': 'xxx', 'Destination Station': 'xxx', 'Departure Date and Time': 'xxx', 'Seat Number': 'xxx', 'Seat Type': 'xxx', 'Ticket Price': 'xxx', 'ID Card Number': 'xxx', 'Passenger Name': 'xxx'}
"""
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False
},
# 組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトが渡されない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{"type": "text", "text": PROMPT_TICKET_EXTRACTION}]
}]
try:
response = dashscope.MultiModalConversation.call(
# API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages
)
print(response["output"]["choices"][0]["message"].content[0]["text"])
except Exception as e:
print(f"エラーが発生しました:{e}")Java
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// 組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトが渡されない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
Collections.singletonMap("text", "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'Invoice Number': 'xxx', 'Train Number': 'xxx', 'Departure Station': 'xxx', 'Destination Station': 'xxx', 'Departure Date and Time': 'xxx', 'Seat Number': 'xxx', 'Seat Type': 'xxx', 'Ticket Price': 'xxx', 'ID Card Number': 'xxx', 'Passenger Name': 'xxx'}"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= 重要 =======
# API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、ベース URL を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください
# 中国 (北京) リージョンのモデルを使用する場合は、ベース URL を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
--header "Authorization: Bearer $DASHSCOPE_API_KEY"\
--header 'Content-Type: application/json'\
--data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [{
"image": "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
},
{
"text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{\'Invoice Number\': \'xxx\', \'Train Number\': \'xxx\', \'Departure Station\': \'xxx\', \'Destination Station\': \'xxx\', \'Departure Date and Time\': \'xxx\', \'Seat Number\': \'xxx\', \'Seat Type\': \'xxx\', \'Ticket Price\': \'xxx\', \'ID Card Number\': \'xxx\', \'Passenger Name\': \'xxx\'}"
}
]
}
]
}
}'組み込みタスクの呼び出し
モデル (qwen-vl-ocr-2024-10-28 を除く) には、一般的なシナリオ向けの組み込みタスクが含まれています。
使用方法:
DashScope SDK:プロンプトを設計したり渡したりする必要はありません。モデルは固定の内部
Promptを使用します。組み込みタスクを呼び出すには、ocr_optionsパラメーターを設定します。OpenAI 互換 SDK:タスク固有の
Promptを手動で入力します。
各組み込みタスクには、task 値、指定された Prompt、出力形式、および例があります:
高精度認識
qwen-vl-ocr-2025-08-28 より後のモデルバージョンまたは最新バージョン (推奨) を使用して、高精度認識を行います。特徴:
テキストコンテンツを認識して抽出します。
テキスト行を特定し、その座標を出力することでテキストの位置を検出します。
テキストのバウンディングボックスの座標を取得した後、元の画像にバウンディングボックスを描画する方法の詳細については、よくある質問をご参照ください。
task の値 | 指定されたプロンプト | 出力形式と例 |
| すべてのテキスト行を特定し、回転した長方形 |
|
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクを高精度認識に設定します。
ocr_options={"task": "advanced_recognition"}
)
# 高精度認識タスクは結果をプレーンテキストで返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])// dashscope SDK バージョン >= 2.21.8
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.ADVANCED_RECOGNITION)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "advanced_recognition"
}
}
}
'情報抽出
このタスクは、レシート、証明書、フォームから構造化情報を抽出し、結果を JSON 形式で返します。2 つのモードから選択できます:
カスタムフィールド抽出:
ocr_options.task_configでカスタム JSON テンプレート (result_schema) を提供することで、抽出するフィールドを指定できます。このテンプレートはフィールド名 (key) を定義します。モデルは自動的に値 (value) を入力します。テンプレートは最大 3 つのネストされたレイヤーをサポートします。全フィールド抽出:
result_schemaがない場合、モデルは画像からすべてのフィールドを抽出します。
2 つのモードのプロンプトは異なります:
task の値 | 指定されたプロンプト | 出力形式と例 |
| カスタムフィールド抽出: |
|
全フィールド抽出: |
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
# [pip install -U dashscope] を使用して SDK を更新します
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role":"user",
"content":[
{
"image":"http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": False
}
]
}
]
params = {
"ocr_options":{
"task": "key_information_extraction",
"task_config": {
"result_schema": {
"Ride Date": "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05",
"Invoice Code": "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです",
"Invoice Number": "請求書から番号を抽出します。通常は数字のみで構成されます。"
}
}
}
}
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
**params)
print(response.output.choices[0].message.content[0]["ocr_result"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.google.gson.JsonObject;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
// メインの JSON オブジェクトを作成します。
JsonObject resultSchema = new JsonObject();
resultSchema.addProperty("Ride Date", "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05");
resultSchema.addProperty("Invoice Code", "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです");
resultSchema.addProperty("Invoice Number", "請求書から番号を抽出します。通常は数字のみで構成されます。");
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.KEY_INFORMATION_EXTRACTION)
.taskConfig(OcrOptions.TaskConfig.builder()
.resultSchema(resultSchema)
.build())
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("ocr_result"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "key_information_extraction",
"task_config": {
"result_schema": {
"Ride Date": "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05",
"Invoice Code": "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです",
"Invoice Number": "請求書から番号を抽出します。通常は数字のみで構成されます。"
}
}
}
}
}
'OpenAI SDK または HTTP メソッドを使用する場合、次のコード例に示すように、カスタム JSON スキーマをプロンプト文字列の末尾に追加する必要があります:
表解析
画像内の表要素を解析し、認識結果を HTML 形式のテキストで返します。
task の値 | 指定されたプロンプト | 出力形式と例 |
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクを表解析に設定します。
ocr_options= {"task": "table_parsing"}
)
# 表解析タスクは結果を HTML 形式で返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels",3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.TABLE_PARSING)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に変更してください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "table_parsing"
}
}
}
'ドキュメント解析
スキャンされたドキュメントまたは画像として保存された PDF ドキュメントを解析します。ファイル内のタイトル、概要、ラベルなどの要素を認識し、認識結果を LaTeX 形式のテキストで返します。
task の値 | 指定されたプロンプト | 出力形式と例 |
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "https://img.alicdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクをドキュメント解析に設定します。
ocr_options= {"task": "document_parsing"}
)
# ドキュメント解析タスクは結果を LaTeX 形式で返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://img.aliccdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.DOCUMENT_PARSING)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
--header "Authorization: Bearer $DASHSCOPE_API_KEY"\
--header 'Content-Type: application/json'\
--data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [{
"image": "https://img.alicdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "document_parsing"
}
}
}
'数式認識
画像内の数式を解析し、認識結果を LaTeX 形式のテキストで返します。
task の値 | 指定されたプロンプト | 出力形式と例 |
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False
}]
}]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクを数式認識に設定します。
ocr_options= {"task": "formula_recognition"}
)
# 数式認識タスクは結果を LaTeX 形式で返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.FORMULA_RECOGNITION)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "formula_recognition"
}
}
}
'汎用テキスト認識
主に中国語および英語のシナリオ向けで、認識結果をプレーンテキスト形式で返します。
task の値 | 指定されたプロンプト | 出力形式と例 |
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクを汎用テキスト認識に設定します。
ocr_options= {"task": "text_recognition"}
)
# 汎用テキスト認識タスクは結果をプレーンテキスト形式で返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込みタスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.TEXT_RECOGNITION)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
--header "Authorization: Bearer $DASHSCOPE_API_KEY"\
--header 'Content-Type: application/json'\
--data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "text_recognition"
}
}
}'多言語認識
中国語および英語以外の言語を含むシナリオ向けです。サポートされている言語は、アラビア語、フランス語、ドイツ語、イタリア語、日本語、韓国語、ポルトガル語、ロシア語、スペイン語、ベトナム語です。認識結果はプレーンテキスト形式で返されます。
task の値 | 指定されたプロンプト | 出力形式と例 |
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": [{
"image": "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png",
# 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
# 画像の自動回転を有効にするかどうかを指定します。
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# 組み込みタスクを多言語認識に設定します。
ocr_options={"task": "multi_lan"}
)
# 多言語認識タスクは結果をプレーンテキストで返します。
print(response["output"]["choices"][0]["message"].content[0]["text"])import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更してください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png");
// 入力画像の最大ピクセルしきい値。画像がこの値より大きい場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像がこの値より小さい場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
// 画像の自動回転を有効にするかどうかを指定します。
map.put("enable_rotate", false);
// 組み込み OCR タスクを設定します。
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.MULTI_LAN)
.build();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png",
"min_pixels": 3072,
"max_pixels": 8388608,
"enable_rotate": false
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "multi_lan"
}
}
}
'ローカルファイルの渡し方 (Base64 エンコーディングまたはファイルパス)
Qwen-VL では、ローカルファイルをアップロードする方法として、Base64 エンコーディングと直接ファイルパスの 2 つを提供しています。ファイルサイズと SDK のタイプに基づいて、アップロード方法を選択できます。具体的な推奨事項については、「ファイルアップロード方法の選択方法」をご参照ください。どちらの方法も「画像の制限」に記載されているファイル要件を満たしている必要があります。
Base64 エンコーディングを使用
ファイルを Base64 エンコードされた文字列に変換し、それをモデルに渡します。この方法は、OpenAI SDK、DashScope SDK、HTTP リクエストに適しています。
ファイルパスを使用
ローカルファイルパスを直接モデルに渡します。この方法は、DashScope Python SDK および Java SDK のみでサポートされています。DashScope HTTP または OpenAI 互換の方法ではサポートされていません。
プログラミング言語とオペレーティングシステムに基づいて、次の表を参照してファイルパスを指定してください。
ファイルパスを渡す
ファイルパスの渡し方は、DashScope Python SDK および Java SDK での呼び出しでのみサポートされています。この方法は、DashScope HTTP または OpenAI 互換の方法ではサポートされていません。
Python
import os
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# xxx/test.jpg をご利用のローカル画像の絶対パスに置き換えます。
local_path = "xxx/test.jpg"
image_path = f"file://{local_path}"
messages = [
{
"role": "user",
"content": [
{
"image": image_path,
# 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
},
# モデルに組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{
"text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
},
],
}
]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen-vl-ocr-2025-11-20",
messages=messages,
)
print(response["output"]["choices"][0]["message"].content[0]["text"])
Java
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", filePath);
// 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// モデルに組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
Collections.singletonMap("text", "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// xxx/test.jpg をご利用のローカル画像の絶対パスに置き換えます。
simpleMultiModalConversationCall("xxx/test.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Base64 エンコードされた文字列を渡す
OpenAI 互換
Python
from openai import OpenAI
import os
import base64
# ローカルファイルを読み取り、Base64 形式でエンコードします。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# xxx/test.png をご利用のローカル画像の絶対パスに置き換えます。
base64_image = encode_image("xxx/test.png")
client = OpenAI(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-ocr-2025-11-20",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
# 注:Base64 エンコードされた文字列を渡す場合、画像形式 (image/{format}) はサポートされている画像の Content-Type と一致している必要があります。"f" は文字列フォーマットメソッドです。
# PNG 画像: f"data:image/png;base64,{base64_image}"
# JPEG 画像: f"data:image/jpeg;base64,{base64_image}"
# WEBP 画像: f"data:image/webp;base64,{base64_image}"
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
# 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192
},
# モデルは、次のテキストフィールドにプロンプトを渡すことをサポートしています。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{"type": "text", "text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"},
],
}
],
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import {
readFileSync
} from 'fs';
const client = new OpenAI({
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に置き換えてください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
// ローカルファイルを読み取り、Base64 形式でエンコードします。
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// xxx/test.png をご利用のローカル画像の絶対パスに置き換えます。
const base64Image = encodeImage("xxx/test.jpg")
async function main() {
const completion = await client.chat.completions.create({
model: "qwen-vl-ocr-2025-11-20",
messages: [{
"role": "user",
"content": [{
"type": "image_url",
"image_url": {
// 注:Base64 エンコードされた文字列を渡す場合、画像形式 (image/{format}) はサポートされている画像の Content-Type と一致している必要があります。
// PNG 画像: data:image/png;base64,${base64Image}
// JPEG 画像: data:image/jpeg;base64,${base64Image}
// WEBP 画像: data:image/webp;base64,${base64Image}
"url": `data:image/jpeg;base64,${base64Image}`
},
// 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
// 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192
},
// モデルは、次のテキストフィールドにプロンプトを渡すことをサポートしています。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{
"type": "text",
"text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
}
]
}]
});
console.log(completion.choices[0].message.content);
}
main();curl
ファイルを Base64 エンコードされた文字列に変換する方法については、「サンプルコード」をご参照ください。
デモンストレーションの目的で、コード内の Base64 エンコードされた文字列
"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は切り捨てられています。実際には、完全なエンコードされた文字列を渡す必要があります。
# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-vl-ocr-2025-11-20",
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."}},
{"type": "text", "text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"}
]
}]
}'DashScope
Python
import os
import base64
import dashscope
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Base64 エンコード形式。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# xxx/test.jpg をご利用のローカル画像の絶対パスに置き換えます。
base64_image = encode_image("xxx/test.jpg")
messages = [
{
"role": "user",
"content": [
{
# 注:Base64 エンコードされた文字列を渡す場合、画像形式 (image/{format}) はサポートされている画像の Content-Type と一致している必要があります。"f" は文字列フォーマットメソッドです。
# PNG 画像: f"data:image/png;base64,{base64_image}"
# JPEG 画像: f"data:image/jpeg;base64,{base64_image}"
# WEBP 画像: f"data:image/webp;base64,{base64_image}"
"image": f"data:image/jpeg;base64,{base64_image}",
# 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
"min_pixels": 32 * 32 * 3,
# 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
"max_pixels": 32 * 32 * 8192,
},
# モデルに組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
{
"text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
},
],
}
]
response = dashscope.MultiModalConversation.call(
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen-vl-ocr-2025-11-20",
messages=messages,
)
print(response["output"]["choices"][0]["message"].content[0]["text"])Java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください。
// 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
// Base64 エンコード形式。
private static String encodeImageToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void simpleMultiModalConversationCall(String localPath)
throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image = encodeImageToBase64(localPath); // Base64 エンコード。
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "data:image/jpeg;base64," + base64Image);
// 入力画像の最大ピクセルしきい値。画像のピクセル数がこの値より多い場合、総ピクセル数が max_pixels を下回るまでスケールダウンされます。
map.put("max_pixels", 8388608);
// 入力画像の最小ピクセルしきい値。画像のピクセル数がこの値より少ない場合、総ピクセル数が min_pixels を超えるまでスケールアップされます。
map.put("min_pixels", 3072);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// モデルに組み込みタスクが設定されていない場合、テキストフィールドにプロンプトを渡すことができます。プロンプトを渡さない場合、デフォルトのプロンプトが使用されます:画像からテキストコンテンツのみを出力し、追加の説明やフォーマットは含めないでください。
Collections.singletonMap("text", "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr-2025-11-20")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// xxx/test.jpg をご利用のローカル画像の絶対パスに置き換えます。
simpleMultiModalConversationCall("xxx/test.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
ファイルを Base64 エンコードされた文字列に変換する方法については、「サンプルコード」をご参照ください。
デモンストレーションの目的で、コード内の Base64 エンコードされた文字列
"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は切り捨てられています。実際には、完全なエンコードされた文字列を渡す必要があります。
# ======= 重要 =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
# 以下はシンガポールリージョンのベース URL です。米国 (バージニア) リージョンのモデルを使用する場合は、base_url を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-vl-ocr-2025-11-20",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "乗車券の画像から、請求書番号、列車番号、出発駅、到着駅、出発日時、座席番号、座席種別、運賃、ID カード番号、乗客名を抽出してください。キー情報を正確に抽出してください。情報を省略したり、偽の情報を捏造したりしないでください。ぼやけている、または光で見えにくい単一の文字は、疑問符 (?) に置き換えてください。データを JSON 形式で返してください:{'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"}
]
}
]
}
}'その他の使い方
制限事項
画像の制限
ディメンションと縦横比:画像の幅と高さはどちらも 10 ピクセルより大きくなければなりません。縦横比は 200:1 または 1:200 を超えてはいけません。
総ピクセル数:モデルは画像を自動的にスケーリングするため、総ピクセル数に厳密な制限はありません。ただし、画像は 1,568 万ピクセルを超えてはいけません。
サポートされている画像形式
解像度が 4K
(3840x2160)未満の画像の場合、以下の形式がサポートされています:画像形式
一般的な拡張子
メディアタイプ
BMP
.bmp
image/bmp
JPEG
.jpe, .jpeg, .jpg
image/jpeg
PNG
.png
image/png
TIFF
.tif, .tiff
image/tiff
WEBP
.webp
image/webp
HEIC
.heic
image/heic
解像度が
4K(3840x2160)から8K(7680x4320)の画像の場合、JPEG、JPG、PNG 形式のみがサポートされています。
画像サイズ:
公開 URL またはローカルパスを使用して画像を提供する場合、画像は
10 MBを超えてはいけません。Base64 エンコーディングでデータを提供する場合、エンコードされた文字列は
10 MBを超えてはいけません。
こちらもご参照ください:「画像または動画を必要なサイズに圧縮する方法」。
モデルの制限
システムメッセージ:Qwen-OCR モデルはカスタム
System Messageをサポートしておらず、固定の内部System Messageを使用します。すべての命令はUser Messageを通じて渡す必要があります。マルチターン対話なし:モデルはマルチターン対話をサポートしておらず、最新の質問にのみ回答します。
ハルシネーションのリスク:モデルは、画像内のテキストが小さすぎる、または解像度が低い場合にハルシネーションを起こす可能性があります。また、テキスト抽出に関連しない質問に対する回答の精度は保証されません。
テキストファイルの処理エラー:
課金とレート制限
課金:Qwen-OCR はマルチモーダルモデルです。総コストは次の式で計算されます:(入力トークン数 × 入力の単価) + (出力トークン数 × 出力の単価)。画像トークンの計算方法の詳細については、「画像トークンの変換方法」をご参照ください。請求書の確認やアカウントへのチャージは、課金管理 コンソールで行えます。
レート制限:Qwen-OCR のレート制限については、「モデルのレート制限 (いずれかの値を超えた場合にトリガーされます) 以下は 1 分あたりの制限です。サービスは RPS (RPM/60) および TPS (TPM/60) に基づく制限も適用する場合があります RPM TPM 入力および出力トークンを含む qwen-vl-ocr 600 6,000,000 qwen-vl-ocr-latest 1,200 qwen-vl-ocr-2025-11-20 qwen-vl-ocr-2025-08-28 600 qwen-vl-ocr-2025-04-13 qwen-vl-ocr-2024-10-28」をご参照ください。
無料クォータ (シンガポールのみ): Qwen-OCR は 100 万トークンの無料クォータを提供します。このクォータは、Model Studio をアクティベートした日、またはモデルの使用リクエストが承認された日から 90 日間有効です。
本番環境に適用
PDF などの複数ページのドキュメントを処理する場合:
分割:
Pythonのpdf2imageなどの画像編集ライブラリを使用して、PDF ファイルの各ページを高品質な画像に変換します。リクエストの送信:認識には「複数画像入力」の方法を使用します。
画像の前処理:
入力画像が鮮明で、均一に照明され、過度に圧縮されていないことを確認してください:
情報損失を防ぐために、PNG などの可逆形式を使用して画像を保存および転送します。
画像の解像度を向上させるために、平均フィルターや中央値フィルターなどのノイズ除去アルゴリズムを使用して、ノイズの多い画像を平滑化します。
不均一な照明を補正するために、ヒストグラム均等化などのアルゴリズムを使用して、輝度とコントラストを調整します。
傾いた画像の場合:DashScope SDK の
enable_rotate: trueパラメーターを使用して、認識性能を大幅に向上させます。非常に小さいまたは非常に大きな画像の場合:
min_pixelsおよびmax_pixelsパラメーターを使用して、処理前に画像のスケーリング方法を制御します。min_pixels:小さな画像を拡大して、詳細検出を改善します。デフォルト値を維持してください。max_pixels:大きすぎる画像が過剰なリソースを消費するのを防ぎます。ほとんどのシナリオでは、デフォルト値で十分です。小さなテキストが鮮明に認識されない場合は、max_pixelsの値を増やしてください。これによりトークン消費量が増加することに注意してください。
結果の検証:モデルの認識結果にはエラーが含まれる可能性があります。重大なビジネス運用では、手動レビューのプロセスを実装するか、検証ルールを追加して、モデル出力の精度を確認してください。たとえば、ID カード番号や銀行カード番号に対してフォーマット検証を使用します。
バッチ呼び出し:大規模でリアルタイム性が不要なシナリオでは、バッチ API を使用して、非同期でバッチジョブを低コストで処理します。
よくある質問
ファイルアップロード方法をどのように選べばよいですか?
モデルが出力したテキストローカライズ結果に基づいて、元の画像に検出フレームを描画するにはどうすればよいですか?
API リファレンス
Qwen-OCR の入力および出力パラメーターについては、「Qwen-OCR API リファレンス」をご参照ください。
エラーコード
モデルの呼び出しが失敗してエラーメッセージが返された場合は、「エラーメッセージ」を参照して解決してください。









