Todos os produtos
Search
Central de documentação

Object Storage Service:QR code recognition

Última atualização: Jul 03, 2026

Detecte QR codes e códigos de barras em imagens armazenadas no OSS. A resposta retorna o texto decodificado de cada código e as coordenadas da caixa delimitadora na imagem.

Esse recurso usa o Intelligent Media Management (IMM) e suporta apenas processamento síncrono.

Casos de uso

  • Fluxos de pagamento: decodifique QR codes em capturas de tela ou recibos de pagamento.

  • Marketing e publicidade: extraia URLs ou informações de produtos de QR codes em pôsteres digitalizados ou imagens de embalagens.

  • Moderação de conteúdo: identifique a posição de QR codes ou códigos de barras em imagens enviadas por usuários para aplicar redação ou desfoque nas etapas seguintes.

Limitações

  • Suporta apenas processamento síncrono (x-oss-process).

  • Detecta até cinco códigos por imagem.

  • Não permite acesso anônimo.

  • A caixa delimitadora usa representação retangular (Left, Top, Width, Height).

Pré-requisitos

Antes de começar, verifique se você:

Detectar QR codes e códigos de barras

Use a ação image/codes para detectar todos os QR codes e códigos de barras em um objeto de imagem armazenado no OSS.

Python

Requer o OSS SDK for Python 2.18.4 ou posterior.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Load access credentials from environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region where the bucket is located.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the region where the bucket is located.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

# Specify the full object path. Example: exampledir/example.jpg.
key = 'example.jpg'

try:
    # Submit a QR code detection request.
    result = bucket.get_object(key, process='image/codes')
    print(result.read().decode('utf-8'))
except oss2.exceptions.OssError as e:
    print("Error:", e)

Java

Requer o OSS SDK for Java 3.17.4 ou posterior.

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws ClientException {
        // Specify the endpoint of the region where the bucket is located.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Specify the region where the bucket is located. Example: cn-hangzhou.
        String region = "cn-hangzhou";
        // Load access credentials from environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider =
            CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the bucket name.
        String bucketName = "examplebucket";
        // Specify the full object path. Example: exampledir/example.jpg.
        String key = "example.jpg";

        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Submit a QR code detection request.
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
            getObjectRequest.setProcess("image/codes");

            OSSObject ossObject = ossClient.getObject(getObjectRequest);

            // Read the JSON response.
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
                baos.write(buffer, 0, bytesRead);
            }
            System.out.println(baos.toString("UTF-8"));
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            ossClient.shutdown();
        }
    }
}

Go

Requer o OSS SDK for Go 3.0.2 ou posterior.

package main

import (
	"fmt"
	"io"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Load access credentials from environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSS client. Specify the endpoint and region where the bucket is located.
	client, err := oss.New(
		"https://oss-cn-hangzhou.aliyuncs.com", "", "",
		oss.SetCredentialsProvider(&provider),
		oss.AuthVersion(oss.AuthV4),
		oss.Region("cn-hangzhou"),
	)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucket, err := client.Bucket("examplebucket")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Submit a QR code detection request.
	body, err := bucket.GetObject("example.jpg", oss.Process("image/codes"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	defer body.Close()

	data, err := io.ReadAll(body)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println(string(data))
}

PHP

Requer o OSS SDK for PHP 2.7.0 ou posterior.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;

try {
    // Load access credentials from environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
    $provider = new EnvironmentVariableCredentialsProvider();
    // Specify the endpoint of the region where the bucket is located.
    $endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
    // Specify the bucket name.
    $bucket = 'examplebucket';
    // Specify the full object path. Example: exampledir/example.jpg.
    $key = 'example.jpg';

    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    // Submit a QR code detection request.
    $options[$ossClient::OSS_PROCESS] = "image/codes";
    $result = $ossClient->getObject($bucket, $key, $options);
    var_dump($result);
} catch (OssException $e) {
    printf($e->getMessage() . "\n");
}

Referência da API

Para acessar a API diretamente, inclua o parâmetro x-oss-process=image/codes em uma solicitação GetObject. Calcule o cabeçalho Authorization com a versão de assinatura 4. Para ver a especificação completa do GetObject, consulte GetObject.

Exemplo de solicitação

GET /example.jpg?x-oss-process=image/codes HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:56:50 GMT
Authorization: SignatureValue

Exemplo de resposta

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:56:52 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 64
Connection: keep-alive
x-oss-request-id: 64BA48531253C5383707D5B3
ETag: "2CE2EA370531B7CC1D23BE6015CF5DA5"
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 453

{
  "RequestId": "3B7BD09F-18D8-56F0-90B7-889FBD9FFF70",
  "Codes": [
    {
      "Content": "https://www.aliyun.com/product/imm",
      "Boundary": {
        "Width": 741,
        "Height": 706,
        "Left": 460,
        "Top": 295
      }
    }
  ]
}

Campos da resposta

O array Codes contém uma entrada para cada código detectado.

Campo

Tipo

Descrição

Content

String

Texto ou URL decodificada do QR code ou código de barras

Boundary.Left

Integer

Coordenada X do canto superior esquerdo, em pixels

Boundary.Top

Integer

Coordenada Y do canto superior esquerdo, em pixels

Boundary.Width

Integer

Largura da caixa delimitadora, em pixels

Boundary.Height

Integer

Altura da caixa delimitadora, em pixels

Para obter o esquema completo da resposta, consulte DetectImageCodes .

Permissões

Para usar o reconhecimento síncrono de QR code (x-oss-process=image/codes), conceda as permissões a seguir.

Permissões do chamador (usuário RAM ou função RAM)

Conceda permissões ao chamador por meio de uma política do RAM ou de uma política de bucket.

API

Ação

Descrição

GetObject

oss:GetObject

Lê a imagem de origem do OSS

kms:Decrypt

Necessária apenas se o objeto estiver criptografado com KMS (X-Oss-Server-Side-Encryption: KMS)

oss:ProcessImm

Invoca o processamento de dados do IMM a partir do OSS

PostProcessTask

oss:PostProcessTask

Necessária apenas para processamento assíncrono (x-oss-async-process)

Permissões da função de serviço do IMM

O IMM chama o OSS em seu nome usando a função de serviço padrão AliyunIMMDefaultRole (ARN: acs:ram:*:<account-id>:role/aliyunimmdefaultrole). Conceda a esta função as permissões a seguir.

API

Ação

Descrição

GetObject

oss:GetObject

Lê a imagem de origem

kms:Decrypt

Necessária apenas se o objeto estiver criptografado com KMS

Permissões do IMM

API

Ação

Descrição

DetectImageCodes

imm:DetectImageCodes

Executa o reconhecimento de QR code no IMM

Faturamento

O reconhecimento de QR code gera cobranças no OSS e no IMM. Os preços unitários variam conforme a região.

Cobranças do OSS: consulte Preços do OSS para ver as tarifas atuais.

Item de faturamento

Base

Solicitações GET

Por solicitação bem-sucedida

Tráfego de saída

Tamanho dos dados acessados por um endpoint público (por exemplo, oss-cn-hangzhou.aliyuncs.com) ou endpoint de aceleração

Recuperação de dados IA

Tamanho dos objetos IA recuperados

Recuperação de dados Archive

Tamanho dos objetos Archive recuperados quando o acesso em tempo real está ativado no bucket

Aceleração de transferência

Tamanho dos dados quando a aceleração de transferência está ativada

Cobranças do IMM: consulte Faturamento do IMM para ver as tarifas atuais.

Item de faturamento

Base

ImageQRCodes

Por solicitação DetectImageCodes bem-sucedida