全部产品
Search
文档中心

Alibaba Cloud Model Studio:Ekstraksi teks (Qwen-OCR)

更新时间:Feb 04, 2026

Qwen-OCR adalah model pemahaman visual yang mengekstraksi teks dan mengurai data terstruktur dari berbagai gambar, seperti dokumen hasil pindaian, tabel, dan struk. Model ini mendukung berbagai bahasa serta mampu menjalankan fungsi lanjutan—termasuk ekstraksi informasi, penguraian tabel, dan pengenalan rumus—berdasarkan instruksi tugas tertentu.

Coba secara online: Model Studio (Singapura), Model Studio (Virginia), atau Model Studio (Beijing)

Contoh

Gambar input

Hasil pengenalan

Kenali berbagai bahasa

image

INTERNATIONAL

MOTHER LANGUAGE

DAY

Привет!

Hello!

Bonjour!

Merhaba!

Ciao!

Hello!

Ola!

בר מולד

Salam!

Kenali gambar miring

image

Pengenalan Produk

Produk ini terbuat dari filamen serat yang diimpor dari Korea Selatan. Produk ini tidak menyusut, berubah bentuk, berjamur, atau ditumbuhi bakteri, serta tidak merusak permukaan barang. Produk ini benar-benar anti lengket, sangat menyerap air, tahan air, mudah dibersihkan, tidak beracun, bebas residu, dan cepat kering.

Pengalaman penjual: Permukaan putih dan halus pada produk stainless steel, keramik, bathtub, dan kamar mandi terpadu sulit dibersihkan dengan kain biasa, dan benda tajam mudah menyebabkan goresan. Menggunakan spons loofah simulasi ini dengan sedikit deterjen netral untuk menghasilkan busa memudahkan membersihkan noda pada permukaan tersebut.

6941990612023

No. Item: 2023

Temukan posisi teks

img_1

pengenalan presisi tinggi mendukung lokalisasi teks.

Visualisasi lokalisasi

img_1_location

Lihat FAQ tentang cara menggambar kotak pembatas setiap baris teks ke gambar asli.

Kesesuaian

Wilayah yang didukung

  • Singapura: Gunakan API key untuk wilayah ini.

  • Virginia: Gunakan API key untuk wilayah ini.

  • Beijing: Gunakan API key untuk wilayah ini.

Model yang didukung

Internasional

Dalam mode penyebaran internasional, titik akhir dan penyimpanan data berada di wilayah Singapura. Sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia (tidak termasuk Tiongkok Daratan).

Model

Versi

Jendela konteks

Input maks

Output maks

Harga input

Harga output

Kuota gratis

(Catatan)

(token)

(per 1 juta token)

qwen-vl-ocr

Stable

34.096

30.000

Maks per gambar: 30.000

4.096

$0,72

$0,72

1 juta token input dan 1 juta token output

Berlaku selama 90 hari setelah Anda mengaktifkan Model Studio

qwen-vl-ocr-2025-11-20

Dikenal juga sebagai qwen-vl-ocr-1120
Berdasarkan arsitektur Qwen3-VL, model ini memberikan peningkatan signifikan dalam penguraian dokumen dan lokalisasi teks.

Snapshot

38.192

8.192

$0,07

$0,16

Global

Dalam mode penyebaran global, titik akhir dan penyimpanan data berada di wilayah AS (Virginia). Sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia.

Model

Versi

Jendela konteks

Input maks

Output maks

Harga input

Harga output

(token)

(per 1 juta token)

qwen-vl-ocr

Mencocokkan kemampuan qwen-vl-ocr-2025-11-20.

Stable

34.096

30.000

Maks 30.000 per gambar.

4.096

$0,07

$0,16

qwen-vl-ocr-2025-11-20

Dikenal juga sebagai qwen-vl-ocr-1120.
Berdasarkan arsitektur Qwen3-VL, model ini secara signifikan meningkatkan kemampuan penguraian dokumen dan lokalisasi teks.

Snapshot

38.192

8.192

Tiongkok Daratan

Di Tiongkok Daratan, dalam mode penyebaran, titik akhir dan penyimpanan data berlokasi di Wilayah Beijing. Sumber daya komputasi untuk Inferensi model terbatas pada Tiongkok Daratan.

Model

Versi

Jendela konteks

Input maks

Output maks

Harga input

Harga output

Kuota gratis

(Catatan)

(token)

(per 1 juta token)

qwen-vl-ocr

Mencocokkan kemampuan qwen-vl-ocr-2025-08-28.
Panggilan batch tersedia dengan harga separuhnya.

Stable

34.096

30.000

Maks per gambar: 30.000

4.096

$0,717

$0,717

Tidak ada kuota gratis

qwen-vl-ocr-latest

Selalu mencocokkan kemampuan versi terbaru.

Latest

38.192

8.192

$0,043

$0,072

qwen-vl-ocr-2025-11-20

Dikenal juga sebagai qwen-vl-ocr-1120.
Berdasarkan arsitektur Qwen3-VL, model ini secara signifikan meningkatkan kemampuan penguraian dokumen dan lokalisasi teks.

Snapshot

qwen-vl-ocr-2025-08-28

Dikenal juga sebagai qwen-vl-ocr-0828.

34.096

4.096

$0,717

$0,717

qwen-vl-ocr-2025-04-13

Dikenal juga sebagai qwen-vl-ocr-0413.

qwen-vl-ocr-2024-10-28

Dikenal juga sebagai qwen-vl-ocr-1028.
qwen-vl-ocr, qwen-vl-ocr-2025-04-13, dan qwen-vl-ocr-2025-08-28, parameter max_tokens (panjang output maksimum) secara default bernilai 4096. Untuk menaikkan nilai ini ke rentang 4097 hingga 8192, kirim email ke modelstudio@service.aliyun.com dan sertakan informasi berikut: ID akun Alibaba Cloud Anda, jenis gambar (misalnya gambar dokumen, gambar e-commerce, atau kontrak), nama model, perkiraan Queries Per Second (QPS) dan total permintaan harian, serta persentase permintaan di mana panjang output model melebihi 4096.

Kode contoh untuk memperkirakan token gambar secara manual (hanya sebagai referensi anggaran)

Rumus: Token gambar = (h_bar * w_bar) / token_pixels + 2.

  • h_bar * w_bar merepresentasikan dimensi gambar yang diskalakan. Model melakukan pra-pemrosesan gambar dengan menskalakannya ke batas piksel tertentu. Batas ini bergantung pada nilai parameter max_pixels.

  • token_pixels merepresentasikan nilai piksel per Token.

    • Untuk qwen-vl-ocr, qwen-vl-ocr-2025-11-20, dan qwen-vl-ocr-latest, nilai ini tetap pada 32×32 (yaitu 1024).

    • Untuk model lain, nilai ini tetap pada 28×28 (yaitu 784).

Kode berikut menunjukkan logika penskalaan gambar perkiraan yang digunakan model. Anda dapat menggunakan kode ini untuk memperkirakan jumlah token gambar. Penagihan sebenarnya berdasarkan respons API.

import math
from PIL import Image

def smart_resize(image_path, min_pixels, max_pixels):
    """
    Pra-pemrosesan gambar.

    Parameter:
        image_path: Jalur ke gambar.
    """
    # Buka file gambar PNG yang ditentukan.
    image = Image.open(image_path)

    # Dapatkan dimensi asli gambar.
    height = image.height
    width = image.width
    # Sesuaikan tinggi agar menjadi kelipatan 28 atau 32.
    h_bar = round(height / 32) * 32
    # Sesuaikan lebar agar menjadi kelipatan 28 atau 32.
    w_bar = round(width / 32) * 32

    # Skalakan gambar untuk menyesuaikan total piksel agar berada dalam rentang [min_pixels, max_pixels].
    if h_bar * w_bar > max_pixels:
        beta = math.sqrt((height * width) / max_pixels)
        h_bar = math.floor(height / beta / 32) * 32
        w_bar = math.floor(width / beta / 32) * 32
    elif h_bar * w_bar < min_pixels:
        beta = math.sqrt(min_pixels / (height * width))
        h_bar = math.ceil(height * beta / 32) * 32
        w_bar = math.ceil(width * beta / 32) * 32
    return h_bar, w_bar


# Ganti xxx/test.png dengan jalur ke gambar lokal Anda.
h_bar, w_bar = smart_resize("xxx/test.png", min_pixels=32 * 32 * 3, max_pixels=8192 * 32 * 32)
print(f"Dimensi gambar yang diskalakan adalah: tinggi {h_bar}, lebar {w_bar}")

# Hitung jumlah token gambar: total piksel dibagi 32 * 32.
token = int((h_bar * w_bar) / (32 * 32))

# <|vision_bos|> dan <|vision_eos|> adalah penanda visual. Masing-masing dihitung sebagai 1 token.
print(f"Jumlah total token gambar: {token + 2}")

