Skip to main content
視覺理解

文字提取(Qwen-OCR)

Qwen-OCR 是專為文字提取設計的視覺理解模型,支援從掃描文檔、表格、票據等各類映像中提取文本或結構化資料,覆蓋多語言情境,並內建資訊抽取、表格解析、公式識別等進階任務。

效果樣本

輸入映像識別結果
識別多種語言imageINTERNATIONALMOTHER LANGUAGEDAYПривет!你好!Bonjour!Merhaba!Ciao!Hello!Ola!בר מולדSalam!
識別傾斜映像image產品介紹本品採用韓國進口纖維絲製造,不縮水、不變形、不發黴、不生菌、不傷物品表面。具有真正的不粘油、吸水力強、耐水浸、清洗乾淨、無毒、無殘留、易晾乾等特點。店家使用經驗:不鏽鋼、陶瓷製品、浴盆、整體浴室大部分是白色的光潔表面,用其他的抹布擦洗表面汙漬不易洗掉,太尖的容易划出劃痕。使用這個模擬絲瓜布,沾少量中性洗滌劑揉出泡沫,很容易把這些表面汙漬擦洗乾淨。6941990612023貨號:2023
定位文字位置img_1
高精識別任務支援文字定位功能。
可視化定位效果img_1_location
可參見常見問題將每行文本的邊界框繪製到原圖上。

模型選型

Qwen-OCR 提供以下模型,請根據業務需求選擇:
  • Qwen3.5-OCR:基於 Qwen3.5 架構,在文檔解析、文字定位、關鍵資訊提取等方面全面升級。支援多輪對話、PDF 文檔解析。在業務卡證(身份證、駕駛證等)資訊抽取情境效果顯著提升,支援的卡證種類請參見支援的證照與票據類型。包括 qwen3.5-ocr 模型。
  • Qwen-VL-OCR:基於 Qwen3-VL 架構,支援文檔解析、文字定位(高精識別)、資訊抽取、表格解析、公式識別、通用文字識別、多語言識別等內建任務,支援映像旋轉矯正。包括 qwen-vl-ocr(穩定版)、qwen-vl-ocr-latest(最新版)、qwen-vl-ocr-2025-11-20qwen-vl-ocr-2025-08-28 模型。
  • 早期版本(不推薦):功能和效果均不及新版本,建議遷移至 qwen3.5-ocr。包括 qwen-vl-ocr-2025-04-13qwen-vl-ocr-2024-10-28 模型。
qwen-vl-ocr、qwen-vl-ocr-2025-04-13、qwen-vl-ocr-2025-08-28 模型的 max_tokens 參數(最大輸出長度)預設為 4096。如需將該參數調高至 4097~8192 範圍,請聯絡商務經理進行申請,並提供:主帳號 ID、映像類型(文檔圖、電商圖、合約等)、模型名稱、預計QPS和每日請求總量,以及輸出長度超過 4096 的請求佔比。
線上體驗:訪問阿里雲百鍊控制台,在頁面右上方選擇目標地區,進入視覺模型頁面選擇千問OCR 模型進行體驗。

準備工作

  • 已配置API Key配置API Key到環境變數
  • 如果使用 OpenAI SDK或 DashScope SDK,請先安裝最新版 SDK。DashScope Python SDK最低版本為 1.22.2,Java SDK最低版本為 2.21.8。
    • DashScope SDK
      • 優勢:支援映像旋轉矯正、內建 OCR 任務等所有進階特性,功能完整,調用簡潔。
      • 適用情境:需要使用完整功能的專案。
    • OpenAI 相容 SDK
      • 優勢:已使用 OpenAI SDK或生態工具的專案可快速遷移。
      • 限制:進階功能(映像旋轉矯正和內建 OCR 任務)不支援直接通過參數調用,需手動構造 Prompt 類比,輸出結果需自行解析。
      • 適用情境:已有 OpenAI 整合、且不依賴 DashScope 專有進階功能的專案。

快速開始

以下樣本從火車票圖片(URL)中提取關鍵資訊並以JSON格式返回。如需傳入本地檔案,參見如何傳入本地檔案;映像規格要求參見映像限制
  • OpenAI 相容-Chat
  • OpenAI 相容-Response
  • DashScope
