Qwen-OCR adalah model pemahaman visual yang mengekstraksi teks dan mengurai data terstruktur dari berbagai gambar, seperti dokumen hasil pindaian, tabel, dan struk. Model ini mendukung berbagai bahasa serta mampu menjalankan fungsi lanjutan—termasuk ekstraksi informasi, penguraian tabel, dan pengenalan rumus—berdasarkan instruksi tugas tertentu.
Coba secara online: Model Studio (Singapura), Model Studio (Virginia), atau Model Studio (Beijing)
Contoh
Gambar input | Hasil pengenalan |
Kenali berbagai bahasa
|
|
Kenali gambar miring
| Pengenalan Produk Produk ini terbuat dari filamen serat yang diimpor dari Korea Selatan. Produk ini tidak menyusut, berubah bentuk, berjamur, atau ditumbuhi bakteri, serta tidak merusak permukaan barang. Produk ini benar-benar anti lengket, sangat menyerap air, tahan air, mudah dibersihkan, tidak beracun, bebas residu, dan cepat kering. Pengalaman penjual: Permukaan putih dan halus pada produk stainless steel, keramik, bathtub, dan kamar mandi terpadu sulit dibersihkan dengan kain biasa, dan benda tajam mudah menyebabkan goresan. Menggunakan spons loofah simulasi ini dengan sedikit deterjen netral untuk menghasilkan busa memudahkan membersihkan noda pada permukaan tersebut. 6941990612023 No. Item: 2023 |
Temukan posisi teks
pengenalan presisi tinggi mendukung lokalisasi teks. | Visualisasi lokalisasi
Lihat FAQ tentang cara menggambar kotak pembatas setiap baris teks ke gambar asli. |
Kesesuaian
Wilayah yang didukung
Model yang didukung
Internasional
Dalam mode penyebaran internasional, titik akhir dan penyimpanan data berada di wilayah Singapura. Sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia (tidak termasuk Tiongkok Daratan).
Model | Versi | Jendela konteks | Input maks | Output maks | Harga input | Harga output | Kuota gratis |
(token) | (per 1 juta token) | ||||||
qwen-vl-ocr | Stable | 34.096 | 30.000 Maks per gambar: 30.000 | 4.096 | $0,72 | $0,72 | 1 juta token input dan 1 juta token output Berlaku selama 90 hari setelah Anda mengaktifkan Model Studio |
qwen-vl-ocr-2025-11-20 Dikenal juga sebagai qwen-vl-ocr-1120 Berdasarkan arsitektur Qwen3-VL, model ini memberikan peningkatan signifikan dalam penguraian dokumen dan lokalisasi teks. | Snapshot | 38.192 | 8.192 | $0,07 | $0,16 | ||
Global
Dalam mode penyebaran global, titik akhir dan penyimpanan data berada di wilayah AS (Virginia). Sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia.
Model | Versi | Jendela konteks | Input maks | Output maks | Harga input | Harga output |
(token) | (per 1 juta token) | |||||
qwen-vl-ocr Mencocokkan kemampuan qwen-vl-ocr-2025-11-20. | Stable | 34.096 | 30.000 Maks 30.000 per gambar. | 4.096 | $0,07 | $0,16 |
qwen-vl-ocr-2025-11-20 Dikenal juga sebagai qwen-vl-ocr-1120. Berdasarkan arsitektur Qwen3-VL, model ini secara signifikan meningkatkan kemampuan penguraian dokumen dan lokalisasi teks. | Snapshot | 38.192 | 8.192 | |||
Tiongkok Daratan
Di Tiongkok Daratan, dalam mode penyebaran, titik akhir dan penyimpanan data berlokasi di Wilayah Beijing. Sumber daya komputasi untuk Inferensi model terbatas pada Tiongkok Daratan.
Model | Versi | Jendela konteks | Input maks | Output maks | Harga input | Harga output | Kuota gratis |
(token) | (per 1 juta token) | ||||||
qwen-vl-ocr Mencocokkan kemampuan qwen-vl-ocr-2025-08-28. Panggilan batch tersedia dengan harga separuhnya. | Stable | 34.096 | 30.000 Maks per gambar: 30.000 | 4.096 | $0,717 | $0,717 | Tidak ada kuota gratis |
qwen-vl-ocr-latest Selalu mencocokkan kemampuan versi terbaru. | Latest | 38.192 | 8.192 | $0,043 | $0,072 | ||
qwen-vl-ocr-2025-11-20 Dikenal juga sebagai qwen-vl-ocr-1120. Berdasarkan arsitektur Qwen3-VL, model ini secara signifikan meningkatkan kemampuan penguraian dokumen dan lokalisasi teks. | Snapshot | ||||||
qwen-vl-ocr-2025-08-28 Dikenal juga sebagai qwen-vl-ocr-0828. | 34.096 | 4.096 | $0,717 | $0,717 | |||
qwen-vl-ocr-2025-04-13 Dikenal juga sebagai qwen-vl-ocr-0413. | |||||||
qwen-vl-ocr-2024-10-28 Dikenal juga sebagai qwen-vl-ocr-1028. | |||||||
qwen-vl-ocr, qwen-vl-ocr-2025-04-13, dan qwen-vl-ocr-2025-08-28, parametermax_tokens(panjang output maksimum) secara default bernilai 4096. Untuk menaikkan nilai ini ke rentang 4097 hingga 8192, kirim email ke modelstudio@service.aliyun.com dan sertakan informasi berikut: ID akun Alibaba Cloud Anda, jenis gambar (misalnya gambar dokumen, gambar e-commerce, atau kontrak), nama model, perkiraan Queries Per Second (QPS) dan total permintaan harian, serta persentase permintaan di mana panjang output model melebihi 4096.
Persiapan
Anda telah membuat API key dan menyetel API key sebagai variabel lingkungan.
Jika Anda memanggil model menggunakan SDK OpenAI atau SDK DashScope, Anda harus menginstal versi terbaru SDK. Versi minimum untuk SDK Python DashScope adalah 1.22.2, dan versi minimum untuk SDK Java adalah 2.21.8.
SDK DashScope
Keunggulan: Mendukung semua fitur lanjutan, seperti koreksi rotasi gambar dan tugas OCR bawaan. Menyediakan rangkaian fitur lengkap dan metode pemanggilan sederhana.
Skenario: Proyek yang membutuhkan fungsionalitas lengkap.
SDK kompatibel OpenAI
Keunggulan: Mempermudah migrasi bagi pengguna yang sudah menggunakan SDK OpenAI atau alat ekosistemnya.
Keterbatasan: Tidak mendukung pemanggilan fitur lanjutan, seperti koreksi rotasi gambar dan tugas OCR bawaan, secara langsung dengan parameter. Anda harus mensimulasikan fitur-fitur ini secara manual dengan membuat prompt kompleks lalu mengurai outputnya.
Skenario: Proyek yang sudah memiliki integrasi OpenAI dan tidak bergantung pada fitur eksklusif DashScope.
Memulai
Contoh berikut mengekstraksi informasi utama dari gambar tiket kereta (URL) dan mengembalikan informasi dalam format JSON. Untuk informasi lebih lanjut, lihat cara meneruskan file lokal dan batasan gambar.
Kompatibel OpenAI
Python
from openai import OpenAI
import os
PROMPT_TICKET_EXTRACTION = """
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
"""
try:
client = OpenAI(
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan 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"},
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
"max_pixels": 32 * 32 * 8192
},
# Model mendukung penerusan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{"type": "text",
"text": PROMPT_TICKET_EXTRACTION}
]
}
])
print(completion.choices[0].message.content)
except Exception as e:
print(f"Pesan error: {e}")Node.js
import OpenAI from 'openai';
const PROMPT_TICKET_EXTRACTION = `
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
`;
const openai = new OpenAI({
// Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti baseURL dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti baseURL dengan 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: [
// Model mendukung penerusan prompt di bidang teks berikut. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{ 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',
},
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
min_pixels: 32 * 32 * 3,
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
max_pixels: 32 * 32 * 8192
}
]
}
],
});
console.log(response.choices[0].message.content)
}
main();curl
# ======= Penting =======
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti URL dasar dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dasar dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum menjalankan ===
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": "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"}
]
}
]
}'Contoh respons
DashScope
Python
import os
import dashscope
PROMPT_TICKET_EXTRACTION = """
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
"""
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False
},
# Saat tidak ada tugas bawaan yang ditetapkan, Anda dapat meneruskan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{"type": "text", "text": PROMPT_TICKET_EXTRACTION}]
}]
try:
response = dashscope.MultiModalConversation.call(
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: 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"Terjadi kesalahan: {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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// Saat tidak ada tugas bawaan yang ditetapkan, Anda dapat meneruskan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
Collections.singletonMap("text", "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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
# ======= Penting =======
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti URL dasar dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dasar dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum menjalankan ===
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": "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"
}
]
}
]
}
}'Panggil tugas bawaan
Untuk menyederhanakan pemanggilan dalam skenario tertentu, model (kecuali qwen-vl-ocr-2024-10-28) mencakup beberapa tugas bawaan.
Cara menggunakan:
SDK DashScope: Anda tidak perlu merancang dan meneruskan
Prompt. Model menggunakanPrompttetap secara internal. Atur parameterocr_optionsuntuk memanggil tugas bawaan.SDK kompatibel OpenAI: Anda harus memasukkan secara manual
Promptyang ditentukan untuk tugas tersebut.
Tabel berikut mencantumkan nilai task, Prompt yang ditentukan, format output, dan contoh untuk setiap tugas bawaan:
Pengenalan presisi tinggi
Kami merekomendasikan versi model yang lebih baru dari qwen-vl-ocr-2025-08-28 atau versi terbaru untuk memanggil tugas pengenalan presisi tinggi. Tugas ini memiliki fitur berikut:
Mengenali dan mengekstraksi konten teks.
Mendeteksi posisi teks dengan melokalisasi baris teks dan mengeluarkan koordinatnya.
Untuk informasi lebih lanjut tentang cara menggambar kotak pembatas pada gambar asli setelah Anda mendapatkan koordinat kotak pembatas teks, lihat FAQ.
Nilai task | Prompt yang ditentukan | Format output dan contoh |
| Lokalisasi semua baris teks dan kembalikan koordinat persegi panjang yang diputar |
|
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke pengenalan presisi tinggi.
ocr_options={"task": "advanced_recognition"}
)
# Tugas pengenalan presisi tinggi mengembalikan hasil sebagai teks biasa.
print(response["output"]["choices"][0]["message"].content[0]["text"])// versi SDK dashscope >= 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas OCR bawaan.
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()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}
'Ekstraksi informasi
Model ini mendukung ekstraksi informasi terstruktur dari dokumen seperti struk, sertifikat, dan formulir, serta mengembalikan hasil dalam format JSON. Anda dapat memilih antara dua mode:
Ekstraksi bidang kustom: Anda dapat menentukan bidang yang akan diekstraksi. Anda harus menentukan templat JSON kustom (
result_schema) dalam parameterocr_options.task_configuntuk menentukan nama bidang spesifik (key) yang akan diekstraksi. Model secara otomatis mengisi nilai yang sesuai (value). Templat mendukung hingga tiga lapisan bersarang.Ekstraksi semua bidang: Jika Anda tidak menentukan parameter
result_schema, model mengekstraksi semua bidang dari gambar.
Prompt untuk kedua mode berbeda:
Nilai Tugas | Prompt yang ditentukan | Format output dan contoh |
| Ekstraksi bidang kustom: |
|
Ekstraksi semua bidang: |
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
# gunakan [pip install -U dashscope] untuk memperbarui sdk
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
"Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
"Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
}
}
}
}
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
// Buat objek JSON utama.
JsonObject resultSchema = new JsonObject();
resultSchema.addProperty("Ride Date", "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05");
resultSchema.addProperty("Invoice Code", "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf");
resultSchema.addProperty("Invoice Number", "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit.");
// Konfigurasikan tugas OCR bawaan.
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.KEY_INFORMATION_EXTRACTION)
.taskConfig(OcrOptions.TaskConfig.builder()
.resultSchema(resultSchema)
.build())
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
"Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
"Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
}
}
}
}
}
'Jika Anda menggunakan SDK OpenAI atau metode HTTP, Anda harus menambahkan skema JSON kustom ke akhir string prompt, seperti yang ditunjukkan pada contoh kode berikut:
Penguraian tabel
Model mengurai elemen tabel dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format HTML.
Nilai Tugas | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke penguraian tabel.
ocr_options= {"task": "table_parsing"}
)
# Tugas penguraian tabel mengembalikan hasil dalam format 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels",3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas OCR bawaan.
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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}
'Penguraian dokumen
Model mendukung penguraian dokumen hasil pindaian atau dokumen PDF yang disimpan sebagai gambar. Model dapat mengenali elemen seperti judul, ringkasan, dan label dalam file serta mengembalikan hasil pengenalan sebagai teks dalam format LaTeX.
Nilai Tugas | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke penguraian dokumen.
ocr_options= {"task": "document_parsing"}
)
# Tugas penguraian dokumen mengembalikan hasil dalam format 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas OCR bawaan.
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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}
'Pengenalan rumus
Model mendukung penguraian rumus dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format LaTeX.
Nilai task | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False
}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke pengenalan rumus.
ocr_options= {"task": "formula_recognition"}
)
# Tugas pengenalan rumus mengembalikan hasil dalam format 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas OCR bawaan.
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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}
'Pengenalan teks umum
Pengenalan teks umum terutama digunakan untuk skenario bahasa Tiongkok dan Inggris serta mengembalikan hasil pengenalan dalam format teks biasa.
Nilai task | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke pengenalan teks umum.
ocr_options= {"task": "text_recognition"}
)
# Tugas pengenalan teks umum mengembalikan hasil dalam format teks biasa.
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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas bawaan.
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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}'Pengenalan multibahasa
Pengenalan multibahasa cocok untuk skenario yang melibatkan bahasa selain Tiongkok dan Inggris. Bahasa yang didukung adalah Arab, Prancis, Jerman, Italia, Jepang, Korea, Portugis, Rusia, Spanyol, dan Vietnam. Hasil pengenalan dikembalikan dalam format teks biasa.
Nilai task | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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",
# Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
# Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
"enable_rotate": False}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-ocr-2025-11-20',
messages=messages,
# Atur tugas bawaan ke pengenalan multibahasa.
ocr_options={"task": "multi_lan"}
)
# Tugas pengenalan multibahasa mengembalikan hasil sebagai teks biasa.
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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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");
// Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
// Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
map.put("enable_rotate", false);
// Konfigurasikan tugas OCR bawaan.
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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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);
}
}# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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"
}
}
}
'Meneruskan file lokal (pengodean Base64 atau jalur file)
Qwen-VL menyediakan dua metode untuk mengunggah file lokal: encoding Base64 dan jalur file langsung. Anda dapat memilih metode unggah berdasarkan ukuran file dan jenis SDK. Untuk rekomendasi spesifik, lihat Cara memilih metode unggah file. Kedua metode harus memenuhi persyaratan file dalam Batasan gambar.
Gunakan encoding Base64
Konversi file ke string yang diencode Base64, lalu teruskan ke model. Metode ini cocok untuk SDK OpenAI dan DashScope, serta permintaan HTTP.
Unggah jalur file
Teruskan jalur file lokal langsung ke model. Metode ini hanya didukung oleh SDK Python dan Java DashScope. Tidak didukung untuk metode HTTP DashScope atau yang kompatibel OpenAI.
Lihat tabel berikut untuk menentukan jalur file berdasarkan bahasa pemrograman dan sistem operasi Anda.
Teruskan jalur file
Penerusan jalur file hanya didukung untuk panggilan yang dilakukan dengan SDK Python dan Java DashScope. Metode ini tidak didukung untuk metode HTTP DashScope atau yang kompatibel OpenAI.
Python
import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
local_path = "xxx/test.jpg"
image_path = f"file://{local_path}"
messages = [
{
"role": "user",
"content": [
{
"image": image_path,
# Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192,
},
# Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{
"text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan 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);
// Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
Collections.singletonMap("text", "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
// Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
simpleMultiModalConversationCall("xxx/test.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Teruskan string yang diencode Base64
Kompatibel OpenAI
Python
from openai import OpenAI
import os
import base64
# Baca file lokal dan encode dalam format Base64.
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Ganti xxx/test.png dengan jalur mutlak gambar lokal Anda.
base64_image = encode_image("xxx/test.png")
client = OpenAI(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan 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",
# Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung. "f" adalah metode pemformatan string.
# Gambar PNG: f"data:image/png;base64,{base64_image}"
# Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
# Gambar WEBP: f"data:image/webp;base64,{base64_image}"
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
# Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192
},
# Model mendukung penerusan prompt di bidang teks berikut. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{"type": "text", "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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({
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
// Baca file lokal dan encode dalam format Base64.
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// Ganti xxx/test.png dengan jalur mutlak gambar lokal Anda.
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": {
// Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung.
// Gambar PNG: data:image/png;base64,${base64Image}
// Gambar JPEG: data:image/jpeg;base64,${base64Image}
// Gambar WEBP: data:image/webp;base64,${base64Image}
"url": `data:image/jpeg;base64,${base64Image}`
},
// Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
// Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
"max_pixels": 32 * 32 * 8192
},
// Model mendukung penerusan prompt di bidang teks berikut. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{
"type": "text",
"text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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
Untuk informasi tentang cara mengonversi file ke string yang diencode Base64, lihat kode contoh.
Untuk tujuan demonstrasi, string yang diencode Base64
"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam praktiknya, Anda harus meneruskan string lengkap.
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
# === Hapus komentar ini sebelum menjalankan ===
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": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Format encoding Base64.
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
base64_image = encode_image("xxx/test.jpg")
messages = [
{
"role": "user",
"content": [
{
# Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung. "f" adalah metode pemformatan string.
# Gambar PNG: f"data:image/png;base64,{base64_image}"
# Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
# Gambar WEBP: f"data:image/webp;base64,{base64_image}"
"image": f"data:image/jpeg;base64,{base64_image}",
# Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
"min_pixels": 32 * 32 * 3,
# Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels, "max_pixels": 32 * 32 * 8192,
},
# Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
{
"text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: 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 {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
// Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
// Format encoding 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); // Encoding Base64.
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "data:image/jpeg;base64," + base64Image);
// Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
map.put("max_pixels", 8388608);
// Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
map.put("min_pixels", 3072);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
// Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
Collections.singletonMap("text", "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
// Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
simpleMultiModalConversationCall("xxx/test.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
Untuk informasi tentang cara mengonversi file ke string yang diencode Base64, lihat kode contoh.
Untuk tujuan demonstrasi, string yang diencode Base64
"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam praktiknya, Anda harus meneruskan string lengkap.
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===
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": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format 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'}"}
]
}
]
}
}'Penggunaan lainnya
Batasan
Batasan gambar
Dimensi dan rasio aspek: Lebar dan tinggi gambar harus lebih besar dari 10 piksel. Rasio aspek tidak boleh melebihi 200:1 atau kurang dari 1:200.
Total piksel: Model secara otomatis menskalakan gambar, sehingga tidak ada batasan ketat pada jumlah total piksel. Namun, gambar tidak boleh melebihi 15,68 juta piksel.
Format gambar yang didukung
Untuk gambar dengan resolusi di bawah 4K
(3840x2160), format berikut didukung:Format gambar
Ekstensi umum
Jenis 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
Untuk gambar dengan resolusi dari
4K (3840x2160)hingga8K (7680x4320), hanya format JPEG, JPG, dan PNG yang didukung.
Ukuran gambar:
Jika Anda menyediakan gambar menggunakan URL publik atau jalur lokal, ukuran gambar tidak boleh melebihi
10 MB.Jika Anda menyediakan data dalam encoding Base64, string yang diencode tidak boleh melebihi
10 MB.
Untuk informasi lebih lanjut, lihat Cara memampatkan gambar atau video ke ukuran yang diperlukan.
Batasan model
Pesan Sistem: Model Qwen-OCR tidak mendukung
Pesan Sistemkustom dan menggunakanPesan Sisteminternal tetap. Anda harus meneruskan semua instruksi melaluiPesan Pengguna.Tidak ada percakapan multi-putaran: Model tidak mendukung percakapan multi-putaran dan hanya menjawab pertanyaan terbaru.
Risiko halusinasi: Model mungkin mengalami halusinasi jika teks dalam gambar terlalu kecil atau memiliki resolusi rendah. Selain itu, akurasi jawaban untuk pertanyaan yang tidak terkait dengan ekstraksi teks tidak dijamin.
Tidak dapat memproses file teks:
Untuk file yang berisi data gambar, ikuti rekomendasi dalam Mulai produksi untuk mengubahnya menjadi urutan gambar sebelum diproses.
Untuk file dengan teks biasa atau data terstruktur, gunakan Qwen-Long, model yang dapat mengurai teks panjang.
Penagihan dan pembatasan laju
Penagihan: Qwen-OCR adalah model multimodal. Total biaya dihitung sebagai berikut: (Jumlah token input × Harga satuan input) + (Jumlah token output × Harga satuan output). Untuk informasi lebih lanjut tentang cara menghitung token gambar, lihat Metode konversi token gambar. Anda dapat melihat tagihan atau mengisi ulang akun Anda di halaman Biaya dan Pengeluaran.
Pembatasan laju: Untuk batas laju Qwen-OCR, lihat Batas laju.
Kuota gratis (hanya wilayah Singapura): Qwen-OCR menyediakan kuota gratis 1 juta token. Kuota ini berlaku selama 90 hari, mulai dari tanggal Anda mengaktifkan Model Studio atau permintaan Anda untuk menggunakan model disetujui.
Peluncuran
Pemrosesan dokumen multi-halaman, seperti PDF:
Pisahkan: Anda dapat menggunakan pustaka pengeditan gambar, seperti
Python'spdf2image, untuk mengonversi setiap halaman file PDF menjadi gambar berkualitas tinggi.Kirim permintaan: Anda dapat menggunakan metode input multi-gambar untuk pengenalan.
Pra-pemrosesan gambar:
Pastikan gambar input jelas, pencahayaan merata, dan tidak terlalu terkompresi:
Untuk mencegah kehilangan informasi, Anda dapat menggunakan format lossless, seperti PNG, untuk penyimpanan dan transmisi gambar.
Untuk meningkatkan definisi gambar, Anda dapat menggunakan algoritma penghilangan derau, seperti filter mean atau median, untuk menghaluskan gambar berisik.
Untuk mengoreksi pencahayaan tidak merata, Anda dapat menggunakan algoritma seperti penyamaan histogram adaptif untuk menyesuaikan kecerahan dan kontras.
Untuk gambar miring: Anda dapat menggunakan parameter SDK DashScope
enable_rotate: trueuntuk meningkatkan kinerja pengenalan secara signifikan.Untuk gambar yang sangat kecil atau sangat besar: Anda dapat menggunakan parameter
min_pixelsdanmax_pixelsuntuk mengontrol cara gambar diskalakan sebelum diproses.min_pixels: Memperbesar gambar kecil untuk meningkatkan deteksi detail. Pertahankan nilai default.max_pixels: Mencegah gambar terlalu besar mengonsumsi sumber daya berlebihan. Untuk sebagian besar skenario, nilai default sudah cukup. Jika teks kecil tidak dikenali dengan jelas, Anda dapat menaikkan nilaimax_pixels. Perhatikan bahwa ini meningkatkan konsumsi token.
Validasi hasil: Hasil pengenalan model mungkin mengandung kesalahan. Untuk operasi bisnis kritis, Anda dapat menerapkan proses tinjauan manual atau menambahkan aturan validasi untuk memverifikasi keakuratan output model. Misalnya, Anda dapat menggunakan validasi format untuk nomor KTP dan nomor kartu bank.
Panggilan batch: Dalam skenario berskala besar dan non-real-time, Anda dapat menggunakan API Batch untuk memproses pekerjaan batch secara asinkron dengan biaya lebih rendah.
FAQ
Bagaimana memilih metode unggah file?
Bagaimana cara menggambar bingkai deteksi pada gambar asli setelah model mengeluarkan hasil lokalisasi teks?
Referensi API
Untuk parameter input dan output Qwen-OCR, lihat Referensi API Qwen-OCR.
Kode error
Jika panggilan gagal, lihat Pesan error untuk troubleshooting.