Persiapan

  • Anda telah membuat API key dan menyetel API key sebagai variabel lingkungan.

  • Jika Anda memanggil model menggunakan SDK OpenAI atau SDK DashScope, Anda harus menginstal versi terbaru SDK. Versi minimum untuk SDK Python DashScope adalah 1.22.2, dan versi minimum untuk SDK Java adalah 2.21.8.

    • SDK DashScope

      • Keunggulan: Mendukung semua fitur lanjutan, seperti koreksi rotasi gambar dan tugas OCR bawaan. Menyediakan rangkaian fitur lengkap dan metode pemanggilan sederhana.

      • Skenario: Proyek yang membutuhkan fungsionalitas lengkap.

    • SDK kompatibel OpenAI

      • Keunggulan: Mempermudah migrasi bagi pengguna yang sudah menggunakan SDK OpenAI atau alat ekosistemnya.

      • Keterbatasan: Tidak mendukung pemanggilan fitur lanjutan, seperti koreksi rotasi gambar dan tugas OCR bawaan, secara langsung dengan parameter. Anda harus mensimulasikan fitur-fitur ini secara manual dengan membuat prompt kompleks lalu mengurai outputnya.

      • Skenario: Proyek yang sudah memiliki integrasi OpenAI dan tidak bergantung pada fitur eksklusif DashScope.

Memulai

Contoh berikut mengekstraksi informasi utama dari gambar tiket kereta (URL) dan mengembalikan informasi dalam format JSON. Untuk informasi lebih lanjut, lihat cara meneruskan file lokal dan batasan gambar.

Kompatibel OpenAI

Python

from openai import OpenAI
import os

PROMPT_TICKET_EXTRACTION = """
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
"""

try:
    client = OpenAI(
        # Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
        # Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen-vl-ocr-2025-11-20",
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
                        # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
                        "min_pixels": 32 * 32 * 3,
                        # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
                        "max_pixels": 32 * 32 * 8192
                    },
                    # Model mendukung penerusan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.    
                    {"type": "text",
                     "text": PROMPT_TICKET_EXTRACTION}
                ]
            }
        ])
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"Pesan error: {e}")

Node.js

import OpenAI from 'openai';

const PROMPT_TICKET_EXTRACTION = `
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
`;

const openai = new OpenAI({
  // Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
 // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti baseURL dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
 // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
  baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
});

async function main() {
  const response = await openai.chat.completions.create({
    model: 'qwen-vl-ocr-2025-11-20',
    messages: [
      {
        role: 'user',
        content: [
          // Model mendukung penerusan prompt di bidang teks berikut. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
          { type: 'text', text: PROMPT_TICKET_EXTRACTION},
          {
            type: 'image_url',
            image_url: {
              url: 'https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg',
            },
              //  Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
              min_pixels: 32 * 32 * 3,
             // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
             max_pixels: 32 * 32 * 8192
          }
        ]
      }
    ],
  });
  console.log(response.choices[0].message.content)
}

main();

curl

# ======= Penting =======
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti URL dasar dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dasar dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum menjalankan ===

curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "model": "qwen-vl-ocr-2025-11-20",
  "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
                    "min_pixels": 3072,
                    "max_pixels": 8388608
                },
                {"type": "text", "text": "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"}
            ]
        }
    ]
}'

Contoh respons

{
  "choices": [{
    "message": {
      "content": "```json\n{\n    \"Nomor Faktur\": \"24329116804000\",\n    \"Nomor Kereta\": \"G1948\",\n    \"Stasiun Keberangkatan\": \"Stasiun Selatan Nanjing\",\n    \"Stasiun Tujuan\": \"Stasiun Timur Zhengzhou\",\n    \"Tanggal dan Waktu Keberangkatan\": \"2024-11-14 11:46\",\n    \"Nomor Kursi\": \"Gerbong 04, Kursi 12A\",\n    \"Jenis Kursi\": \"Kelas Kedua\",\n    \"Harga Tiket\": \"¥337,50\",\n    \"Nomor KTP\": \"4107281991****5515\",\n    \"Nama Penumpang\": \"Du Xiaoguang\"\n}\n```",
      "role": "assistant"
    },
    "finish_reason": "stop",
    "index": 0,
    "logprobs": null
  }],
  "object": "chat.completion",
  "usage": {
    "prompt_tokens": 606,
    "completion_tokens": 159,
    "total_tokens": 765
  },
  "created": 1742528311,
  "system_fingerprint": null,
  "model": "qwen-vl-ocr-latest",
  "id": "chatcmpl-20e5d9ed-e8a3-947d-bebb-c47ef1378598"
}

DashScope

Python

import os
import dashscope

PROMPT_TICKET_EXTRACTION = """
Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta.
Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?).
Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}
"""

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
            "role": "user",
            "content": [{
                "image": "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
                "min_pixels": 32 * 32 * 3,
                 # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False
                },
                 # Saat tidak ada tugas bawaan yang ditetapkan, Anda dapat meneruskan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
                {"type": "text", "text": PROMPT_TICKET_EXTRACTION}]
        }]
try:
    response = dashscope.MultiModalConversation.call(
        # Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
        api_key=os.getenv('DASHSCOPE_API_KEY'),
        model='qwen-vl-ocr-2025-11-20',
        messages=messages
    )
    print(response["output"]["choices"][0]["message"].content[0]["text"])
except Exception as e:
    print(f"Terjadi kesalahan: {e}")

Java

import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
            // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
            // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
            Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
        }
        
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel di bawah max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel melebihi min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map,
                        // Saat tidak ada tugas bawaan yang ditetapkan, Anda dapat meneruskan prompt di bidang teks. Jika tidak ada prompt yang diteruskan, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
                        Collections.singletonMap("text", "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"))).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

# ======= Penting =======
# Kunci API bersifat spesifik wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti URL dasar dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dasar dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
  --header "Authorization: Bearer $DASHSCOPE_API_KEY"\
  --header 'Content-Type: application/json'\
  --data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
  "messages": [
    {
      "role": "user",
      "content": [{
          "image": "https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg",
          "min_pixels": 3072,
          "max_pixels": 8388608,
          "enable_rotate": false
        },
        {
          "text": "Silakan ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan informasi atau membuat informasi palsu. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'Nomor Faktur': 'xxx', 'Nomor Kereta': 'xxx', 'Stasiun Keberangkatan': 'xxx', 'Stasiun Tujuan': 'xxx', 'Tanggal dan Waktu Keberangkatan': 'xxx', 'Nomor Kursi': 'xxx', 'Jenis Kursi': 'xxx', 'Harga Tiket': 'xxx', 'Nomor KTP': 'xxx', 'Nama Penumpang': 'xxx'}"
        }
      ]
    }
  ]
}
}'

Contoh respons

{
  "output": {
    "choices": [{
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": [{
          "text": "```json\n{\n    \"Nomor Faktur\": \"24329116804000\",\n    \"Nomor Kereta\": \"G1948\",\n    \"Stasiun Keberangkatan\": \"Stasiun Selatan Nanjing\",\n    \"Stasiun Tujuan\": \"Stasiun Timur Zhengzhou\",\n    \"Tanggal dan Waktu Keberangkatan\": \"2024-11-14 11:46\",\n    \"Nomor Kursi\": \"Gerbong 04, Kursi 12A\",\n    \"Jenis Kursi\": \"Kelas Kedua\",\n    \"Harga Tiket\": \"¥337,50\",\n    \"Nomor KTP\": \"4107281991****5515\",\n    \"Nama Penumpang\": \"Du Xiaoguang\"\n}\n```"
        }]
      }
    }]
  },
  "usage": {
    "total_tokens": 765,
    "output_tokens": 159,
    "input_tokens": 606,
    "image_tokens": 427
  },
  "request_id": "b3ca3bbb-2bdd-9367-90bd-f3f39e480db0"
}

Panggil tugas bawaan

Untuk menyederhanakan pemanggilan dalam skenario tertentu, model (kecuali qwen-vl-ocr-2024-10-28) mencakup beberapa tugas bawaan.

Cara menggunakan:

  • SDK DashScope: Anda tidak perlu merancang dan meneruskan Prompt. Model menggunakan Prompt tetap secara internal. Atur parameter ocr_options untuk memanggil tugas bawaan.

  • SDK kompatibel OpenAI: Anda harus memasukkan secara manual Prompt yang ditentukan untuk tugas tersebut.

Tabel berikut mencantumkan nilai task, Prompt yang ditentukan, format output, dan contoh untuk setiap tugas bawaan:

Pengenalan presisi tinggi

Kami merekomendasikan versi model yang lebih baru dari qwen-vl-ocr-2025-08-28 atau versi terbaru untuk memanggil tugas pengenalan presisi tinggi. Tugas ini memiliki fitur berikut:

  • Mengenali dan mengekstraksi konten teks.

  • Mendeteksi posisi teks dengan melokalisasi baris teks dan mengeluarkan koordinatnya.