Python
from openai import OpenAI
import os

PROMPT_TICKET_EXTRACTION = """
請提取車票映像中的發票號碼、車次、起始站、終點站、發車日期和時間點、座位號、席別類型、票價、社會安全號碼碼、購票人姓名。
要求準確無誤的提取上述關鍵資訊、不要遺漏和捏造虛假資訊,模糊或者強光遮擋的單個文字可以用英文問號?代替。
返回資料格式以json方式輸出,格式為:{'發票號碼':'xxx', '車次':'xxx', '起始站':'xxx', '終點站':'xxx', '發車日期和時間點':'xxx', '座位號':'xxx', '席別類型':'xxx','票價':'xxx', '社會安全號碼碼':'xxx', '購票人姓名':'xxx'"},
"""

try:
    client = OpenAI(
        # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",  # 請將 {WorkspaceId} 替換為業務空間ID
    )
    completion = client.chat.completions.create(
        model="qwen-vl-ocr-2025-11-20",
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url":"https://img.alicdn.com/imgextra/i2/O1CN01ktT8451iQutqReELT_!!6000000004408-0-tps-689-487.jpg"},
                        # 輸入映像的最小像素閾值,小於該值映像會進行放大,直到總像素大於min_pixels
                        "min_pixels": 32 * 32 * 3,
                        # 輸入映像的最大像素閾值,超過該值映像會進行縮小,直到總像素低於max_pixels
                        "max_pixels": 32 * 32 * 8192
                    },
                    # 模型支援在text欄位中傳入Prompt,若未傳入,則會使用預設的Prompt: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"錯誤資訊: {e}")
{
  "choices": [{
    "message": {
      "content": "```json\n{\n    \"發票號碼\": \"24329116804000\",\n    \"車次\": \"G1948\",\n    \"起始站\": \"南京南站\",\n    \"終點站\": \"鄭州東站\",\n    \"發車日期和時間點\": \"2024年11月14日11:46開\",\n    \"座位號\": \"04車12A號\",\n    \"席別類型\": \"二等座\",\n    \"票價\": \"¥337.50\",\n    \"社會安全號碼碼\": \"4107281991****5515\",\n    \"購票人姓名\": \"讀小光\"\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": "qwen3.5-ocr",
  "id": "chatcmpl-20e5d9ed-e8a3-947d-bebb-c47ef1378598"
}

調用內建任務

為簡化特定情境下的調用,模型(除qwen-vl-ocr-2024-10-28外)內建了多種任務。 調用方式:
  • DashScope SDK:設定 ocr_options 參數即可調用內建任務。qwen3.5-ocr起,定製任務與使用者自訂 Prompt 結合使用(不再強制覆蓋),定製任務結果通過 ocr_result 欄位返回。早期版本模型內部使用固定 Prompt
  • OpenAI 相容 SDK:需手動傳入任務指定的Prompt
下表列出了各內建任務對應的task的取值、指定的Prompt、輸出格式與樣本:
  • 高精識別
  • 資訊抽取
  • 表格解析
  • 文檔解析
  • 公式識別
  • 通用文字識別
  • 多語言識別
高精識別任務建議使用 qwen-vl-ocr-2025-08-28 及以後版本或最新版模型,支援:
  • 常值內容識別(提取文字)
  • 文本位置檢測(定位文本行並輸出座標)
擷取文本邊界框座標後,可參見常見問題將檢測框繪製到原圖上。
task的取值指定的Prompt輸出格式與樣本
advanced_recognition定位所有的文字行,並且返迴旋轉矩形([cx, cy, width, height, angle])的座標結果。
  • 格式: 純文字或者從ocr_result欄位中直接擷取JSON對象
  • 樣本:
{
  "output": {
    "choices": [
      {
        "message": {
          "content": [
            {
              "ocr_result": {
                "words_info": [
                  {
                    "rotate_rect": [398,153,134,27,90],
                    "text": "Magsafe"
                  },
                  {
                    "rotate_rect": [680,250,40,167,90],
                    "text": "金盾系列"
                  },
  • text:每行的常值內容。
  • rotate_rect
    • 樣本值:[center_x, center_y, width, height, angle]
    • 含義:文字框的旋轉矩形表示,center_x、center_y 為文字框中心點座標width為寬度,height為高度,angle為文字框相對於水平方向的旋轉角度,取值範圍為[-90, 90]
import os
import dashscope

# 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'  # 請將 {WorkspaceId} 替換為業務空間ID

messages = [{
            "role": "user",
            "content": [{
                "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/ctdzex/biaozhun.jpg",
                # 輸入映像的最小像素閾值,小於該值映像會進行放大,直到總像素大於min_pixels
                "min_pixels": 32 * 32 * 3,
                # 輸入映像的最大像素閾值,超過該值映像會進行縮小,直到總像素低於max_pixels
                "max_pixels": 32 * 32 * 8192,
                # 是否開啟映像自動轉正功能
                "enable_rotate": False}]
            }]

response = dashscope.MultiModalConversation.call(
    # 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen-vl-ocr-2025-11-20',
    messages=messages,
    # 設定內建任務為高精識別
    ocr_options={"task": "advanced_recognition"}
)
# 高精識別任務的文本與座標結果從 ocr_result 欄位中擷取
print(response["output"]["choices"][0]["message"].content[0]["ocr_result"])
{
  "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],
                    "text":"讀者對象"
                  },
                  {
                    "rotate_rect":[724,171,34,1346,-89],
                    "text":"如果你是Linux環境下的系統管理員,那麼學會編寫shell指令碼將讓你受益匪淺。本書並未細述安裝"
                  },
                  {
                    "rotate_rect":[745,216,34,1390,-89],
                    "text":"Linux系統的每個步驟,但只要系統已安裝好Linux並能運行起來,你就可以開始考慮如何讓一些日常"
                  },
                  {
                    "rotate_rect":[748,263,34,1394,-89],
                    "text":"的系統管理任務實現自動化。這時shell指令碼編程就能發揮作用了,這也正是本書的作用所在。本書將"
                  },
                  {
                    "rotate_rect":[749,308,34,1395,-89],
                    "text":"示範如何使用shell指令碼來自動處理系統管理任務,包括從監測系統統計資料和資料檔案到為你的老闆"
                  },
                  {
                    "rotate_rect":[123,354,33,146,-89],
                    "text":"產生報表。"
                  },
                  {
                    "rotate_rect":[751,432,34,1402,-89],
                    "text":"如果你是家用Linux愛好者,同樣能從本書中獲益。現今,使用者很容易在諸多組件堆積而成的圖形環境"
                  },
                  {
                    "rotate_rect":[755,477,31,1404,-89],
                    "text":"中迷失。大多數案頭Linux發行版都盡量向一般使用者隱藏系統的內部細節。但有時你確實需要知道內部"
                  },
                  {
                    "rotate_rect":[752,523,34,1401,-89],
                    "text":"發生了什麼。本書將告訴你如何啟動Linux命令列以及接下來要做什麼。通常,如果是執行一些簡單任"
                  },
                  {
                    "rotate_rect":[747,569,34,1395,-89],
                    "text":"務(比如檔案管理),在命令列下操作要比在華麗的圖形介面下方便得多。在命令列下有大量的命令"
                  },
                  {
                    "rotate_rect":[330,614,34,557,-89],
                    "text":"可供使用,本書將會展示如何使用它們。"
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  },
  "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"
}

PDF 文檔解析

qwen3.5-ocr 支援通過 Response API 直接傳入 PDF 檔案進行文檔解析,無需手動將 PDF 拆分為圖片,且輸出長度不受模型最大輸出長度限制,可完整解析長文檔。僅支援 Response API 呼叫,不支援 Chat API。PDF 檔案限制:最大 10 頁且不超過 100 MB。 以下樣本通過 Response API 傳入 PDF 檔案進行文檔解析。
Python
import os
from openai import OpenAI

client = OpenAI(
    # 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下為華北2(北京)地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

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

# 擷取定製任務結果
print(response.output[0].content[0].ocr_result)
如使用不支援 Response API 的早期模型(qwen-vl-ocr-2025-11-20 及之前),可使用影像處理庫(如 Pythonpdf2image)將 PDF 按頁轉換為圖片後,參照多映像輸入逐頁識別。
關於 OpenAI Responses API 的更多用法(如擷取和管理已完成的模型響應),請參見OpenAI 相容 - Responses

傳入本地檔案(Base 64 編碼或檔案路徑)

Qwen-OCR 支援兩種本地檔案上傳方式:Base 64 編碼和檔案路徑。根據檔案大小和SDK類型選擇合適的方式(參見如何選擇檔案上傳方式),兩種方式均需滿足映像限制中的映像規格要求。
  • Base 64 編碼上傳
  • 檔案路徑上傳
將映像轉換為 Base 64 編碼字串後傳入模型,適用於 OpenAI 相容 SDK、DashScope SDK及HTTP方式。
  1. 檔案編碼:將本地映像轉換為 Base 64 編碼;
    #  編碼函數: 將本地檔案轉換為 Base 64 編碼的字串
    def encode_image(image_path):
        with open(image_path, "rb") as image_file:
            return base64.b64encode(image_file.read()).decode("utf-8")
    
    # 將xxxx/eagle.png替換為你本地映像的絕對路徑
    base64_image = encode_image("xxx/eagle.png")
    
  2. 構建Data URL:格式如下:data:[MIME_type];base64,{base64_image}
    1. MIME_type需替換為實際的媒體類型,確保與映像限制表格中MIME Type 的值匹配(如image/jpegimage/png);
    2. base64_image為上一步產生的 Base64 字串;
  3. 調用模型:通過imageimage_url參數傳遞Data URL並調用模型。
  • 檔案路徑傳入
  • Base 64 編碼傳入
傳入檔案路徑僅支援 DashScope Python 和 Java SDK方式調用,不支援 DashScope HTTP和OpenAI 相容方式。
Python
import os
import dashscope

# 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'  # 請將 {WorkspaceId} 替換為業務空間ID

# 將xxxx/test.jpg替換為您本地映像的絕對路徑
local_path = "xxx/test.jpg"
image_path = f"file://{local_path}"
messages = [
    {
        "role": "user",
        "content": [
            {
                "image": image_path,
                # 輸入映像的最小像素閾值,小於該值映像會進行放大,直到總像素大於min_pixels
                "min_pixels": 32 * 32 * 3,
                # 輸入映像的最大像素閾值,超過該值映像會進行縮小,直到總像素低於max_pixels
                "max_pixels": 32 * 32 * 8192,
            },
            # 模型在未設定內建任務時,支援在text欄位中傳入Prompt,若未傳入則使用預設的Prompt:Please output only the text content from the image without any additional descriptions or formatting.
            {
                "text": "請提取車票映像中的發票號碼、車次、起始站、終點站、發車日期和時間點、座位號、席別類型、票價、社會安全號碼碼、購票人姓名。要求準確無誤的提取上述關鍵資訊、不要遺漏和捏造虛假資訊,模糊或者強光遮擋的單個文字可以用英文問號?代替。返回資料格式以json方式輸出,格式為:{'發票號碼':'xxx', '車次':'xxx', '起始站':'xxx', '終點站':'xxx', '發車日期和時間點':'xxx', '座位號':'xxx', '席別類型':'xxx','票價':'xxx', '社會安全號碼碼':'xxx', '購票人姓名':'xxx'"
            },
        ],
    }
]

response = dashscope.MultiModalConversation.call(
    # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # 若沒有配置環境變數,請用百鍊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"])

更多用法

使用限制

映像限制

  • 尺寸與比例:寬度和高度均須大於 10 像素,寬高比不超過 200:1 或 1:200。
  • 像素總量:無嚴格限制,模型會自動縮放;建議不超過 1568 萬像素。
  • 支援的映像格式
    • 解析度在4K (3840x2160)以下,支援的映像格式如下:

      映像格式

      常見副檔名

      MIME Type

      BMP

      .bmp

      image/bmp

      JPEG

      .jpe, .jpeg, .jpg

      image/jpeg

      PNG

      .png

      image/png

      TIFF

      .tif, .tiff

      image/tiff

      WEBP

      .webp

      image/webp

      HEIC

      .heic

      image/heic

    • 解析度處於4K(3840x2160)8K(7680x4320)範圍,僅支援 JPEG、JPG 、PNG 格式。
  • 映像大小
    • 公網URL和本地路徑:qwen3.5-ocr 單張映像不超過 20MB,其他版本不超過 10MB
    • Base 64 編碼:編碼後字串不超過 10MB
    如需壓縮檔體積請參見 如何將映像或視頻壓縮到滿足要求的大小

模型限制

  • System Message:Qwen-OCR 不支援自訂 System Message,模型內部使用固定的 System Message,所有指令須通過 User Message 傳入。
  • 多輪對話qwen3.5-ocr起支援多輪對話,可不傳入映像URL進行純文字追問。qwen-vl-ocr-2025-11-20及更早版本僅處理最新一條訊息,不保留上下文。
  • 幻覺風險:映像中文字過小或解析度低時,模型可能產生幻覺。對於非文字提取相關的問題,模型的準確性不作保證。
  • 無法處理文字檔
    • 含映像資料的檔案:遵循應用於生產環境中的建議,先轉換為映像序列再處理。
    • 純文字或結構化資料檔案:使用Qwen-Long等長文本模型處理。

支援的證照與票據類型

資訊抽取任務支援從以下常見證照、票據、許可證中提取結構化資訊。
  • 護照與出入境證件:中國護照、澳門護照、往來港澳通行證、往來台灣通行證、港澳居民來往內地通行證。
  • 車輛證件與交易發票:機動車駕駛證、機動車銘牌、車輛合格證、機動車登記證、機動車銷售統一發票、二手車銷售發票。
  • 發票與稅收票據:加值稅普通發票(卷票)、定額專用發票、通用機打發票、稅收完稅證明、中央非稅收入統一票據。
  • 交通出行票據:12306高鐵票、火車票、船票、高速公路車輛通行費票據、高速公路機打發票。
  • 金融卡證與票據:信用卡、電子銀行承兌匯票、收款收據、社會保障卡。
  • 營業執照與經營許可:營業執照、食品經營許可證、食品生產許可證、藥品經營許可證、醫學器械經營許可證。
  • 不動產權證:不動產權認證。
  • 境外身份證件:香港身份證、澳門身份證、印尼身份證、泰國身份證、越南身份證、馬來西亞身份證、菲律賓身份證、印度身份證、土耳其身份證、巴基斯坦身份證、墨西哥身份證、英國身份證、美國身份證。
  • 境外護照與駕照:印度護照、新加坡護照、泰國護照、美國護照、澳大利亞護照、阿聯酋護照、菲律賓駕照、日本駕照、美國駕照。

計費與限流

  • 計費:Qwen-OCR 為多模態模型,總費用 = 輸入 token 數 × 輸入單價 + 輸出 token 數 × 輸出單價。賬單查看或儲值請前往控制台費用與成本頁面。
    • 計算映像的 Token:可通過以下代碼估算映像 token 用量,實際計費以 API 響應為準。
      計算公式:映像 token 數 = (h_bar * w_bar) / token_pixels + 2
      • h_bar * w_bar 是模型預先處理後的映像尺寸。模型在推理前會將映像縮放至像素上限以內,該上限由 max_pixels 參數決定。
      • token_pixels表示每Token對應的像素數
        • qwen3.5-ocrqwen-vl-ocrqwen-vl-ocr-2025-11-20qwen-vl-ocr-latest固定為32*32(即1024
        • 其他模型固定為28*28(即784)。
      以下代碼展示模型內部的映像縮放邏輯,可用於估算 token 用量,實際計費以API響應為準。
      import math
      from PIL import Image
      
      def smart_resize(image_path, min_pixels, max_pixels):
          """
          對映像進行預先處理。
      
          參數:
              image_path:映像的路徑
          """
          # 開啟指定的PNG圖片檔案
          image = Image.open(image_path)
      
          # 擷取圖片的原始大小
          height = image.height
          width = image.width
          # 將高度調整為28或32的整數倍
          h_bar = round(height / 32) * 32
          # 將寬度調整為28或32的整數倍
          w_bar = round(width / 32) * 32
      
          # 對映像進行縮放處理,調整像素的總數在範圍[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
      
      # 將xxx/test.png替換為您本地的映像路徑
      h_bar, w_bar = smart_resize("xxx/test.png", min_pixels=32 * 32 * 3, max_pixels=8192 * 32 * 32)
      print(f"縮放後的映像尺寸為:高度為{h_bar},寬度為{w_bar}")
      
      # 計算映像的Token數:總像素除以32 * 32
      token = int((h_bar * w_bar) / (32 * 32))
      
      # <|vision_bos|> 和 <|vision_eos|> 作為視覺標記,每個需計入 1個Token
      print(f"映像的總Token數為{token + 2}")
      
  • 限流:Qwen-OCR 模型的限流規則參見限流
  • 免費額度(僅新加坡地區):自開通百鍊或模型申請通過之日起 90 天內,Qwen-OCR 提供 100 萬 token 免費額度。

應用於生產環境

  • 映像預先處理
    • 確保映像清晰、光照均勻,避免過度壓縮
      • 儲存和傳輸時優先使用無損格式(如 PNG),避免壓縮導致資訊丟失。
      • 對含噪點映像,使用均值濾波、中值濾波等降噪演算法提升清晰度。
      • 光照不均的映像,使用自適應長條圖均衡化等演算法校正亮度和對比。
    • 傾斜映像:在 DashScope SDK中設定 enable_rotate: true 可顯著提升識別效果。
    • 過小或超大映像:使用 min_pixelsmax_pixels 參數控制縮允許存取為
      • min_pixels:確保小圖放大後可識別細節,保持預設值即可。
      • max_pixels:防止超大圖消耗過多 token,大多數情境使用預設值即可。若小字識別不清,可適當調高 max_pixels,但會增加 token 消耗。
  • 結果校正:模型識別結果可能存在誤差。關鍵業務情境建議增加人工審核環節,或引入格式校正規則(如社會安全號碼、銀行卡號校正)。
  • 批量調用:大規模、非即時情境可使用 Batch API非同步處理批量任務,可降低調用成本。

常見問題

根據SDK類型和檔案大小選擇上傳方式:

檔案類型

檔案規格

DashScope SDK(Python、Java)

OpenAI 相容 / DashScope HTTP

映像

大於 7MB 小於 20MB

傳入本地路徑

僅支援公網 URL,建議使用阿里雲Object Storage Service服務

小於 7MB

傳入本地路徑

Base 64 編碼

Base 64 編碼會增巨量資料體積約 33%,原始檔案應小於 7 MB。
Base64 和本地路徑方式無需服務端下載,網路不穩定時穩定性更高。
擷取模型輸出的文字定位結果後,參照draw_bbox.py代碼將檢測框及標籤繪製到原圖上。
使用 qwen3.5-ocr 時,如果自訂 Prompt 中包含完整的 HTML 結構(例如 <html><body>...</body></html>),模型可能沿用該結構,將 OCR 結果以 HTML 格式返回,而非純文字,此時返回內容看起來像是空內容或帶前端標籤的內容。僅包含簡單標籤(例如單個 <br>)不會觸發該現象。可按以下任一方式處理:
  • 檢查 Prompt 是否包含完整的 HTML 標籤結構。如有,改用純文字指令重試。例如將 <html><body>請提取圖片中的所有文字</body></html> 改為 請提取圖片中的所有文字
  • 若不確定 Prompt 是否會影響輸出格式,可不傳 text 欄位,使用模型預設的 Prompt。
  • 改用 qwen3.7-plus 模型,該模型傳入相同的 HTML 結構 Prompt 仍返回純文字結果。

API參考

Qwen-OCR 模型的輸入輸出參數詳見Qwen-OCR API參考

錯誤碼

如果模型調用失敗並返回報錯資訊,請參見錯誤碼進行解決。
Token Plan
模型體驗
用量統計與效能監控
資產中心
服務支援