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 beberapa bahasa serta mampu menjalankan fungsi lanjutan—termasuk ekstraksi informasi, penguraian tabel, dan pengenalan rumus—berdasarkan instruksi tugas tertentu.
Wilayah yang didukung: Singapura, AS (Virginia), Tiongkok (Beijing), Tiongkok (Hong Kong), Jerman (Frankfurt). Gunakan Kunci API dan Titik akhir untuk wilayah spesifik Anda.
Coba secara online: Buka Konsol Alibaba Cloud Model Studio, pilih wilayah di pojok kanan atas, buka halaman vision, lalu pilih Qwen OCR.
Contoh
Gambar input | Hasil pengenalan |
Kenali beberapa bahasa
|
|
Kenali gambar miring
| Perkenalan Produk Filamen serat impor dari Korea Selatan. 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. |
Model yang didukung
Internasional
Dalam mode penyebaran Internasional, titik akhir dan penyimpanan data berlokasi di wilayah Singapura, sedangkan 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 |
(tokens) | (per 1 juta token) | ||||||
qwen-vl-ocr Saat ini memiliki kemampuan yang sama dengan qwen-vl-ocr-2025-11-20 | Stabil | 38.192 | 30.000 Maks per gambar: 30000 | 8.192 | $0,07 | $0,16 | 1 juta token masing-masing Berlaku selama 90 hari setelah mengaktifkan Model Studio |
qwen-vl-ocr-2025-11-20 Juga, qwen-vl-ocr-1120 Berdasarkan Qwen3-VL. Penguraian dokumen dan lokalisasi teks sangat ditingkatkan | Snapshot | ||||||
Global
Dalam mode penyebaran Global, titik akhir dan penyimpanan data berlokasi di wilayah AS (Virginia) atau wilayah Jerman (Frankfurt), sedangkan 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 Saat ini memiliki kemampuan yang sama dengan qwen-vl-ocr-2025-11-20 | Stabil | 38.192 | 30.000 Maks per gambar: 30000 | 8.192 | $0,043 | $0,072 |
qwen-vl-ocr-2025-11-20 Juga, qwen-vl-ocr-1120 Berdasarkan Qwen3-VL. Penguraian dokumen dan lokalisasi teks sangat ditingkatkan | Snapshot | |||||
Tiongkok daratan
Dalam mode penyebaran Tiongkok Daratan, titik akhir dan penyimpanan data berlokasi di wilayah Beijing, sedangkan sumber daya komputasi inferensi model dibatasi hanya untuk Tiongkok Daratan.
Model | Versi | Jendela konteks | Input maks | Output maks | Harga input | Harga output | Kuota gratis |
(token) | (per 1 juta token) | ||||||
qwen-vl-ocr Saat ini memiliki kemampuan yang sama dengan qwen-vl-ocr-2025-11-20 Panggilan batch separuh harga | Stabil | 38.192 | 30.000 Maks per gambar: 30000 | 8.192 | $0,043 | $0,072 | Tidak ada kuota gratis |
qwen-vl-ocr-latest Kemampuan yang sama dengan snapshot terbaru | Terbaru | ||||||
qwen-vl-ocr-2025-11-20 Juga, qwen-vl-ocr-1120 Berdasarkan Qwen3-VL. Penguraian dokumen dan lokalisasi teks sangat ditingkatkan | Snapshot | ||||||
qwen-vl-ocr-2025-08-28 Juga, qwen-vl-ocr-0828 | 34.096 | 4.096 | $0,717 | $0,717 | |||
qwen-vl-ocr-2025-04-13 Juga, qwen-vl-ocr-0413 | |||||||
qwen-vl-ocr-2024-10-28 Juga, 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 meningkatkan nilai ini menjadi rentang 4097 hingga 8192, kirim email ke modelstudio@service.aliyun.com dengan menyertakan 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 token.
Persiapan
Anda telah membuat Kunci API dan menyetel Kunci API sebagai Variabel lingkungan.
Saat menggunakan SDK OpenAI atau SDK DashScope, Anda harus menginstal versi SDK terbaru. Versi minimum: SDK Python DashScope 1.22.2, SDK Java 2.21.8.
DashScope SDK
Keunggulan: Mendukung semua fitur lanjutan seperti koreksi rotasi gambar dan tugas OCR bawaan. Menyediakan rangkaian fitur lengkap dengan metode pemanggilan yang sederhana.
Skenario: Proyek yang membutuhkan fungsionalitas penuh.
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 melalui parameter. Anda harus mensimulasikan fitur-fitur ini secara manual dengan membuat prompt kompleks lalu mengurai outputnya.
Skenario: Proyek yang sudah terintegrasi dengan OpenAI dan tidak bergantung pada fitur eksklusif DashScope.
Memulai
Contoh ini mengekstraksi informasi penting dari gambar tiket kereta (URL) dan mengembalikan informasi tersebut dalam format JSON. Lihat juga: cara meneruskan file lokal dan batasan gambar.
Kompatibel OpenAI
Python
from openai import OpenAI
import os
PROMPT_TICKET_EXTRACTION = """
Silakan ekstrak 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.
Ekstrak 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 akan 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 akan 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 kesalahan: {e}")Node.js
import OpenAI from 'openai';
// Definisikan prompt untuk mengekstrak informasi tiket kereta.
const PROMPT_TICKET_EXTRACTION = `
Silakan ekstrak 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.
Ekstrak 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. 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 akan 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 akan 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 ekstrak 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. Ekstrak 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 ekstrak 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.
Ekstrak 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 akan 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 akan 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 akan 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 akan 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 ekstrak 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. Ekstrak 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 ekstrak 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. Ekstrak 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
Model (kecuali qwen-vl-ocr-2024-10-28) mencakup tugas bawaan untuk skenario umum.
Cara menggunakan:
SDK DashScope: Anda tidak perlu merancang atau meneruskan prompt. Model menggunakan
Promptinternal tetap. Atur parameterocr_optionsuntuk memanggil tugas bawaan.SDK kompatibel OpenAI: Masukkan secara manual
Promptkhusus tugas.
Setiap tugas bawaan memiliki nilai task, Prompt yang ditentukan, format output, dan contoh:
Pengenalan presisi tinggi
Untuk pengenalan presisi tinggi, gunakan versi model yang lebih baru dari qwen-vl-ocr-2025-08-28 atau versi terbaru (disarankan). Fitur:
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 |
| Temukan 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 akan 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 akan 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"])// SDK dashscope versi >= 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 akan 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 akan 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/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
Tugas ini mengekstraksi informasi terstruktur dari struk, sertifikat, dan formulir, mengembalikan hasil dalam format JSON. Pilih antara dua mode:
Ekstraksi bidang kustom: Anda dapat menentukan bidang yang akan diekstraksi dengan menyediakan templat JSON kustom (
result_schema) diocr_options.task_configyang mendefinisikan nama bidang (key). Model secara otomatis mengisi nilai (value). Templat mendukung hingga tiga lapisan bersarang.Ekstraksi semua bidang: Tanpa
result_schema, model mengekstraksi semua bidang dari gambar.
Prompt untuk kedua mode berbeda:
Nilai task | Prompt yang ditentukan | Format output dan contoh |
| Ekstraksi bidang kustom: |
|
Ekstraksi semua bidang: |
|
Panggil model menggunakan SDK DashScope atau 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 naik dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
"Invoice Code": "Ekstrak kode faktur dari gambar, biasanya kombinasi angka atau huruf",
"Invoice Number": "Ekstrak 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 akan 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 akan 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 naik dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05");
resultSchema.addProperty("Invoice Code", "Ekstrak kode faktur dari gambar, biasanya kombinasi angka atau huruf");
resultSchema.addProperty("Invoice Number", "Ekstrak 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 naik dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
"Invoice Code": "Ekstrak kode faktur dari gambar, biasanya kombinasi angka atau huruf",
"Invoice Number": "Ekstrak nomor dari faktur, biasanya hanya terdiri dari digit."
}
}
}
}
}
'Jika Anda menggunakan metode SDK OpenAI atau HTTP, Anda harus menambahkan skema JSON kustom ke akhir string prompt, seperti yang ditunjukkan pada contoh kode berikut:
Penguraian tabel
Mengurai elemen tabel dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format HTML.
Nilai Tugas | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Panggil model menggunakan SDK DashScope atau 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 akan 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 akan 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 akan 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 akan 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
Mengurai dokumen hasil pindaian atau dokumen PDF yang disimpan sebagai gambar. Model ini 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 |
|
|
|
Panggil model menggunakan SDK DashScope atau 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 akan 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 akan 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 akan 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 akan 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
Mengurai rumus dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format LaTeX.
Nilai Tugas | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Panggil model menggunakan SDK DashScope atau 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 akan 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 akan 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 akan 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 akan 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
Terutama dalam skenario bahasa Tiongkok dan Inggris, mengembalikan hasil pengenalan dalam format teks biasa.
Nilai task | Prompt yang ditentukan | Format output dan contoh |
|
|
|
Panggil model menggunakan SDK DashScope atau 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 akan 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 akan 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 akan 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 akan 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
Dalam 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 |
|
|
|
Panggil model menggunakan SDK DashScope atau 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 akan 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 akan 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 akan 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 akan 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"
}
}
}
'Teruskan file lokal (encoding 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.
Gunakan 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 kompatibel OpenAI.
Lihat tabel berikut untuk menentukan jalur file berdasarkan bahasa pemrograman dan sistem operasi Anda.
Teruskan jalur file
Menyampaikan jalur file hanya didukung untuk panggilan yang dilakukan dengan SDK Python dan Java DashScope. Metode ini tidak didukung untuk metode HTTP DashScope atau 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 akan diperbesar hingga jumlah 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 akan diperkecil hingga jumlah 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": "Ekstrak 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. Ekstrak 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 akan diperkecil hingga jumlah 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 akan diperbesar hingga jumlah 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", "Ekstrak 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. Ekstrak 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 format 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 akan diperbesar hingga jumlah 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 akan diperkecil hingga jumlah 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": "Ekstrak 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. Ekstrak 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 akan diperbesar hingga jumlah 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 akan diperkecil hingga jumlah 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": "Ekstrak 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. Ekstrak 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 yang diencode 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": "Ekstrak 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. Ekstrak 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 format 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 akan diperbesar hingga jumlah 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 akan diperkecil hingga jumlah 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": "Ekstrak 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. Ekstrak 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 akan diperkecil hingga jumlah 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 akan diperbesar hingga jumlah 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", "Ekstrak 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. Ekstrak 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 yang diencode 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": "Ekstrak 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. Ekstrak 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 keduanya lebih besar dari 10 piksel. Rasio aspek tidak boleh melebihi 200:1 atau 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 media
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.
Lihat juga: 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.
Pemrosesan file teks gagal:
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 konsol Biaya dan Pengeluaran.
Pembatasan laju: Untuk batas laju Qwen-OCR, lihat Batas Laju Model (dipicu jika nilai apa pun dilampaui) Berikut adalah batas per menit. Layanan juga dapat memberlakukan batas berdasarkan RPS (RPM/60) dan TPS (TPM/60) RPM TPM Termasuk token input dan output qwen-vl-ocr 600 6.000.000 qwen-vl-ocr-latest 1.200 qwen-vl-ocr-2025-11-20 qwen-vl-ocr-2025-08-28 600 qwen-vl-ocr-2025-04-13 qwen-vl-ocr-2024-10-28.
Kuota gratis (hanya Singapura): Qwen-OCR menyediakan kuota gratis 1 juta token. Kuota ini berlaku selama 90 hari, dimulai dari tanggal Anda mengaktifkan Model Studio atau permintaan Anda untuk menggunakan model disetujui.
Mulai Beroperasi
Pemrosesan dokumen multi-halaman, seperti PDF:
Pisahkan: Gunakan pustaka pengeditan gambar, seperti
Python'spdf2image, untuk mengonversi setiap halaman file PDF menjadi gambar berkualitas tinggi.Kirim permintaan: Gunakan metode input multi-gambar untuk pengenalan.
Pra-pemrosesan gambar:
Pastikan gambar input jelas, pencahayaan merata, dan tidak terlalu terkompresi:
Untuk mencegah kehilangan informasi, gunakan format tanpa kehilangan, seperti PNG, untuk penyimpanan dan transmisi gambar.
Untuk meningkatkan definisi gambar, gunakan algoritma penghilangan derau, seperti filter mean atau median, untuk menghaluskan gambar berderau.
Untuk mengoreksi pencahayaan tidak merata, gunakan algoritma seperti penyamaan histogram adaptif untuk menyesuaikan kecerahan dan kontras.
Untuk gambar miring: Gunakan parameter SDK DashScope
enable_rotate: trueuntuk meningkatkan kinerja pengenalan secara signifikan.Untuk gambar yang sangat kecil atau sangat besar: Gunakan 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, tingkatkan nilaimax_pixels. Perhatikan bahwa ini meningkatkan konsumsi Token.
Validasi hasil: Hasil pengenalan model mungkin mengandung kesalahan. Untuk operasi bisnis kritis, terapkan proses tinjauan manual atau tambahkan aturan validasi untuk memverifikasi keakuratan output model. Misalnya, gunakan validasi format untuk nomor KTP dan nomor kartu bank.
Panggilan batch: Dalam skenario berskala besar dan non-real-time, gunakan API Batch untuk memproses pekerjaan batch secara asinkron dengan biaya lebih rendah.
FAQ
Bagaimana cara 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 kesalahan
Jika pemanggilan model gagal dan mengembalikan pesan kesalahan, lihat Pesan kesalahan untuk penyelesaian.