Untuk informasi lebih lanjut tentang cara menggambar kotak pembatas pada gambar asli setelah Anda mendapatkan koordinat kotak pembatas teks, lihat FAQ.

Nilai task

Prompt yang ditentukan

Format output dan contoh

advanced_recognition

Lokalisasi semua baris teks dan kembalikan koordinat persegi panjang yang diputar ([cx, cy, width, height, angle]).

  • Format: Teks biasa atau objek JSON yang dapat langsung diambil dari bidang ocr_result.

  • Contoh:

    image

    • text: Konten teks setiap baris.

    • location:

      • Nilai contoh: [x1, y1, x2, y2, x3, y3, x4, y4]

      • Makna: Koordinat absolut empat titik sudut kotak teks. Titik asal gambar asli berada di pojok kiri atas (0,0). Urutan titik sudut tetap: kiri atas → kanan atas → kanan bawah → kiri bawah.

    • rotate_rect:

      • Nilai contoh: [center_x, center_y, width, height, angle]

      • Makna: Representasi lain dari kotak teks, di mana center_x dan center_y adalah koordinat pusat kotak teks, width adalah lebar, height adalah tinggi, dan angle adalah sudut rotasi kotak teks relatif terhadap arah horizontal. Nilainya berada dalam rentang [-90, 90].

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False}]
            }]
            
response = dashscope.MultiModalConversation.call(
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke pengenalan presisi tinggi.
    ocr_options={"task": "advanced_recognition"}
)
# Tugas pengenalan presisi tinggi mengembalikan hasil sebagai teks biasa.
print(response["output"]["choices"][0]["message"].content[0]["text"])
// versi SDK dashscope >= 2.21.8
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.ADVANCED_RECOGNITION)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
  "model": "qwen-vl-ocr-2025-11-20",
  "input": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
            "min_pixels": 3072,
            "max_pixels": 8388608,
            "enable_rotate": false
          }
        ]
      }
    ]
  },
  "parameters": {
    "ocr_options": {
      "task": "advanced_recognition"
    }
  }
}
'

Contoh respons

{
  "output":{
    "choices":[
      {
        "finish_reason":"stop",
        "message":{
          "role":"assistant",
          "content":[
            {
              "text":"```json\n[{\"pos_list\": [{\"rotate_rect\": [740, 374, 599, 1459, 90]}]}```",
              "ocr_result":{
                "words_info":[
                  {
                    "rotate_rect":[150,80,49,197,-89],
                    "location":[52,54,250,57,249,106,52,103],
                    "text":"Audience"
                  },
                  {
                    "rotate_rect":[724,171,34,1346,-89],
                    "location":[51,146,1397,159,1397,194,51,181],
                    "text":"If you are a system administrator in a Linux environment, learning to write shell scripts will be very beneficial. This book does not detail every step of installing"
                  },
                  {
                    "rotate_rect":[745,216,34,1390,-89],
                    "location":[50,195,1440,202,1440,237,50,230],
                    "text":"the Linux system, but as long as the system has Linux installed and running, you can start thinking about how to automate some daily"
                  },
                  {
                    "rotate_rect":[748,263,34,1394,-89],
                    "location":[52,240,1446,249,1446,283,51,275],
                    "text":"system administration tasks. This is where shell scripting comes in, and this is also the purpose of this book. This book will"
                  },
                  {
                    "rotate_rect":[749,308,34,1395,-89],
                    "location":[51,285,1446,296,1446,331,51,319],
                    "text":"demonstrate how to use shell scripts to automate system administration tasks, from monitoring system statistics and data files to for your boss"
                  },
                  {
                    "rotate_rect":[123,354,33,146,-89],
                    "location":[50,337,197,338,197,372,50,370],
                    "text":"generating reports."
                  },
                  {
                    "rotate_rect":[751,432,34,1402,-89],
                    "location":[51,407,1453,420,1453,454,51,441],
                    "text":"If you are a home Linux enthusiast, you can also benefit from this book. Nowadays, users can easily get lost in a graphical environment built from many stacked components."
                  },
                  {
                    "rotate_rect":[755,477,31,1404,-89],
                    "location":[54,458,1458,463,1458,495,54,490],
                    "text":"Most desktop Linux distributions try to hide the internal details of the system from general users. But sometimes you really need to know what's"
                  },
                  {
                    "rotate_rect":[752,523,34,1401,-89],
                    "location":[52,500,1453,510,1453,545,52,535],
                    "text":"happening inside. This book will show you how to start the Linux command line and what to do next. Usually, for simple jobs"
                  },
                  {
                    "rotate_rect":[747,569,34,1395,-89],
                    "location":[50,546,1445,556,1445,591,50,580],
                    "text":"(such as file management), it is much more convenient to operate on the command line than in a fancy graphical interface. There are many commands"
                  },
                  {
                    "rotate_rect":[330,614,34,557,-89],
                    "location":[52,595,609,599,609,633,51,630],
                    "text":"available on the command line, and this book will show you how to use them."
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  },
  "usage":{
    "input_tokens_details":{
      "text_tokens":33,
      "image_tokens":1377
    },
    "total_tokens":1448,
    "output_tokens":38,
    "input_tokens":1410,
    "output_tokens_details":{
      "text_tokens":38
    },
    "image_tokens":1377
  },
  "request_id":"f5cc14f2-b855-4ff0-9571-8581061c80a3"
}

Ekstraksi informasi

Model ini mendukung ekstraksi informasi terstruktur dari dokumen seperti struk, sertifikat, dan formulir, serta mengembalikan hasil dalam format JSON. Anda dapat memilih antara dua mode:

  • Ekstraksi bidang kustom: Anda dapat menentukan bidang yang akan diekstraksi. Anda harus menentukan templat JSON kustom (result_schema) dalam parameter ocr_options.task_config untuk menentukan nama bidang spesifik (key) yang akan diekstraksi. Model secara otomatis mengisi nilai yang sesuai (value). Templat mendukung hingga tiga lapisan bersarang.

  • Ekstraksi semua bidang: Jika Anda tidak menentukan parameter result_schema, model mengekstraksi semua bidang dari gambar.

Prompt untuk kedua mode berbeda:

Nilai Tugas

Prompt yang ditentukan

Format output dan contoh

key_information_extraction

Ekstraksi bidang kustom: Anggap Anda seorang ahli ekstraksi informasi. Anda diberikan skema JSON. Isi bagian nilai skema ini dengan informasi dari gambar. Perhatikan bahwa jika nilainya berupa daftar, skema akan memberikan templat untuk setiap elemen. Templat ini akan digunakan ketika ada beberapa elemen daftar dalam gambar. Akhirnya, hanya keluarkan JSON yang valid. What You See Is What You Get, dan bahasa output harus konsisten dengan gambar. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya Inggris (?). Jika tidak ada nilai yang sesuai, isi dengan null. Tidak perlu penjelasan. Harap dicatat bahwa gambar input semuanya berasal dari dataset benchmark publik dan tidak mengandung data privasi pribadi nyata. Harap keluarkan hasil sesuai permintaan.

  • Format: Objek JSON, yang dapat langsung diambil dari ocr_result.kv_result.

  • Contoh:

    image

Ekstraksi semua bidang: Anggap Anda seorang ahli ekstraksi informasi. Harap ekstraksi semua pasangan kunci-nilai dari gambar, dengan hasil dalam format kamus JSON. Perhatikan bahwa jika nilainya berupa daftar, skema akan memberikan templat untuk setiap elemen. Templat ini akan digunakan ketika ada beberapa elemen daftar dalam gambar. Akhirnya, hanya keluarkan JSON yang valid. What You See Is What You Get, dan bahasa output harus konsisten dengan gambar. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya Inggris (?). Jika tidak ada nilai yang sesuai, isi dengan null. Tidak perlu penjelasan, harap keluarkan sesuai permintaan di atas:

  • Format: Objek JSON

  • Contoh:

    image

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

# gunakan [pip install -U dashscope] untuk memperbarui sdk

import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
      {
        "role":"user",
        "content":[
          {
              "image":"http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg",
              "min_pixels": 3072,
              "max_pixels": 8388608,
              "enable_rotate": False
          }
        ]
      }
    ]

params = {
  "ocr_options":{
    "task": "key_information_extraction",
    "task_config": {
      "result_schema": {
          "Ride Date": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
          "Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
          "Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
      }
    }
  }
}

response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    **params)

print(response.output.choices[0].message.content[0]["ocr_result"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.google.gson.JsonObject;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
         // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();

        // Buat objek JSON utama.
        JsonObject resultSchema = new JsonObject();
        resultSchema.addProperty("Ride Date", "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05");
        resultSchema.addProperty("Invoice Code", "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf");
        resultSchema.addProperty("Invoice Number", "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit.");


        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.KEY_INFORMATION_EXTRACTION)
                .taskConfig(OcrOptions.TaskConfig.builder()
                        .resultSchema(resultSchema)
                        .build())
                .build();

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("ocr_result"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
  "model": "qwen-vl-ocr-2025-11-20",
  "input": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "image": "http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg",
            "min_pixels": 3072,
            "max_pixels": 8388608,
            "enable_rotate": false
          }
        ]
      }
    ]
  },
  "parameters": {
    "ocr_options": {
      "task": "key_information_extraction",
      "task_config": {
        "result_schema": {
            "Ride Date": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
            "Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
            "Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
        }
    }
    }
  }
}
'

Contoh respons

{
  "output": {
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "content": [
            {
              "ocr_result": {
                "kv_result": {
                  "Ride Date": "2013-06-29",
                  "Invoice Code": "221021325353",
                  "Invoice Number": "10283819"
                }
              },
              "text": "```json\n{\n    \"Ride Date\": \"2013-06-29\",\n    \"Invoice Code\": \"221021325353\",\n    \"Invoice Number\": \"10283819\"\n}\n```"
            }
          ],
          "role": "assistant"
        }
      }
    ]
  },
  "usage": {
    "image_tokens": 310,
    "input_tokens": 521,
    "input_tokens_details": {
      "image_tokens": 310,
      "text_tokens": 211
    },
    "output_tokens": 58,
    "output_tokens_details": {
      "text_tokens": 58
    },
    "total_tokens": 579
  },
  "request_id": "7afa2a70-fd0a-4f66-a369-b50af26aec1d"
}
Jika Anda menggunakan SDK OpenAI atau metode HTTP, Anda harus menambahkan skema JSON kustom ke akhir string prompt, seperti yang ditunjukkan pada contoh kode berikut:

