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="sk-xxx"
        # 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下为华北2(北京)地域的URL,调用时请将 {WorkspaceId} 替换为真实的业务空间ID,各地域的URL不同。
        base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen3.5-ocr",
        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

# 以下为华北2(北京)地域的URL,调用时请将 {WorkspaceId} 替换为真实的业务空间ID,各地域的URL不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.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",
                # 输入图像的最小像素阈值,小于该值图像会进行放大,直到总像素大于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不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen3.5-ocr',
    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

传入本地文件(Base64 编码或文件路径)

Qwen-OCR 支持两种本地文件上传方式:Base64 编码和文件路径。根据文件大小和SDK类型选择合适的方式(参见如何选择文件上传方式),两种方式均需满足图像限制中的图像规格要求。
  • Base64 编码上传
  • 文件路径上传
将图像转换为 Base64 编码字符串后传入模型,适用于 OpenAI 兼容 SDK、DashScope SDK及HTTP方式。
  1. 文件编码:将本地图像转换为 Base64 编码;
    #  编码函数: 将本地文件转换为 Base64 编码的字符串
    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并调用模型。
  • 文件路径传入
  • Base64 编码传入
传入文件路径仅支持 DashScope Python 和 Java SDK方式调用,不支持 DashScope HTTP和OpenAI 兼容方式。
Python
import os
import dashscope
from dashscope import MultiModalConversation

# 以下为华北2(北京)地域的URL,调用时请将 {WorkspaceId} 替换为真实的业务空间ID,各地域的URL不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"

# 将xxxx/test.png替换为您本地图像的绝对路径
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,
                # 是否开启图像自动转正功能
                "enable_rotate": False,
            },
            # 模型未设置内置任务时,支持在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 = MultiModalConversation.call(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
   # 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.5-ocr",
    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
    • Base64 编码:编码后字符串不超过 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,建议使用阿里云对象存储服务

小于 7MB

传入本地路径

Base64 编码

Base64 编码会增大数据体积约 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
模型体验
模型调优
模型压缩目录节点
用量统计与性能监控
资产中心
服务支持
文字提取(Qwen-OCR) - 阿里云百炼