Skip to main content
Pemahaman visual

Ekstraksi teks (Qwen-OCR)

Qwen-OCR adalah model pemahaman visual yang mengekstraksi teks dan data terstruktur dari gambar—seperti dokumen hasil pindaian, tabel, struk, dan lainnya. Model ini mendukung berbagai bahasa serta tugas OCR tingkat lanjut, termasuk ekstraksi informasi, penguraian tabel, pengenalan rumus, dan penguraian dokumen.

Coba secara online: Buka Konsol Alibaba Cloud Model Studio, pilih wilayah di pojok kanan atas, buka halaman vision, lalu pilih Qwen OCR.

Contoh

Gambar inputHasil pengenalan
Kenali berbagai bahasaimageINTERNATIONALMOTHER LANGUAGEDAYПривет!你好!Bonjour!Merhaba!Ciao!Hello!Ola!בר מולדSalam!
Kenali gambar miringimagePerkenalan ProdukFilamen serat impor dari Korea Selatan.6941990612023No. Item: 2023
Temukan posisi teksimg_1
pengenalan presisi tinggi mendukung pelokalisasian teks.
Visualisasi pelokalisasianimg_1_location
Lihat FAQ tentang cara menggambar kotak pembatas setiap baris teks ke gambar asli.

Pemilihan model

Qwen-OCR menyediakan model-model berikut. Pilih sesuai kebutuhan bisnis Anda:
  • Qwen3.5-OCR: Dibangun di atas arsitektur Qwen3.5, dengan peningkatan komprehensif dalam penguraian dokumen, pelokalisasian teks, dan ekstraksi informasi kunci. Mendukung percakapan multi-putaran dan penguraian dokumen PDF. Mengalami peningkatan signifikan dalam mengekstraksi informasi dari sertifikat bisnis (seperti KTP dan SIM). Untuk jenis sertifikat yang didukung, lihat Jenis sertifikat dan dokumen yang didukung. Termasuk model qwen3.5-ocr.
  • Qwen-VL-OCR: Dibangun di atas arsitektur Qwen3-VL. Mendukung tugas bawaan termasuk penguraian dokumen, pelokalisasian teks (pengenalan presisi tinggi), ekstraksi informasi, penguraian tabel, pengenalan rumus, pengenalan teks umum, dan pengenalan multibahasa. Juga mendukung koreksi rotasi gambar. Termasuk model qwen-vl-ocr (stabil), qwen-vl-ocr-latest (terbaru), qwen-vl-ocr-2025-11-20, dan qwen-vl-ocr-2025-08-28.
  • Versi lama (tidak direkomendasikan): Versi-versi ini lebih rendah dibanding model baru baik dari segi fitur maupun performa. Kami merekomendasikan migrasi ke qwen3.5-ocr. Termasuk model qwen-vl-ocr-2025-04-13 dan qwen-vl-ocr-2024-10-28.
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 meningkatkan nilai ini menjadi rentang 4097 hingga 8192, hubungi manajer komersial Anda dan berikan informasi berikut: ID akun Alibaba Cloud Anda, jenis gambar (misalnya gambar dokumen, gambar e-commerce, atau kontrak), nama model, perkiraan Queries Per Second (QPS) dan total permintaan harian, serta persentase permintaan di mana panjang output model melebihi 4096 token.
Pengalaman online: Kunjungi Konsol Model Studio, pilih wilayah target di pojok kanan atas, lalu buka Model Vision untuk mencoba model Qwen-OCR.

Persiapan

  • Buat Kunci API dan tetapkan sebagai variabel lingkungan.
  • Jika Anda menggunakan SDK OpenAI atau SDK DashScope, instal versi SDK terbaru. Versi minimum: SDK Python DashScope 1.22.2, SDK Java 2.21.8.
    • SDK DashScope
      • Keunggulan: Akses penuh ke fitur-fitur tingkat lanjut—seperti koreksi rotasi gambar dan tugas OCR bawaan—dengan API yang sederhana.
      • Paling cocok untuk: Proyek yang membutuhkan rangkaian fitur lengkap.
    • SDK kompatibel OpenAI
      • Keunggulan: Pengganti langsung untuk integrasi SDK OpenAI yang sudah ada.
      • Keterbatasan: Fitur-fitur tingkat lanjut seperti koreksi rotasi gambar dan tugas OCR bawaan tidak tersedia langsung sebagai parameter. Simulasikan dengan menyusun prompt dan mengurai output.
      • Paling cocok untuk: Proyek yang sudah menggunakan OpenAI dan tidak memerlukan fitur eksklusif DashScope.