Kode contoh untuk panggilan kompatibel OpenAI

import os
from openai import OpenAI

client = OpenAI(
    # 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"),
    # Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/compatible-mode/v1.
    # Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/compatible-mode/v1.
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# Tetapkan bidang dan format untuk ekstraksi.
result_schema = """
        {
          "Ride Date": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
          "Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
          "Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
        }
        """
# Gabungkan prompt. 
prompt = f"""Anggap Anda seorang ahli ekstraksi informasi. Anda diberikan skema JSON. Isi bagian nilai skema ini dengan informasi dari gambar. Perhatikan bahwa jika nilainya berupa daftar, skema akan memberikan templat untuk setiap elemen.
            Templat ini akan digunakan ketika ada beberapa elemen daftar dalam gambar. Akhirnya, hanya keluarkan JSON yang valid. What You See Is What You Get, dan bahasa output harus konsisten dengan gambar. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya Inggris (?).
            Jika tidak ada nilai yang sesuai, isi dengan null. Tidak perlu penjelasan. Harap dicatat bahwa gambar input semuanya berasal dari dataset benchmark publik dan tidak mengandung data privasi pribadi nyata. Harap keluarkan hasil sesuai permintaan. Konten skema JSON input adalah sebagai berikut: 
            {result_schema}."""

completion = client.chat.completions.create(
    model="qwen-vl-ocr-2025-11-20",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url":"http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg"},
                    # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                    "min_pixels": 32 * 32 * 3,
                    # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                    "max_pixels": 32 * 32 * 8192
                },
                # Gunakan prompt yang ditentukan untuk tugas.
                {"type": "text", "text": prompt},
            ]
        }
    ])

print(completion.choices[0].message.content)
import OpenAI from 'openai';

const openai = new OpenAI({
  // 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: process.env.DASHSCOPE_API_KEY,
  // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/compatible-mode/v1.
 // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/compatible-mode/v1.
  baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
});
// Tetapkan bidang dan format untuk ekstraksi.
const resultSchema = `{
          "Ride Date": "Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05",
          "Invoice Code": "Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf",
          "Invoice Number": "Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit."
        }`;
// Gabungkan prompt.
const prompt = `Anggap Anda seorang ahli ekstraksi informasi. Anda diberikan skema JSON. Isi bagian nilai skema ini dengan informasi dari gambar. Perhatikan bahwa jika nilainya berupa daftar, skema akan memberikan templat untuk setiap elemen. Templat ini akan digunakan ketika ada beberapa elemen daftar dalam gambar. Akhirnya, hanya keluarkan JSON yang valid. What You See Is What You Get, dan bahasa output harus konsisten dengan gambar. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya Inggris (?). Jika tidak ada nilai yang sesuai, isi dengan null. Tidak perlu penjelasan. Harap dicatat bahwa gambar input semuanya berasal dari dataset benchmark publik dan tidak mengandung data privasi pribadi nyata. Harap keluarkan hasil sesuai permintaan. Konten skema JSON input adalah sebagai berikut: ${resultSchema}`;

async function main() {
  const response = await openai.chat.completions.create({
    model: 'qwen-vl-ocr-2025-11-20',
    messages: [
      {
        role: 'user',
        content: [
           // Anda dapat menyesuaikan prompt. Jika tidak diatur, prompt default digunakan.
          { type: 'text', text: prompt},
          {
            type: 'image_url',
            image_url: {
              url: 'http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg',
            },
              //  Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
              "min_pixels": 32 * 32 * 3,
              // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
              "max_pixels": 32 * 32 * 8192
          }
        ]
      }
    ]
  });
  console.log(response.choices[0].message.content);
}

main();
# ======= 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), ubah base_url menjadi https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi 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":"http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/demo_ocr/receipt_zh_demo.jpg"},
                    "min_pixels": 3072,
                    "max_pixels": 8388608
                },
                {"type": "text", "text": "Anggap Anda seorang ahli ekstraksi informasi. Anda diberikan skema JSON. Isi bagian nilai skema ini dengan informasi dari gambar. Perhatikan bahwa jika nilainya berupa daftar, skema akan memberikan templat untuk setiap elemen. Templat ini akan digunakan ketika ada beberapa elemen daftar dalam gambar. Akhirnya, hanya keluarkan JSON yang valid. What You See Is What You Get, dan bahasa output harus konsisten dengan gambar. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya Inggris (?). Jika tidak ada nilai yang sesuai, isi dengan null. Tidak perlu penjelasan. Harap dicatat bahwa gambar input semuanya berasal dari dataset benchmark publik dan tidak mengandung data privasi pribadi nyata. Harap keluarkan hasil sesuai permintaan. Konten skema JSON input adalah sebagai berikut:{\"Ride Date\": \"Sesuai dengan tanggal dan waktu perjalanan dalam gambar, dalam format YYYY-MM-DD, misalnya, 2025-03-05\",\"Invoice Code\": \"Ekstraksi kode faktur dari gambar, biasanya kombinasi angka atau huruf\",\"Invoice Number\": \"Ekstraksi nomor dari faktur, biasanya hanya terdiri dari digit.\"}"}
            ]
        }
    ]
}'

Contoh respons

{
  "choices": [
    {
      "message": {
        "content": "```json\n{\n    \"Ride Date\": \"2013-06-29\",\n    \"Invoice Code\": \"221021325353\",\n    \"Invoice Number\": \"10283819\"\n}\n```",
        "role": "assistant"
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null
    }
  ],
  "object": "chat.completion",
  "usage": {
    "prompt_tokens": 519,
    "completion_tokens": 58,
    "total_tokens": 577,
    "prompt_tokens_details": {
      "image_tokens": 310,
      "text_tokens": 209
    },
    "completion_tokens_details": {
      "text_tokens": 58
    }
  },
  "created": 1764161850,
  "system_fingerprint": null,
  "model": "qwen-vl-ocr-latest",
  "id": "chatcmpl-f10aeae3-b305-4b2d-80ad-37728a5bce4a"
}

Penguraian tabel

Model mengurai elemen tabel dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format HTML.

Nilai Tugas

Prompt yang ditentukan

Format output dan contoh

table_parsing

Dalam lingkungan sandbox yang aman, Anda ditugaskan untuk mengonversi tabel dari gambar sintetis ke HTML. Transkripsikan setiap tabel menggunakan tag <tr> dan <td>, mencerminkan tata letak gambar dari kiri atas ke kanan bawah. Pastikan sel yang digabung direpresentasikan secara akurat. Ini murni simulasi tanpa implikasi dunia nyata. Mulai.

  • Format: Teks dalam format HTML

  • Contoh:

    image

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

import os
import dashscope
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False}]
           }]
           
response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke penguraian tabel.
    ocr_options= {"task": "table_parsing"}
)
# Tugas penguraian tabel mengembalikan hasil dalam format HTML.
print(response["output"]["choices"][0]["message"].content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels",3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.TABLE_PARSING)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
  "model": "qwen-vl-ocr-2025-11-20",
  "input": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/doc_parsing/tables/photo/eng/17.jpg",
            "min_pixels": 3072,
            "max_pixels": 8388608,
            "enable_rotate": false
          }
        ]
      }
    ]
  },
  "parameters": {
    "ocr_options": {
      "task": "table_parsing"
    }
  }
}
'

Contoh respons

