Qwen-OCR は、スキャンしたドキュメント、テーブル、レシートなどの画像からテキストや構造化データを抽出する視覚理解モデルです。多言語に対応し、情報抽出、テーブル解析、数式認識、ドキュメント解析などの高度な OCR タスクをサポートします。
オンラインで試す: Alibaba Cloud Model Studio コンソールに移動し、右上隅でリージョンを選択し、ビジョンページに移動して、Qwen OCR を選択します。
例
|
入力画像 |
認識結果 |
|
多言語の認識
|
|
|
傾いた画像の認識
|
概要 韓国から輸入された繊維フィラメント。 6941990612023 商品番号:2023 |
|
テキスト位置の特定
高精度認識タスクはテキストのローカライズをサポートします。 |
ローカライズの可視化
各テキスト行のバウンディングボックスを元の画像に描画する方法については、「よくある質問」をご参照ください。 |
モデルの選択
Qwen-OCR は以下のモデルを提供しています。ビジネス要件に基づいて選択してください:
-
Qwen3.5-OCR: Qwen3.5 アーキテクチャをベースに構築され、ドキュメント解析、テキストのローカライズ、キー情報抽出の機能が包括的にアップグレードされています。マルチターン対話と PDF ドキュメントの解析をサポートしています。ビジネス証明書 (ID カードや運転免許証など) からの情報抽出が大幅に改善されています。サポートされている証明書の種類については、「サポートされている証明書とドキュメントの種類」をご参照ください。
qwen3.5-ocrモデルを含みます。 -
Qwen-VL-OCR: Qwen3-VL アーキテクチャに基づいて構築されています。ドキュメント解析、テキストのローカライズ (高精度認識)、情報抽出、テーブル解析、数式認識、一般的なテキスト認識、多言語認識などの組み込みタスクをサポートします。また、イメージの回転補正もサポートします。
qwen-vl-ocr(安定版)、qwen-vl-ocr-latest(最新版)、qwen-vl-ocr-2025-11-20、およびqwen-vl-ocr-2025-08-28モデルが含まれます。 -
旧バージョン (非推奨): これらのバージョンは機能と性能の両方で新しいモデルに劣るため、
qwen3.5-ocrへの移行を推奨します。これには、qwen-vl-ocr-2025-04-13およびqwen-vl-ocr-2024-10-28モデルが含まれます。
qwen-vl-ocr, qwen-vl-ocr-2025-04-13, and qwen-vl-ocr-2025-08-28モデルでは、max_tokensパラメーター (最大出力長) のデフォルト値は 4096 です。この値を 4097 から 8192 の範囲に増やすには、営業担当者にご連絡いただき、以下の情報をご提供ください: Alibaba Cloud アカウント ID、イメージタイプ (ドキュメント画像、EC 画像、契約書など)、モデル名、推定 QPS (1 秒あたりのクエリ数) と 1 日あたりの合計リクエスト数、およびモデルの出力長が 4096 トークンを超えるリクエストの割合。
オンライン体験: [Model Studio コンソール]にアクセスし、右上隅でターゲットリージョンを選択して[ビジョンモデル]に移動すると、Qwen-OCR モデルをお試しいただけます。
事前準備
-
OpenAI SDK または DashScope SDK を使用する場合は、最新の SDK バージョンをインストールしてください。最小バージョン:DashScope Python SDK 1.22.2、Java SDK 2.21.8。
-
DashScope SDK
-
利点:シンプルな API で、画像回転補正や組み込み 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/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
base_url="https://{WorkspaceId}.ap-southeast-1.maas.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"Error message: {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/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.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/model-studio/get-api-key をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.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'}"}
]
}
]
}'
レスポンス例
OpenAI 互換 - レスポンス
Response API は、画像 (最大 20 MB) と PDF (最大 50 ページおよび 100 MB) をサポートしています。この API は、qwen3.5-ocr 以降のモデルでのみサポートされています。次の例では、Response API に画像を渡してテキストを抽出します。PDF の例については、PDF ドキュメントの解析をご参照ください。
Python
Node.js
curl
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'}
"""
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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/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"An error occurred: {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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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/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/model-studio/get-api-key をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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 を除くモデルには、一般的な OCR シナリオ向けの組み込みタスクが組み込まれています。
組み込みタスクの呼び出し方法:
-
DashScope SDK:
ocr_optionsパラメーターを設定して、組み込みタスクを呼び出します。qwen3.5-ocr以降、組み込みタスクはカスタムプロンプトを上書きすることなく連携して動作し、組み込みタスク結果はocr_resultフィールドで返されます。以前のモデルでは、固定の内部Promptを使用します。 -
OpenAI 互換 SDK: メッセージでタスク固有の
Promptを手動で渡します。
各タスクには、task 値、固定の Prompt、出力フォーマット、および出力例があります:
高精度認識
高精度な認識には、qwen-vl-ocr-2025-08-28 以降のモデルバージョン、または最新バージョン (推奨) をご利用ください。 特長:
-
テキストコンテンツを認識し、抽出します。
-
テキスト行を特定し、その座標を出力することでテキストの位置を検出します。
返された座標を使用して元の画像にバウンディングボックスを描画するには、「よくある質問」をご参照ください。
|
task の値 |
指定されたプロンプト |
出力形式と例 |
|
|
すべてのテキスト行を検出し、回転した長方形の座標 |
|
import os
import dashscope
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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 形式で返します。このモデルは、50種類以上の一般的な証明書やドキュメントからの構造化データ抽出をサポートしています。完全なリストについては、「サポートされている証明書とドキュメントの種類」をご参照ください。2つのモードが利用可能です:
-
カスタムフィールド抽出:
ocr_options.task_configに、フィールド名 (key) を定義する JSON テンプレート (result_schema) を指定します。 モデルが値 (value) を入力します。 このテンプレートは、最大 3 階層のネストをサポートします。 -
全フィールド抽出:
result_schemaを省略すると、モデルはイメージ内で検出したすべてのフィールドを抽出します。
プロンプトは2つのモードで異なります:
|
task の値 |
指定されたプロンプト |
出力形式と例 |
|
|
カスタムフィールド抽出: |
|
|
全フィールド抽出: |
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
# [pip install -U dashscope] を使用して SDK を更新してください
import os
import dashscope
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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": {
"乗車日": "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05",
"請求書コード": "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです",
"請求書番号": "請求書から番号を抽出します。通常は数字のみで構成されます。"
}
}
}
}
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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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("乗車日", "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05");
resultSchema.addProperty("請求書コード", "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです");
resultSchema.addProperty("請求書番号", "請求書から番号を抽出します。通常は数字のみで構成されます。");
// 組み込み 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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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": {
"乗車日": "画像内の乗車日時に対応し、YYYY-MM-DD 形式、例:2025-03-05",
"請求書コード": "画像から請求書コードを抽出します。通常は数字または文字の組み合わせです",
"請求書番号": "請求書から番号を抽出します。通常は数字のみで構成されます。"
}
}
}
}
}
'OpenAI SDK または HTTP を使用する場合、次のコード例に示すように、カスタム JSON スキーマをプロンプト文字列の末尾に追加します:
テーブル解析
画像内のテーブル要素を解析し、認識結果を HTML 形式のテキストで返します。
|
task の値 |
指定されたプロンプト |
出力形式と例 |
|
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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/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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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"
}
}
}'多言語認識
中国語または英語以外の言語のテキストを認識します。サポートされている言語:アラビア語、フランス語、ドイツ語、イタリア語、日本語、韓国語、ポルトガル語、ロシア語、スペイン語、ベトナム語。結果はプレーンテキスト形式で返されます。
|
タスクの価値 |
指定されたプロンプト |
出力形式と例 |
|
|
|
|
DashScope SDK または HTTP を使用してモデルを呼び出します:
import os
import dashscope
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
// 中国 (北京) リージョンのモデルを使用する場合、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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"
}
}
}
'PDF ドキュメント解析
qwen3.5-ocr は、PDF を手動でイメージに分割する必要なく、Response API 経由で PDF ファイルを直接渡してドキュメントを解析できます。出力長はモデルの最大出力長に制限されないため、長いドキュメントも完全に解析できます。サポートされているのは Response API のみで、Chat API はサポートされていません。PDF ファイルの制限は、最大 50 ページ、100 MB 以下です。
以下の例では、Response API を使用して PDF ファイルを渡し、ドキュメント解析を行います。
Python
import os
from openai import OpenAI
client = OpenAI(
# 環境変数を設定していない場合は、次の行を API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下の URL は中国 (北京) リージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
response = client.responses.create(
model="qwen3.5-ocr",
input=[{
"role": "user",
"content": [{
"type": "input_file",
"file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
}]
}],
extra_body={
"ocr_options": {"task": "document_parsing"}
}
)
# 組み込みタスクの結果を取得
print(response.output[0].content[0].ocr_result)
Node.js
import OpenAI from 'openai';
const client = new OpenAI({
// 環境変数を設定していない場合は、次の行を API キーに置き換えてください:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下の URL は中国 (北京) リージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
});
async function main() {
const response = await client.responses.create({
model: "qwen3.5-ocr",
input: [{
role: "user",
content: [{
type: "input_file",
file_url: "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
}]
}],
ocr_options: { task: "document_parsing" }
});
// 組み込みタスクの結果を取得
console.log(response.output[0].content[0].ocr_result);
}
main();
Java
import java.util.Collections;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.JsonValue;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;
import com.openai.models.responses.ResponseInputFile;
import com.openai.models.responses.ResponseInputItem;
public class Main {
public static void main(String[] args) {
OpenAIClient client = OpenAIOkHttpClient.builder()
// 環境変数を設定していない場合は、次の行を API キーに置き換えてください:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// 以下の URL は中国 (北京) リージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
.baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
.build();
ResponseInputFile inputFile = ResponseInputFile.builder()
.fileUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf")
.build();
ResponseInputItem messageInputItem = ResponseInputItem.ofMessage(
ResponseInputItem.Message.builder()
.role(ResponseInputItem.Message.Role.USER)
.addContent(inputFile)
.build()
);
ResponseCreateParams createParams = ResponseCreateParams.builder()
.model("qwen3.5-ocr")
.inputOfResponse(Collections.singletonList(messageInputItem))
.putAdditionalBodyProperty(
"ocr_options",
JsonValue.from(Collections.singletonMap("task", "document_parsing"))
)
.build();
Response response = client.responses().create(createParams);
// 組み込みタスクの結果を取得
Object ocrResult = response.output().get(0).message().get().content().get(0)
.outputText().get()._additionalProperties().get("ocr_result");
System.out.println(ocrResult);
}
}
curl
# 以下の URL は中国 (北京) リージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-ocr",
"ocr_options": {
"task": "document_parsing"
},
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
}
]
}
]
}'
Response API をサポートしていない以前のモデル (qwen-vl-ocr-2025-11-20以前) では、Pythonのpdf2imageなどの画像処理ライブラリを使用して各 PDF ページをイメージに変換してから、マルチイメージ入力 メソッドでページごとに認識します。
OpenAI Responses API のその他の使用方法 (完了したモデルの応答の取得や管理など) については、「OpenAI 互換 - レスポンス」をご参照ください。
ローカルファイルの渡し方 (Base64 エンコーディングまたはファイルパス)
Base64 エンコーディングまたは直接のファイルパスを使用してローカルファイルをアップロードします。ファイルサイズと SDK の種類に基づいて方法を選択してください。詳細については、「ファイルアップロード方法の選択」をご参照ください。どちらの方法も、「画像の制限」のファイル要件を満たす必要があります。
Base64 エンコーディングの使用
ファイルを Base64 エンコードされた文字列に変換し、それをモデルに渡します。この方法は、OpenAI および DashScope SDK、および HTTP リクエストに適しています。
ファイルパスの使用
ローカルファイルのパスを直接モデルに渡します。この方法は、DashScope Python および Java SDK でのみサポートされています。DashScope HTTP または OpenAI 互換のメソッドではサポートされていません。
次の表は、プログラミング言語とオペレーティングシステム別のファイルパス形式を示しています。
ファイルパスの渡し方
ファイルパスの渡し方は、DashScope Python および Java SDK での呼び出しでのみサポートされています。この方法は、DashScope HTTP または OpenAI 互換のメソッドではサポートされていません。
Python
import os
import dashscope
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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/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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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/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/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
base_url="https://{WorkspaceId}.ap-southeast-1.maas.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/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.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/model-studio/get-api-key をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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/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 {
// {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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/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/model-studio/get-api-key をご参照ください。
# {WorkspaceId} をお使いのワークスペース ID に置き換えてください。URL はリージョンによって異なります。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.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)未満のイメージでは、次のフォーマットがサポートされています:イメージフォーマット
一般的な拡張子
MIME タイプ
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 またはローカルパスを使用してイメージを提供する場合:
qwen3.5-ocrは最大20 MBのイメージをサポートし、他のバージョンは最大10 MBをサポートします。 -
データを Base64 エンコーディングで提供する場合、エンコードされた文字列は
10 MBを超えることはできません。
関連情報: イメージまたはビデオを必須サイズに圧縮する方法 。
-
モデルの制限
-
システムメッセージ: Qwen-OCR は固定の内部
System Messageを使用し、カスタムメッセージは受け付けません。すべての命令はUser Messageで渡してください。 -
マルチターン対話:
qwen3.5-ocr以降、マルチターン対話がサポートされるようになりました。イメージ URL なしでフォローアップのテキストメッセージを送信できます。qwen-vl-ocr-2025-11-20およびそれ以前のバージョンは、最新のメッセージのみを処理し、コンテキストを保持しません。 -
ハルシネーションのリスク: イメージ内のテキストが小さすぎる、または解像度が低い場合、モデルがハルシネーションを起こす可能性があります。また、テキスト抽出に関連しない質問への回答の精度は保証されません。
-
テキストファイル処理のエラー:
サポートされる証明書とドキュメントの種類
情報抽出タスクは、以下の証明書、領収書、許可証からの構造化データ抽出をサポートしています。
-
パスポートおよび渡航文書: 中国のパスポート、マカオのパスポート、香港・マカオ住民向け中国本土渡航許可証、台湾住民向け中国本土渡航許可証、香港・マカオ住民向け回郷証。
-
車両関連書類および販売請求書: 運転免許証、車両銘板、車両適合証明書、車両登録証明書、自動車販売請求書、中古車販売請求書。
-
請求書および税務領収書: 付加価値税普通請求書 (ロール)、定額特別請求書、一般機械印字請求書、納税証明書、中央非税収入領収書。
-
交通機関の領収書: 12306 高速鉄道チケット、乗車券、乗船券、高速道路料金領収書、高速道路機械印字請求書。
-
金融カードおよび領収書: クレジットカード、電子銀行引受手形、支払領収書、社会保障カード。
-
ビジネスライセンスおよび許可証: 営業許可証、食品営業許可証、食品生産許可証、医薬品営業許可証、医療機器営業許可証。
-
不動産証明書: 不動産所有権証明書。
-
国際 ID カード: 香港 ID、マカオ ID、インドネシア ID、タイ ID、ベトナム ID、マレーシア ID、フィリピン ID、インド ID、トルコ ID、パキスタン ID、メキシコ ID、イギリス ID、米国 ID。
-
国際パスポートおよび運転免許証: インドのパスポート、シンガポールのパスポート、タイのパスポート、米国のパスポート、オーストラリアのパスポート、UAE のパスポート、フィリピンの運転免許証、日本の運転免許証、米国の運転免許証。
課金とレート制限
-
課金: Qwen-OCR はマルチモーダルモデルです。総コストは次のように計算されます: (入力トークン数 × 入力単価) + (出力トークン数 × 出力単価)。請求書の表示やアカウントへのチャージは、課金管理コンソールで行います。
-
イメージトークンの計算:次のコードを使用して、イメージトークンの使用量を見積もります。実際の課金は API 応答に基づきます。
-
-
レート制限: Qwen-OCR のレート制限については、「レート制限」をご参照ください。
-
無料クォータ (シンガポールのみ): Qwen-OCR は 100 万トークンの無料クォータを提供します。このクォータは、Model Studio をアクティブ化した日、またはモデルの使用リクエストが承認された日から 90 日間有効です。
公開
-
画像の前処理:
-
入力画像が鮮明で、照明が均一であり、過度に圧縮されていないことを確認してください:
-
情報の損失を避けるため、画像は PNG などの可逆フォーマットで保存および転送してください。
-
画像の解像度を向上させるには、平均値フィルターや中央値フィルターなどのノイズ除去アルゴリズムを使用して、ノイズの多い画像を平滑化します。
-
不均一な照明を補正するには、適応的ヒストグラム平坦化などのアルゴリズムを使用して、輝度とコントラストを調整します。
-
-
傾いた画像: DashScope SDK で
enable_rotate: trueを設定し、認識前に回転を補正します。 -
極端に小さいまたは大きい画像:
min_pixelsとmax_pixelsを使用して、画像のスケーリングをコントロールします。-
min_pixels:小さい画像を拡大してディテールを向上させます。デフォルト値のままにすることを推奨します。 -
max_pixels:大きすぎる画像が過剰にトークンを消費するのを防ぎます。ほとんどの場合はデフォルト値で対応できます。小さいテキストが認識されない場合は、この値を大きくしてください。ただし、トークン使用量が増加します。
-
-
-
結果の検証: モデルの認識結果にはエラーが含まれる可能性があります。重大なビジネス運用では、手動レビュープロセスを導入するか、検証ルールを追加して、モデルの出力の精度を検証する必要があります。例えば、ID カードや銀行カード番号にはフォーマット検証を使用します。
-
バッチ処理: 大量かつ非リアルタイムのワークロードには、Batch API を使用して、ジョブを非同期で低コストに処理します。
よくある質問
ファイルアップロード方法の選択
モデルがテキストのローカライズ結果を出力した後、元のイメージに検出フレームを描画するにはどうすればよいですか?
API リファレンス
Qwen-OCR の入力パラメーターと出力パラメーターについては、Qwen-OCR API リファレンスをご参照ください。
エラーコード
モデルの呼び出しに失敗し、エラーメッセージが返された場合は、解決方法について「エラーコード」をご参照ください。