Memulai

Contoh berikut mengekstraksi bidang terstruktur dari gambar tiket kereta (URL) dan mengembalikan hasil dalam format JSON. Untuk file lokal, lihat cara meneruskan file lokal. Untuk batasan input, lihat batasan gambar.
  • OpenAI compatible-Chat
  • OpenAI compatible-Response
  • DashScope
Python
from openai import OpenAI
import os

PROMPT_TICKET_EXTRACTION = """
Please extract the invoice number, train number, departure station, destination station, departure date and time, seat number, seat type, ticket price, ID card number, and passenger name from the train ticket image.
Extract the key information accurately. Do not omit information or fabricate false information. Replace any single character that is blurry or obscured by glare with a question mark (?).
Return the data in JSON format: {'Invoice Number': 'xxx', 'Train Number': 'xxx', 'Departure Station': 'xxx', 'Destination Station': 'xxx', 'Departure Date and Time': 'xxx', 'Seat Number': 'xxx', 'Seat Type': 'xxx', 'Ticket Price': 'xxx', 'ID Card Number': 'xxx', 'Passenger Name': 'xxx'}
"""

try:
    client = OpenAI(
        # API keys are region-specific. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
        # If you have not configured an environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Replace {WorkspaceId} with your workspace ID. URLs vary by region.
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen-vl-ocr-2025-11-20",
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
                        # The minimum pixel threshold for the input image. If the image is smaller than this value, it is scaled up until the total pixels exceed min_pixels.
                        "min_pixels": 32 * 32 * 3,
                        # The maximum pixel threshold for the input image. If the image is larger than this value, it is scaled down until the total pixels are below max_pixels.
                        "max_pixels": 32 * 32 * 8192
                    },
                    # The model supports passing a prompt in the text field. If no prompt is passed, the default prompt is used: Please output only the text content from the image without any additional descriptions or formatting.
                    {"type": "text",
                     "text": PROMPT_TICKET_EXTRACTION}
                ]
            }
        ])
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"Error message: {e}")
{
  "choices": [{
    "message": {
      "content": "```json\n{\n    \"Invoice Number\": \"24329116804000\",\n    \"Train Number\": \"G1948\",\n    \"Departure Station\": \"Nanjing South Station\",\n    \"Destination Station\": \"Zhengzhou East Station\",\n    \"Departure Date and Time\": \"2024-11-14 11:46\",\n    \"Seat Number\": \"Car 04, Seat 12A\",\n    \"Seat Type\": \"Second Class\",\n    \"Ticket Price\": \"¥337.50\",\n    \"ID Card Number\": \"4107281991****5515\",\n    \"Passenger Name\": \"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"
}

Panggil tugas bawaan

Model (kecuali qwen-vl-ocr-2024-10-28) dilengkapi tugas bawaan untuk skenario OCR umum. Cara memanggil tugas bawaan:
  • SDK DashScope: Atur parameter ocr_options untuk memanggil tugas bawaan. Mulai dari qwen3.5-ocr, tugas bawaan berjalan bersama Prompt kustom Anda (tidak lagi menimpanya), dan hasilnya dikembalikan dalam bidang ocr_result. Model sebelumnya menggunakan Prompt internal yang tetap.
  • SDK kompatibel OpenAI: Teruskan Prompt spesifik tugas secara manual dalam pesan Anda.
Setiap tugas memiliki nilai task, Prompt tetap, format output, dan contoh output:
  • Pengenalan presisi tinggi
  • Ekstraksi informasi
  • Penguraian tabel
  • Penguraian dokumen
  • Pengenalan rumus
  • Pengenalan teks umum
  • Pengenalan multibahasa
Untuk pengenalan presisi tinggi, gunakan versi model setelah qwen-vl-ocr-2025-08-28 atau versi terbaru (direkomendasikan). Fitur-fitur:
  • Mengenali dan mengekstraksi konten teks.
  • Mendeteksi posisi teks dengan melokalisasi baris teks dan mengeluarkan koordinatnya.
Untuk menggambar kotak pembatas pada gambar asli menggunakan koordinat yang dikembalikan, lihat FAQ.
Nilai TugasPrompt yang ditentukanFormat output dan contoh
advanced_recognitionTemukan semua baris teks dan kembalikan koordinat persegi panjang yang diputar ([cx, cy, width, height, angle]).
  • Format: Teks biasa atau objek JSON yang dapat langsung diperoleh dari bidang ocr_result.
  • Contoh:

{
  "output": {
    "choices": [
      {
        "message": {
          "content": [
            {
              "ocr_result": {
                "words_info": [
                  {
                    "location": [331, 139, 465, 139, 465, 166, 331, 166],
                    "rotate_rect": [398,153,134,27,90],
                    "text": "Magsafe"
                  },
                  {
                    "location": [411, 86, 411, 220, 384, 220, 384, 86],
                    "rotate_rect": [680,250,40,167,90],
                    "text": "金盾系列"
                  },
  • text: Konten teks setiap baris.
  • location:
    • Nilai contoh: [x1, y1, x2, y2, x3, y3, x4, y4]
    • Makna: Koordinat absolut empat titik sudut kotak teks. Pojok kiri atas gambar asli adalah titik asal (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

# Replace {WorkspaceId} with your workspace ID. URLs vary by region.
# If you use a model in the China (Beijing) region, change the base_url to https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

messages = [{
            "role": "user",
            "content": [{
                "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
                # The minimum pixel threshold for the input image. If the image is smaller than this value, it is scaled up until the total pixels are greater than min_pixels.
                "min_pixels": 32 * 32 * 3,
                # The maximum pixel threshold for the input image. If the image is larger than this value, it is scaled down until the total pixels are less than max_pixels.
                "max_pixels": 32 * 32 * 8192,
                # Specifies whether to enable automatic image rotation.
                "enable_rotate": False}]
            }]

response = dashscope.MultiModalConversation.call(
    # If you have not configured an environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # Set the built-in task to high-precision recognition.
    ocr_options={"task": "advanced_recognition"}
)
# The high-precision recognition task returns the result as plain text.
print(response["output"]["choices"][0]["message"].content[0]["text"])
{
  "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"
}

Penguraian dokumen PDF

qwen3.5-ocr mendukung penerusan file PDF secara langsung melalui API Response untuk penguraian dokumen, tanpa perlu membagi PDF menjadi gambar secara manual. Panjang output tidak dibatasi oleh panjang output maksimum model, sehingga memungkinkan penguraian lengkap dokumen panjang. Hanya API Response yang didukung; API Chat tidak didukung. Batasan file PDF: tidak lebih dari 100 MB. Batas jumlah halaman bergantung pada task di ocr_options: hingga 50 halaman jika task disetel ke document_parsing, dan hingga 10 halaman jika task tidak disetel atau disetel ke tugas lain. Contoh berikut menggunakan API Response untuk meneruskan file PDF guna penguraian dokumen.
Python
import os
from openai import OpenAI

client = OpenAI(
    # If you have not configured an environment variable, replace the following line with your API key: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The URL below is for the China (Beijing) region. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

response = client.responses.create(
    model="qwen3.5-ocr",
    input=[{
        "role": "user",
        "content": [{
            "type": "input_file",
            "file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
        }]
    }],
    extra_body={
        "ocr_options": {"task": "document_parsing"}
    }
)

# Get the built-in task result
print(response.output[0].content[0].ocr_result)
Untuk model versi lama (qwen-vl-ocr-2025-11-20 dan sebelumnya) yang tidak mendukung API Response, gunakan pustaka pemrosesan gambar seperti Python's pdf2image untuk mengonversi setiap halaman PDF menjadi gambar, lalu gunakan metode input multi-gambar untuk pengenalan per halaman.
Untuk penggunaan API Responses kompatibel OpenAI lainnya (seperti mengambil dan mengelola respons model yang telah selesai), lihat OpenAI compatible - Responses.

Meneruskan file lokal (encoding Base64 atau jalur file)

Unggah file lokal menggunakan encoding Base64 atau jalur file langsung. Pilih metode berdasarkan ukuran file dan jenis SDK — lihat Cara memilih metode unggah file. Kedua metode harus memenuhi persyaratan file dalam Batasan gambar.
  • Gunakan encoding Base64
  • Gunakan jalur file
Konversi file menjadi string terenkripsi Base64, lalu teruskan ke model. Metode ini cocok untuk SDK OpenAI dan DashScope, serta permintaan HTTP.
  1. Enkode file: Konversi gambar lokal menjadi string terenkripsi Base64.
    # Encoding function: Converts a local file to a Base64-encoded string.
    def encode_image(image_path):
        with open(image_path, "rb") as image_file:
            return base64.b64encode(image_file.read()).decode("utf-8")
    
    # Replace xxx/eagle.png with the absolute path of your local image.
    base64_image = encode_image("xxx/eagle.png")
    
  2. Buat Data URL 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 terenkripsi Base64 yang dihasilkan pada langkah sebelumnya.
  3. Panggil model: Teruskan Data URL menggunakan parameter image atau image_url untuk memanggil model.
  • Meneruskan jalur file
  • Melewatkan string yang dienkode Base64
Penerusan jalur file hanya didukung untuk panggilan yang dilakukan dengan SDK Python dan Java DashScope. Metode ini tidak didukung untuk metode HTTP DashScope atau kompatibel OpenAI.
Python
import os
import dashscope

# Replace {WorkspaceId} with your workspace ID. URLs vary by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Replace xxx/test.jpg with the absolute path of your local image.
local_path = "xxx/test.jpg"
image_path = f"file://{local_path}"
messages = [
    {
        "role": "user",
        "content": [
            {
                "image": image_path,
                # The minimum pixel threshold for the input image. If the image has fewer pixels than this value, the image is scaled up until the total number of pixels is greater than min_pixels.
                "min_pixels": 32 * 32 * 3,
                # The maximum pixel threshold for the input image. If the image has more pixels than this value, the image is scaled down until the total number of pixels is less than max_pixels.
                "max_pixels": 32 * 32 * 8192,
            },
            # If no built-in task is set for the model, you can pass a prompt in the text field. If you do not pass a prompt, the default prompt is used: Please output only the text content from the image without any additional descriptions or formatting.
            {
                "text": "Extract the invoice number, train number, departure station, destination station, departure date and time, seat number, seat type, ticket price, ID card number, and passenger name from the train ticket image. Extract the key information accurately. Do not omit or fabricate information. Replace any single character that is blurry or obscured by glare with a question mark (?). Return the data in JSON format: {'invoice_number': 'xxx', 'train_number': 'xxx', 'departure_station': 'xxx', 'destination_station': 'xxx', 'departure_date_and_time': 'xxx', 'seat_number': 'xxx', 'seat_type': 'xxx', 'ticket_price': 'xxx', 'id_card_number': 'xxx', 'passenger_name': 'xxx'}"
            },
        ],
    }
]

response = dashscope.MultiModalConversation.call(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
    # If you have not configured an environment variable, replace the following line with your Model Studio API key: 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"])

Penggunaan lainnya

Batasan

Batasan gambar

  • Dimensi dan rasio aspek: Lebar dan tinggi gambar harus keduanya lebih besar dari 10 piksel. Rasio aspek tidak boleh melebihi 200:1 atau 1:200.
  • Total piksel: Model secara otomatis menskalakan gambar, sehingga tidak ada batasan ketat pada jumlah total piksel. Namun, gambar tidak boleh melebihi 15,68 juta piksel.
  • Format gambar yang didukung
    • Untuk gambar dengan resolusi di bawah 4K (3840x2160), format berikut didukung:

      Format gambar

      Ekstensi umum

      Jenis 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: qwen3.5-ocr mendukung gambar hingga 20 MB; versi lain mendukung hingga 10 MB.
    • Jika Anda menyediakan data dalam encoding Base64, string terenkripsi tidak boleh melebihi 10 MB.
    Lihat juga: Bagaimana cara memampatkan gambar atau video ke ukuran yang diperlukan?.

Batasan model

  • Pesan sistem: Qwen-OCR menggunakan System Message internal tetap dan tidak menerima pesan kustom. Teruskan semua instruksi dalam User Message.
  • Percakapan multi-putaran: Mulai dari qwen3.5-ocr, percakapan multi-putaran didukung—Anda dapat mengirim pesan teks lanjutan tanpa URL gambar. Versi qwen-vl-ocr-2025-11-20 dan sebelumnya hanya memproses pesan terbaru dan tidak menyimpan konteks.
  • 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 ekstraksi teks tidak dijamin.
  • Kesalahan Pemrosesan File Teks:
    • Untuk file yang berisi data gambar, ikuti rekomendasi dalam Going live untuk mengubahnya menjadi urutan gambar sebelum diproses.
    • Untuk file dengan teks biasa atau data terstruktur, gunakan Qwen-Long, model yang dapat mengurai teks panjang.

Jenis sertifikat dan dokumen yang didukung

Tugas ekstraksi informasi mendukung ekstraksi data terstruktur dari sertifikat, struk, dan izin berikut.
  • Paspor dan dokumen perjalanan: Paspor Tiongkok, paspor Makau, Izin Perjalanan Daratan untuk Penduduk Hong Kong dan Makau, Izin Perjalanan Daratan untuk Penduduk Taiwan, dan Izin Pulang untuk Penduduk Hong Kong dan Makau.
  • Dokumen kendaraan dan faktur penjualan: SIM, plat nama kendaraan, sertifikat kesesuaian kendaraan, sertifikat registrasi kendaraan, faktur penjualan kendaraan bermotor, dan faktur penjualan kendaraan bekas.
  • Faktur dan struk pajak: Faktur PPN biasa (gulung), faktur khusus nominal tetap, faktur cetak mesin umum, sertifikat pembayaran pajak, dan struk pendapatan non-pajak pusat.
  • Struk transportasi: Tiket kereta cepat 12306, tiket kereta, tiket kapal, struk tol jalan raya, dan faktur cetak mesin tol jalan raya.
  • Kartu keuangan dan struk: Kartu kredit, wesel bank elektronik, struk pembayaran, dan kartu jaminan sosial.
  • Lisensi dan izin usaha: Lisensi usaha, lisensi usaha makanan, lisensi produksi makanan, lisensi usaha farmasi, dan lisensi usaha alat kesehatan.
  • Sertifikat properti: Sertifikat kepemilikan properti.
  • KTP internasional: KTP Hong Kong, KTP Makau, KTP Indonesia, KTP Thailand, KTP Vietnam, KTP Malaysia, KTP Filipina, KTP India, KTP Turki, KTP Pakistan, KTP Meksiko, KTP Inggris, dan KTP AS.
  • Paspor dan SIM internasional: Paspor India, paspor Singapura, paspor Thailand, paspor AS, paspor Australia, paspor UEA, SIM Filipina, SIM Jepang, dan SIM AS.

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). Lihat tagihan atau isi ulang akun Anda di konsol Biaya dan Pengeluaran.
    • Menghitung token gambar: Gunakan kode berikut untuk memperkirakan penggunaan token gambar. Penagihan aktual berdasarkan respons API.
      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 qwen3.5-ocr, 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 ini menunjukkan logika penskalaan gambar perkiraan yang digunakan model. Gunakan untuk memperkirakan jumlah token untuk gambar. Penagihan aktual berdasarkan respons API.
      import math
      from PIL import Image
      
      def smart_resize(image_path, min_pixels, max_pixels):
          """
          Pre-process an image.
      
          Parameters:
              image_path: The path to the image.
          """
          # Open the specified PNG image file.
          image = Image.open(image_path)
      
          # Get the original dimensions of the image.
          height = image.height
          width = image.width
          # Adjust the height to be a multiple of 28 or 32.
          h_bar = round(height / 32) * 32
          # Adjust the width to be a multiple of 28 or 32.
          w_bar = round(width / 32) * 32
      
          # Scale the image to adjust the total number of pixels to be within the range [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
      
      # Replace xxx/test.png with the path to your local image.
      h_bar, w_bar = smart_resize("xxx/test.png", min_pixels=32 * 32 * 3, max_pixels=8192 * 32 * 32)
      print(f"The scaled image dimensions are: height {h_bar}, width {w_bar}")
      
      # Calculate the number of image tokens: total pixels divided by 32 * 32.
      token = int((h_bar * w_bar) / (32 * 32))
      
      # <|vision_bos|> and <|vision_eos|> are visual markers. Each is counted as 1 token.
      print(f"Total number of image tokens: {token + 2}")
      
  • Pembatasan laju: Untuk batas laju Qwen-OCR, lihat Pembatasan laju.
  • Kuota gratis (hanya 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.

Going live

  • Pra-pemrosesan gambar:
    • Pastikan gambar input jelas, pencahayaan merata, dan tidak terlalu terkompresi:
      • Simpan dan transmisikan gambar dalam format lossless (misalnya PNG) untuk menghindari kehilangan informasi.
      • Untuk meningkatkan definisi gambar, gunakan algoritma penghilangan derau, seperti filter mean atau median, untuk menghaluskan gambar berisik.
      • Untuk mengoreksi pencahayaan tidak merata, gunakan algoritma seperti equalisasi histogram adaptif untuk menyesuaikan kecerahan dan kontras.
    • Gambar miring: Atur enable_rotate: true dalam SDK DashScope untuk mengoreksi rotasi sebelum pengenalan.
    • Gambar sangat kecil atau sangat besar: Gunakan min_pixels dan max_pixels untuk mengatur penskalaan gambar.
      • min_pixels: Memperbesar gambar kecil guna meningkatkan detail. Pertahankan nilai default.
      • max_pixels: Mencegah gambar berukuran terlalu besar mengonsumsi terlalu banyak token. Nilai default mencakup sebagian besar kasus. Tingkatkan nilai ini jika teks kecil terlewat—hal ini akan meningkatkan penggunaan token.
  • Validasi hasil: Hasil pengenalan model mungkin mengandung kesalahan. Untuk operasi bisnis kritis, terapkan proses tinjauan manual atau tambahkan aturan validasi untuk memverifikasi akurasi output model. Misalnya, gunakan validasi format untuk nomor KTP dan kartu bank.
  • Pemrosesan batch: Untuk beban kerja volume tinggi non-real-time, gunakan API Batch untuk memproses pekerjaan secara asinkron dengan biaya lebih rendah.

FAQ

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

Jenis

Spesifikasi

SDK DashScope (Python, Java)

OpenAI compatible / DashScope HTTP

Gambar

Lebih dari 7 MB dan kurang dari 10 MB

Teruskan jalur lokal

Hanya URL publik yang didukung. Gunakan Layanan Penyimpanan Objek.

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.
Setelah model Qwen-OCR mengembalikan hasil pelokalisasian teks, gunakan kode dalam file draw_bbox.py untuk menggambar bingkai deteksi dan labelnya pada gambar asli.
Saat Anda menggunakan qwen3.5-ocr, jika Prompt kustom Anda berisi struktur HTML lengkap, seperti <html><body>...</body></html>, model mungkin mengikuti struktur tersebut dan mengembalikan hasil OCR dalam format HTML alih-alih teks biasa. Respons kemudian tampak kosong atau tampak berisi tag gaya antarmuka depan. Tag sederhana, seperti <br> saja, tidak memicu perilaku ini.Untuk mengatasi masalah ini, gunakan salah satu metode berikut:
  • Periksa apakah Prompt Anda berisi struktur tag HTML lengkap. Jika iya, ganti dengan instruksi teks biasa dan coba lagi. Misalnya, ubah <html><body>Extract all text from the image</body></html> menjadi Extract all text from the image.
  • Jika Anda tidak yakin apakah Prompt Anda memengaruhi format output, abaikan bidang text untuk menggunakan Prompt default model.
  • Gunakan model qwen3.7-plus sebagai gantinya. Model ini mengembalikan hasil teks biasa bahkan ketika Anda meneruskan Prompt yang sama yang berisi struktur HTML.

Referensi API

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

Kode kesalahan

Jika pemanggilan model gagal dan mengembalikan pesan kesalahan, lihat Kode kesalahan untuk penyelesaian.
Rencana Token (Team Edition)
Model playground
Statistik dan Pemantauan
Asset Center
Dukungan layanan