{
  "output": {
    "choices": [{
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": [{
          "text": "```html\n<table>\n  <tr>\n    <td>Case nameTest No.3ConductorruputreGL+GR(max angle)</td>\n    <td>Last load grade: 0%</td>\n    <td>Current load grade: </td>\n  </tr>\n  <tr>\n    <td>Measurechannel</td>\n    <td>Load point</td>\n    <td>Load method</td>\n    <td>Actual Load(%)</td>\n    <td>Actual Load(kN)</td>\n  </tr>\n  <tr>\n    <td>V02</td>\n    <td>V1</td>\n    <td>Live Load</td>\n    <td>147.95</td>\n    <td>0.815</td>\n  </tr>\n  <tr>\n    <td>V03</td>\n    <td>V2</td>\n    <td>Live Load</td>\n    <td>111.75</td>\n    <td>0.615</td>\n  </tr>\n  <tr>\n    <td>V04</td>\n    <td>V3</td>\n    <td>Live Load</td>\n    <td>9.74</td>\n    <td>1.007</td>\n  </tr>\n  <tr>\n    <td>V05</td>\n    <td>V4</td>\n    <td>Live Load</td>\n    <td>7.88</td>\n    <td>0.814</td>\n  </tr>\n  <tr>\n    <td>V06</td>\n    <td>V5</td>\n    <td>Live Load</td>\n    <td>8.11</td>\n    <td>0.780</td>\n  </tr>\n  <tr>\n    <td>V07</td>\n    <td>V6</td>\n    <td>Live Load</td>\n    <td>8.54</td>\n    <td>0.815</td>\n  </tr>\n  <tr>\n    <td>V08</td>\n    <td>V7</td>\n    <td>Live Load</td>\n    <td>6.77</td>\n    <td>0.700</td>\n  </tr>\n  <tr>\n    <td>V09</td>\n    <td>V8</td>\n    <td>Live Load</td>\n    <td>8.59</td>\n    <td>0.888</td>\n  </tr>\n  <tr>\n    <td>L01</td>\n    <td>L1</td>\n    <td>Live Load</td>\n    <td>13.33</td>\n    <td>3.089</td>\n  </tr>\n  <tr>\n    <td>L02</td>\n    <td>L2</td>\n    <td>Live Load</td>\n    <td>9.69</td>\n    <td>2.247</td>\n  </tr>\n  <tr>\n    <td>L03</td>\n    <td>L3</td>\n    <td></td>\n    <td>2.96</td>\n    <td>1.480</td>\n  </tr>\n  <tr>\n    <td>L04</td>\n    <td>L4</td>\n    <td></td>\n    <td>3.40</td>\n    <td>1.700</td>\n  </tr>\n  <tr>\n    <td>L05</td>\n    <td>L5</td>\n    <td></td>\n    <td>2.45</td>\n    <td>1.224</td>\n  </tr>\n  <tr>\n    <td>L06</td>\n    <td>L6</td>\n    <td></td>\n    <td>2.01</td>\n    <td>1.006</td>\n  </tr>\n  <tr>\n    <td>L07</td>\n    <td>L7</td>\n    <td></td>\n    <td>2.38</td>\n    <td>1.192</td>\n  </tr>\n  <tr>\n    <td>L08</td>\n    <td>L8</td>\n    <td></td>\n    <td>2.10</td>\n    <td>1.050</td>\n  </tr>\n  <tr>\n    <td>T01</td>\n    <td>T1</td>\n    <td>Live Load</td>\n    <td>25.29</td>\n    <td>3.073</td>\n  </tr>\n  <tr>\n    <td>T02</td>\n    <td>T2</td>\n    <td>Live Load</td>\n    <td>27.39</td>\n    <td>3.327</td>\n  </tr>\n  <tr>\n    <td>T03</td>\n    <td>T3</td>\n    <td>Live Load</td>\n    <td>8.03</td>\n    <td>2.543</td>\n  </tr>\n  <tr>\n    <td>T04</td>\n    <td>T4</td>\n    <td>Live Load</td>\n    <td>11.19</td>\n    <td>3.542</td>\n  </tr>\n  <tr>\n    <td>T05</td>\n    <td>T5</td>\n    <td>Live Load</td>\n    <td>11.34</td>\n    <td>3.592</td>\n  </tr>\n  <tr>\n    <td>T06</td>\n    <td>T6</td>\n    <td>Live Load</td>\n    <td>16.47</td>\n    <td>5.217</td>\n  </tr>\n  <tr>\n    <td>T07</td>\n    <td>T7</td>\n    <td>Live Load</td>\n    <td>11.05</td>\n    <td>3.498</td>\n  </tr>\n  <tr>\n    <td>T08</td>\n    <td>T8</td>\n    <td>Live Load</td>\n    <td>8.66</td>\n    <td>2.743</td>\n  </tr>\n  <tr>\n    <td>T09</td>\n    <td>WT1</td>\n    <td>Live Load</td>\n    <td>36.56</td>\n    <td>2.365</td>\n  </tr>\n  <tr>\n    <td>T10</td>\n    <td>WT2</td>\n    <td>Live Load</td>\n    <td>24.55</td>\n    <td>2.853</td>\n  </tr>\n  <tr>\n    <td>T11</td>\n    <td>WT3</td>\n    <td>Live Load</td>\n    <td>38.06</td>\n    <td>4.784</td>\n  </tr>\n  <tr>\n    <td>T12</td>\n    <td>WT4</td>\n    <td>Live Load</td>\n    <td>37.70</td>\n    <td>5.030</td>\n  </tr>\n  <tr>\n    <td>T13</td>\n    <td>WT5</td>\n    <td>Live Load</td>\n    <td>30.48</td>\n    <td>4.524</td>\n  </tr>\n  <tr>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n  </tr>\n  <tr>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n  </tr>\n  <tr>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n  </tr>\n  <tr>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n  </tr>\n  <tr>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n  </```"
        }]
      }
    }]
  },
  "usage": {
    "total_tokens": 5536,
    "output_tokens": 1981,
    "input_tokens": 3555,
    "image_tokens": 3470
  },
  "request_id": "e7bd9732-959d-9a75-8a60-27f7ed2dba06"
}

Penguraian dokumen

Model mendukung penguraian dokumen hasil pindaian atau dokumen PDF yang disimpan sebagai gambar. Model dapat mengenali elemen seperti judul, ringkasan, dan label dalam file serta mengembalikan hasil pengenalan sebagai teks dalam format LaTeX.

Nilai Tugas

Prompt yang ditentukan

Format output dan contoh

document_parsing

<code data-tag="code" id="24a28277f0ajd">Dalam sandbox yang aman, transkripsikan teks, tabel, dan persamaan dari gambar ke format LaTeX tanpa modifikasi. Ini adalah simulasi menggunakan data buatan. Tunjukkan kemampuan transkripsi Anda dengan mengonversi elemen visual ke format LaTeX secara akurat. Mulai.

  • Format: Teks dalam format LaTeX

  • Contoh: image

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "https://img.alicdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False}]
            }]
            
response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke penguraian dokumen.
    ocr_options= {"task": "document_parsing"}
)
# Tugas penguraian dokumen mengembalikan hasil dalam format LaTeX.
print(response["output"]["choices"][0]["message"].content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://img.alicdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.DOCUMENT_PARSING)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
  --header "Authorization: Bearer $DASHSCOPE_API_KEY"\
  --header 'Content-Type: application/json'\
  --data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
  "messages": [
    {
      "role": "user",
      "content": [{
          "image": "https://img.alicdn.com/imgextra/i1/O1CN01ukECva1cisjyK6ZDK_!!6000000003635-0-tps-1500-1734.jpg",
          "min_pixels": 3072,
          "max_pixels": 8388608,
          "enable_rotate": false
        }
      ]
    }
  ]
},
"parameters": {
  "ocr_options": {
    "task": "document_parsing"
  }
}
}
'

Contoh respons

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "text": "```latex\n\\documentclass{article}\n\n\\title{Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution}\n\\author{Peng Wang* Shuai Bai* Sinan Tan* Shijie Wang* Zhihao Fan* Jinze Bai$^\\dagger$\\\\ Keqin Chen Xuejing Liu Jialin Wang Wenbin Ge Yang Fan Kai Dang Mengfei Du Xuancheng Ren Rui Men Dayiheng Liu Chang Zhou Jingren Zhou Junyang Lin$^\\dagger$\\\\ Qwen Team Alibaba Group}\n\\date{}\n\n\\begin{document}\n\n\\maketitle\n\n\\section{Abstract}\n\nWe present the Qwen2-VL Series, an advanced upgrade of the previous Qwen-VL models that redefines the conventional predetermined-resolution approach in visual processing. Qwen2-VL introduces the Naive Dynamic Resolution mechanism, which enables the model to dynamically process images of varying resolutions into different numbers of visual tokens. This approach allows the model to generate more efficient and accurate visual representations, closely aligning with human perceptual processes. The model also integrates Multimodal Rotary Position Embedding (M-RoPE), facilitating the effective fusion of positional information across text, images, and videos. We employ a unified paradigm for processing both images and videos, enhancing the model's visual perception capabilities. To explore the potential of large multimodal models, Qwen2-VL investigates the scaling laws for large vision-language models (LVLMs). By scaling both the model size-with versions at 2B, 8B, and 72B parameters-and the amount of training data, the Qwen2-VL Series achieves highly competitive performance. Notably, the Qwen2-VL-72B model achieves results comparable to leading models such as GPT-4o and Claude3.5-Sonnet across various multimodal benchmarks, outperforming other generalist models. Code is available at https://github.com/QwenLM/Qwen2-VL.\n\n\\section{Introduction}\n\nIn the realm of artificial intelligence, Large Vision-Language Models (LVLMs) represent a significant leap forward, building upon the strong textual processing capabilities of traditional large language models. These advanced models now encompass the ability to interpret and analyze a broader spectrum of data, including images, audio, and video. This expansion of capabilities has transformed LVLMs into indispensable tools for tackling a variety of real-world challenges. Recognized for their unique capacity to condense extensive and intricate knowledge into functional representations, LVLMs are paving the way for more comprehensive cognitive systems. By integrating diverse data forms, LVLMs aim to more closely mimic the nuanced ways in which humans perceive and interact with their environment. This allows these models to provide a more accurate representation of how we engage with and perceive our environment.\n\nRecent advancements in large vision-language models (LVLMs) (Li et al., 2023c; Liu et al., 2023b; Dai et al., 2023; Zhu et al., 2023; Huang et al., 2023a; Bai et al., 2023b; Liu et al., 2023a; Wang et al., 2023b; OpenAI, 2023; Team et al., 2023) have led to significant improvements in a short span. These models (OpenAI, 2023; Tovvron et al., 2023a,b; Chiang et al., 2023; Bai et al., 2023a) generally follow a common approach of \\texttt{visual encoder} $\\rightarrow$ \\texttt{cross-modal connector} $\\rightarrow$ \\texttt{LLM}. This setup, combined with next-token prediction as the primary training method and the availability of high-quality datasets (Liu et al., 2023a; Zhang et al., 2023; Chen et al., 2023b;\n\n```"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "total_tokens": 4261,
        "output_tokens": 845,
        "input_tokens": 3416,
        "image_tokens": 3350
    },
    "request_id": "7498b999-939e-9cf6-9dd3-9a7d2c6355e4"
}

Pengenalan rumus

Model mendukung penguraian rumus dalam gambar dan mengembalikan hasil pengenalan sebagai teks dalam format LaTeX.

Nilai task

Prompt yang ditentukan

Format output dan contoh

formula_recognition

Ekstraksi dan keluarkan representasi LaTeX dari rumus dalam gambar, tanpa teks atau deskripsi tambahan.

  • Format: Teks dalam format LaTeX

  • Contoh: image

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
    "role": "user",
    "content": [{
        "image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg",
        # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        "min_pixels": 32 * 32 * 3,
        # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        "max_pixels": 32 * 32 * 8192,
        # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        "enable_rotate": False
    }]
}]
            
response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke pengenalan rumus.
    ocr_options= {"task": "formula_recognition"}
)
# Tugas pengenalan rumus mengembalikan hasil dalam format LaTeX.
print(response["output"]["choices"][0]["message"].content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.FORMULA_RECOGNITION)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
  "model": "qwen-vl-ocr",
  "input": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "image": "http://duguang-llm.oss-cn-hangzhou.aliyuncs.com/llm_data_keeper/data/formula_handwriting/test/inline_5_4.jpg",
            "min_pixels": 3072,
            "max_pixels": 8388608,
            "enable_rotate": false
          }
        ]
      }
    ]
  },
  "parameters": {
    "ocr_options": {
      "task": "formula_recognition"
    }
  }
}
'

Contoh respons

{
  "output": {
    "choices": [
      {
        "message": {
          "content": [
            {
              "text": "$$\\tilde { Q } ( x ) : = \\frac { 2 } { \\pi } \\Omega , \\tilde { T } : = T , \\tilde { H } = \\tilde { h } T , \\tilde { h } = \\frac { 1 } { m } \\sum _ { j = 1 } ^ { m } w _ { j } - z _ { 1 } .$$"
            }
          ],
          "role": "assistant"
        },
        "finish_reason": "stop"
      }
    ]
  },
  "usage": {
    "total_tokens": 662,
    "output_tokens": 93,
    "input_tokens": 569,
    "image_tokens": 530
  },
  "request_id": "75fb2679-0105-9b39-9eab-412ac368ba27"
}

Pengenalan teks umum

Pengenalan teks umum terutama digunakan untuk skenario bahasa Tiongkok dan Inggris serta mengembalikan hasil pengenalan dalam format teks biasa.

Nilai task

Prompt yang ditentukan

Format output dan contoh

text_recognition

Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.

  • Format: Teks biasa

  • Contoh: "Audience\n\nIf you are..."

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False}]
        }]
        
response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke pengenalan teks umum.
    ocr_options= {"task": "text_recognition"} 
)
# Tugas pengenalan teks umum mengembalikan hasil dalam format teks biasa.
print(response["output"]["choices"][0]["message"].content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
      // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
      // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }

    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.TEXT_RECOGNITION)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation'\
  --header "Authorization: Bearer $DASHSCOPE_API_KEY"\
  --header 'Content-Type: application/json'\
  --data '{
"model": "qwen-vl-ocr-2025-11-20",
"input": {
  "messages": [
    {
      "role": "user",
      "content": [{
          "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
          "min_pixels": 3072,
          "max_pixels": 8388608,
          "enable_rotate": false
        }
      ]
    }
  ]
},
"parameters": {
  "ocr_options": {
      "task": "text_recognition"
    }
}
}'

Contoh respons

{
  "output": {
    "choices": [{
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": [{
          "text": "Audience\nIf you are a system administrator for a Linux environment, you will benefit greatly from learning to write shell scripts. This book does not detail the steps to install the Linux system. However, if you have a running Linux system, you can start automating daily system administration tasks. That is where shell scripting helps, and that is what this book is about. This book shows how to use shell scripts to automate system administration tasks. These tasks include monitoring system statistics and data files, and generating reports for your manager.\nIf you are a home Linux enthusiast, you can also benefit from this book. Today, it is easy to get lost in complex graphical environments. Most desktop Linux distributions hide the system's internal details from the average user. But sometimes you need to know what is happening under the hood. This book shows you how to open the Linux command line and what to do next. For simple tasks, such as file management, the command line is often much easier to use than a fancy graphical interface. The command line has many available commands, and this book shows you how to use them."
        }]
      }
    }]
  },
  "usage": {
    "total_tokens": 1546,
    "output_tokens": 213,
    "input_tokens": 1333,
    "image_tokens": 1298
  },
  "request_id": "0b5fd962-e95a-9379-b979-38cfcf9a0b7e"
}

Pengenalan multibahasa

Pengenalan multibahasa cocok untuk skenario yang melibatkan bahasa selain Tiongkok dan Inggris. Bahasa yang didukung adalah Arab, Prancis, Jerman, Italia, Jepang, Korea, Portugis, Rusia, Spanyol, dan Vietnam. Hasil pengenalan dikembalikan dalam format teks biasa.

Nilai task

Prompt yang ditentukan

Format output dan contoh

multi_lan

Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.

  • Format: Teks biasa

  • Contoh: "Привіт!, Hello!, Bonjour!"

Kode contoh berikut menunjukkan cara memanggil model menggunakan SDK DashScope dan HTTP:

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
                "enable_rotate": False}]
            }]
            
response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Atur tugas bawaan ke pengenalan multibahasa.
    ocr_options={"task": "multi_lan"}
)
# Tugas pengenalan multibahasa mengembalikan hasil sebagai teks biasa.
print(response["output"]["choices"][0]["message"].content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
      // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ubah base_url menjadi https://dashscope-us.aliyuncs.com/api/v1.
      // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ubah base_url menjadi https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png");
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar lebih besar dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar lebih kecil dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        // Menentukan apakah akan mengaktifkan rotasi gambar otomatis.
        map.put("enable_rotate", false);
        
        // Konfigurasikan tugas OCR bawaan.
        OcrOptions ocrOptions = OcrOptions.builder()
                .task(OcrOptions.Task.MULTI_LAN)
                .build();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map
                        )).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .ocrOptions(ocrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
  "model": "qwen-vl-ocr-2025-11-20",
  "input": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "image": "https://img.alicdn.com/imgextra/i2/O1CN01VvUMNP1yq8YvkSDFY_!!6000000006629-2-tps-6000-3000.png",
            "min_pixels": 3072,
            "max_pixels": 8388608,
            "enable_rotate": false
          }
        ]
      }
    ]
  },
  "parameters": {
    "ocr_options": {
      "task": "multi_lan"
    }
  }
}
'

Contoh respons

{
  "output": {
    "choices": [{
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": [{
          "text": "INTERNATIONAL\nMOTHER LANGUAGE\nDAY\nПривіт!\nHello!\nMerhaba!\nBonjour!\nCiao!\nHello!\nOla!\nSalam!\nבר מולדת!"
        }]
      }
    }]
  },
  "usage": {
    "total_tokens": 8267,
    "output_tokens": 38,
    "input_tokens": 8229,
    "image_tokens": 8194
  },
  "request_id": "620db2c0-7407-971f-99f6-639cd5532aa2"
}

Meneruskan file lokal (pengodean Base64 atau jalur file)

Qwen-VL menyediakan dua metode untuk mengunggah file lokal: encoding Base64 dan jalur file langsung. Anda dapat memilih metode unggah berdasarkan ukuran file dan jenis SDK. Untuk rekomendasi spesifik, lihat Cara memilih metode unggah file. Kedua metode harus memenuhi persyaratan file dalam Batasan gambar.

Gunakan encoding Base64

Konversi file ke string yang diencode Base64, lalu teruskan ke model. Metode ini cocok untuk SDK OpenAI dan DashScope, serta permintaan HTTP.

Langkah-langkah untuk meneruskan string yang diencode Base64

  1. Encode file: Konversi gambar lokal ke string yang diencode Base64.

    Kode contoh untuk mengonversi gambar ke string yang diencode Base64

    # Fungsi encoding: Mengonversi file lokal ke string yang diencode 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/eagle.png dengan jalur mutlak gambar lokal Anda.
    base64_image = encode_image("xxx/eagle.png")
  2. Buat URL Data dalam format berikut: data:[MIME_type];base64,{base64_image}.

    1. Ganti MIME_type dengan jenis media aktual. Pastikan jenis tersebut sesuai dengan nilai MIME Type dalam tabel Batasan gambar, seperti image/jpeg atau image/png.

    2. base64_image adalah string yang diencode Base64 yang dihasilkan pada langkah sebelumnya.

  3. Panggil model: Teruskan URL Data menggunakan parameter image atau image_url untuk memanggil model.

Unggah jalur file

Teruskan jalur file lokal langsung ke model. Metode ini hanya didukung oleh SDK Python dan Java DashScope. Tidak didukung untuk metode HTTP DashScope atau yang kompatibel OpenAI.

Lihat tabel berikut untuk menentukan jalur file berdasarkan bahasa pemrograman dan sistem operasi Anda.

Tentukan jalur file (contoh gambar)

Sistem

SDK

Jalur file input

Contoh

Linux atau macOS

Python SDK

file://{absolute_path_of_the_file}

file:///home/images/test.png

Java SDK

Windows

Python SDK

file://{absolute_path_of_the_file}

file://D:/images/test.png

Java SDK

file:///{absolute_path_of_the_file}

file:///D:/images/test.png

Teruskan jalur file

Penerusan jalur file hanya didukung untuk panggilan yang dilakukan dengan SDK Python dan Java DashScope. Metode ini tidak didukung untuk metode HTTP DashScope atau yang kompatibel OpenAI.

Python

import os
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
local_path = "xxx/test.jpg"
image_path = f"file://{local_path}"
messages = [
    {
        "role": "user",
        "content": [
            {
                "image": image_path,
                # Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                "max_pixels": 32 * 32 * 8192,
            },
            # Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
            {
                "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
            },
        ],
    }
]

response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-vl-ocr-2025-11-20",
    messages=messages,
)
print(response["output"]["choices"][0]["message"].content[0]["text"])

Java

import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
        // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
        // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    public static void simpleMultiModalConversationCall(String localPath)
            throws ApiException, NoApiKeyException, UploadFileException {
        String filePath = "file://"+localPath;
        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", filePath);
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map,
                        // Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
                        Collections.singletonMap("text", "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"))).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            // Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
            simpleMultiModalConversationCall("xxx/test.jpg");
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

Teruskan string yang diencode Base64

Kompatibel OpenAI

Python

from openai import OpenAI
import os
import base64

# Baca file lokal dan encode dalam format Base64.
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

# Ganti xxx/test.png dengan jalur mutlak gambar lokal Anda.
base64_image = encode_image("xxx/test.png")

client = OpenAI(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    # Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1.
    # Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-vl-ocr-2025-11-20",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    # Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung. "f" adalah metode pemformatan string.
                    # Gambar PNG:  f"data:image/png;base64,{base64_image}"
                    # Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
                    # Gambar WEBP: f"data:image/webp;base64,{base64_image}"
                    "image_url": {"url": f"data:image/png;base64,{base64_image}"},
                    # Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                    "min_pixels": 32 * 32 * 3,
                    # Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
                    "max_pixels": 32 * 32 * 8192
                },
                 # Model mendukung penerusan prompt di bidang teks berikut. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
                {"type": "text", "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"},

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

Node.js

import OpenAI from "openai";
import {
  readFileSync
} from 'fs';


const client = new OpenAI({
  // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
  apiKey: process.env.DASHSCOPE_API_KEY,
  // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1.
  // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1.
  baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
// Baca file lokal dan encode dalam format Base64.
const encodeImage = (imagePath) => {
  const imageFile = readFileSync(imagePath);
  return imageFile.toString('base64');
};
// Ganti xxx/test.png dengan jalur mutlak gambar lokal Anda.
const base64Image = encodeImage("xxx/test.jpg")
async function main() {
  const completion = await client.chat.completions.create({
    model: "qwen-vl-ocr-2025-11-20",
    messages: [{
      "role": "user",
      "content": [{
          "type": "image_url",
          "image_url": {
            // Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung.
            // Gambar PNG:  data:image/png;base64,${base64Image}
            // Gambar JPEG: data:image/jpeg;base64,${base64Image}
            // Gambar WEBP: data:image/webp;base64,${base64Image}
            "url": `data:image/jpeg;base64,${base64Image}`
          },
          // Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
          "min_pixels": 32 * 32 * 3,
          // Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
          "max_pixels": 32 * 32 * 8192
        },
        // Model mendukung penerusan prompt di bidang teks berikut. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
        {
          "type": "text",
          "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
        }
      ]
    }]
  });
  console.log(completion.choices[0].message.content);
}

main();

curl

  • Untuk informasi tentang cara mengonversi file ke string yang diencode Base64, lihat kode contoh.

  • Untuk tujuan demonstrasi, string yang diencode Base64 "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..." dalam kode dipotong. Dalam praktiknya, Anda harus meneruskan string lengkap.

# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
# === Hapus komentar ini sebelum menjalankan ===

curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "qwen-vl-ocr-2025-11-20",
  "messages": [
  {
    "role": "user",
    "content": [
      {"type": "image_url", "image_url": {"url": "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."}},
      {"type": "text", "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', ''seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"}
    ]
  }]
}'

DashScope

Python

import os
import base64
import dashscope

# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Format encoding Base64.
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")


# Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
base64_image = encode_image("xxx/test.jpg")

messages = [
    {
        "role": "user",
        "content": [
            {
                # Catatan: Saat Anda meneruskan string yang diencode Base64, format gambar (image/{format}) harus sesuai dengan Content-Type dalam daftar gambar yang didukung. "f" adalah metode pemformatan string.
                # Gambar PNG:  f"data:image/png;base64,{base64_image}"
                # Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
                # Gambar WEBP: f"data:image/webp;base64,{base64_image}"
                "image":  f"data:image/jpeg;base64,{base64_image}",
                # Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
                "min_pixels": 32 * 32 * 3,
                # Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels, "max_pixels": 32 * 32 * 8192,
            },
            # Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
            {
                "text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
            },
        ],
    }
]

response = dashscope.MultiModalConversation.call(
    # Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-vl-ocr-2025-11-20",
    messages=messages,
)

print(response["output"]["choices"][0]["message"].content[0]["text"])

Java

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class Main {

    static {
          // Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1.
          // Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1.
          Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
      }
  
      // Format encoding Base64.
    private static String encodeImageToBase64(String imagePath) throws IOException {
        Path path = Paths.get(imagePath);
        byte[] imageBytes = Files.readAllBytes(path);
        return Base64.getEncoder().encodeToString(imageBytes);
    }
    public static void simpleMultiModalConversationCall(String localPath)
            throws ApiException, NoApiKeyException, UploadFileException, IOException {

        String base64Image = encodeImageToBase64(localPath); // Encoding Base64.

        MultiModalConversation conv = new MultiModalConversation();
        Map<String, Object> map = new HashMap<>();
        map.put("image", "data:image/jpeg;base64," + base64Image);
        // Ambang batas piksel maksimum untuk gambar input. Jika gambar memiliki piksel lebih banyak dari nilai ini, gambar diperkecil hingga total piksel kurang dari max_pixels.
        map.put("max_pixels", 8388608);
        // Ambang batas piksel minimum untuk gambar input. Jika gambar memiliki piksel lebih sedikit dari nilai ini, gambar diperbesar hingga total piksel lebih besar dari min_pixels.
        map.put("min_pixels", 3072);
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        map,
                        // Jika tidak ada tugas bawaan yang ditetapkan untuk model, Anda dapat meneruskan prompt di bidang teks. Jika Anda tidak meneruskan prompt, prompt default digunakan: Silakan keluarkan hanya konten teks dari gambar tanpa deskripsi atau format tambahan.
                        Collections.singletonMap("text", "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"))).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-vl-ocr-2025-11-20")
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
    }

    public static void main(String[] args) {
        try {
            // Ganti xxx/test.jpg dengan jalur mutlak gambar lokal Anda.
            simpleMultiModalConversationCall("xxx/test.jpg");
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

  • Untuk informasi tentang cara mengonversi file ke string yang diencode Base64, lihat kode contoh.

  • Untuk tujuan demonstrasi, string yang diencode Base64 "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..." dalam kode dipotong. Dalam praktiknya, Anda harus meneruskan string lengkap.

# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/id/model-studio/get-api-key.
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation.
# === Hapus komentar ini sebelum menjalankan ===

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "model": "qwen-vl-ocr-2025-11-20",
    "input":{
        "messages":[
            {
             "role": "user",
             "content": [
               {"image": "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
               {"text": "Ekstraksi nomor faktur, nomor kereta, stasiun keberangkatan, stasiun tujuan, tanggal dan waktu keberangkatan, nomor kursi, jenis kursi, harga tiket, nomor KTP, dan nama penumpang dari gambar tiket kereta. Ekstraksi informasi utama secara akurat. Jangan menghilangkan atau membuat informasi. Ganti karakter tunggal yang buram atau terhalang silau dengan tanda tanya (?). Kembalikan data dalam format JSON: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"}
                ]
            }
        ]
    }
}'

Penggunaan lainnya

Batasan

Batasan gambar

  • Dimensi dan rasio aspek: Lebar dan tinggi gambar harus lebih besar dari 10 piksel. Rasio aspek tidak boleh melebihi 200:1 atau kurang dari 1:200.

  • Total piksel: Model secara otomatis menskalakan gambar, sehingga tidak ada batasan ketat pada jumlah total piksel. Namun, gambar tidak boleh melebihi 15,68 juta piksel.

  • Format gambar yang didukung

    • Untuk gambar dengan resolusi di bawah 4K (3840x2160), format berikut didukung:

      Format gambar

      Ekstensi umum

      Jenis MIME

      BMP

      .bmp

      image/bmp

      JPEG

      .jpe, .jpeg, .jpg

      image/jpeg

      PNG

      .png

      image/png

      TIFF

      .tif, .tiff

      image/tiff

      WEBP

      .webp

      image/webp

      HEIC

      .heic

      image/heic

    • Untuk gambar dengan resolusi dari 4K (3840x2160) hingga 8K (7680x4320), hanya format JPEG, JPG, dan PNG yang didukung.

  • Ukuran gambar:

    • Jika Anda menyediakan gambar menggunakan URL publik atau jalur lokal, ukuran gambar tidak boleh melebihi 10 MB.

    • Jika Anda menyediakan data dalam encoding Base64, string yang diencode tidak boleh melebihi 10 MB.

    Untuk informasi lebih lanjut, lihat Cara memampatkan gambar atau video ke ukuran yang diperlukan.

Batasan model

  • Pesan Sistem: Model Qwen-OCR tidak mendukung Pesan Sistem kustom dan menggunakan Pesan Sistem internal tetap. Anda harus meneruskan semua instruksi melalui Pesan Pengguna.

  • Tidak ada percakapan multi-putaran: Model tidak mendukung percakapan multi-putaran dan hanya menjawab pertanyaan terbaru.

  • Risiko halusinasi: Model mungkin mengalami halusinasi jika teks dalam gambar terlalu kecil atau memiliki resolusi rendah. Selain itu, akurasi jawaban untuk pertanyaan yang tidak terkait dengan ekstraksi teks tidak dijamin.

  • Tidak dapat memproses file teks:

    • Untuk file yang berisi data gambar, ikuti rekomendasi dalam Mulai produksi untuk mengubahnya menjadi urutan gambar sebelum diproses.

    • Untuk file dengan teks biasa atau data terstruktur, gunakan Qwen-Long, model yang dapat mengurai teks panjang.

Penagihan dan pembatasan laju

  • Penagihan: Qwen-OCR adalah model multimodal. Total biaya dihitung sebagai berikut: (Jumlah token input × Harga satuan input) + (Jumlah token output × Harga satuan output). Untuk informasi lebih lanjut tentang cara menghitung token gambar, lihat Metode konversi token gambar. Anda dapat melihat tagihan atau mengisi ulang akun Anda di halaman Biaya dan Pengeluaran.

  • Pembatasan laju: Untuk batas laju Qwen-OCR, lihat Batas laju.

  • Kuota gratis (hanya wilayah Singapura): Qwen-OCR menyediakan kuota gratis 1 juta token. Kuota ini berlaku selama 90 hari, mulai dari tanggal Anda mengaktifkan Model Studio atau permintaan Anda untuk menggunakan model disetujui.

Peluncuran

  • Pemrosesan dokumen multi-halaman, seperti PDF:

    1. Pisahkan: Anda dapat menggunakan pustaka pengeditan gambar, seperti Python's pdf2image, untuk mengonversi setiap halaman file PDF menjadi gambar berkualitas tinggi.

    2. Kirim permintaan: Anda dapat menggunakan metode input multi-gambar untuk pengenalan.

  • Pra-pemrosesan gambar:

    • Pastikan gambar input jelas, pencahayaan merata, dan tidak terlalu terkompresi:

      • Untuk mencegah kehilangan informasi, Anda dapat menggunakan format lossless, seperti PNG, untuk penyimpanan dan transmisi gambar.

      • Untuk meningkatkan definisi gambar, Anda dapat menggunakan algoritma penghilangan derau, seperti filter mean atau median, untuk menghaluskan gambar berisik.

      • Untuk mengoreksi pencahayaan tidak merata, Anda dapat menggunakan algoritma seperti penyamaan histogram adaptif untuk menyesuaikan kecerahan dan kontras.

    • Untuk gambar miring: Anda dapat menggunakan parameter SDK DashScope enable_rotate: true untuk meningkatkan kinerja pengenalan secara signifikan.

    • Untuk gambar yang sangat kecil atau sangat besar: Anda dapat menggunakan parameter min_pixels dan max_pixels untuk mengontrol cara gambar diskalakan sebelum diproses.

      • min_pixels: Memperbesar gambar kecil untuk meningkatkan deteksi detail. Pertahankan nilai default.

      • max_pixels: Mencegah gambar terlalu besar mengonsumsi sumber daya berlebihan. Untuk sebagian besar skenario, nilai default sudah cukup. Jika teks kecil tidak dikenali dengan jelas, Anda dapat menaikkan nilai max_pixels. Perhatikan bahwa ini meningkatkan konsumsi token.

  • Validasi hasil: Hasil pengenalan model mungkin mengandung kesalahan. Untuk operasi bisnis kritis, Anda dapat menerapkan proses tinjauan manual atau menambahkan aturan validasi untuk memverifikasi keakuratan output model. Misalnya, Anda dapat menggunakan validasi format untuk nomor KTP dan nomor kartu bank.

  • Panggilan batch: Dalam skenario berskala besar dan non-real-time, Anda dapat menggunakan API Batch untuk memproses pekerjaan batch secara asinkron dengan biaya lebih rendah.

FAQ

Bagaimana memilih metode unggah file?

Pilih metode unggah terbaik berdasarkan jenis SDK, ukuran file, dan stabilitas jaringan.

Jenis file

Spesifikasi file

SDK DashScope (Python, Java)

Kompatibel OpenAI / HTTP DashScope

Gambar

Lebih besar dari 7 MB dan kurang dari 10 MB

Teruskan jalur lokal

Hanya URL publik yang didukung. Gunakan Object Storage Service.

Kurang dari 7 MB

Teruskan jalur lokal

Encoding Base64

Encoding Base64 meningkatkan ukuran data. Ukuran file asli harus kurang dari 7 MB.
Menggunakan jalur lokal atau encoding Base64 membantu mencegah timeout unduhan di sisi server dan meningkatkan stabilitas.

Bagaimana cara menggambar bingkai deteksi pada gambar asli setelah model mengeluarkan hasil lokalisasi teks?

Setelah model Qwen-OCR mengembalikan hasil lokalisasi teks, Anda dapat menggunakan kode dalam file draw_bbox.py untuk menggambar bingkai deteksi dan labelnya pada gambar asli.

Referensi API

Untuk parameter input dan output Qwen-OCR, lihat Referensi API Qwen-OCR.

Kode error

Jika panggilan gagal, lihat Pesan error untuk troubleshooting.