Tous les produits
Search
Centre de documentation

Intelligent Media Management:Reconnaissance de codes QR

Dernière mise à jour :Sep 22, 2026

Cette rubrique décrit comment utiliser la fonctionnalité de reconnaissance de codes QR.

Scénarios

  • Paiement par code QR : les payeurs scannent un code QR pour effectuer des paiements.

  • Marketing et publicité avec codes QR : les spécialistes du marketing et les annonceurs ajoutent des codes QR aux affiches et aux emballages de produits pour promouvoir leurs offres.

Présentation

Intelligent Media Management (IMM) propose une fonctionnalité de reconnaissance de codes QR qui détecte la position et le contenu d'un ou plusieurs codes QR ou codes-barres à partir de fichiers image, tels que des photos ou des captures d'écran. Le service renvoie les informations de position ainsi que le texte contenu dans les codes. Les informations de position incluent les coordonnées x et y du coin supérieur gauche, la largeur (width) et la hauteur, comme illustré dans la figure suivante.

  • Code QR

    figqcode11

  • Code-barres

    image

Utilisez la fonctionnalité de reconnaissance de codes QR pour implémenter la lecture et le scan de codes QR ou de codes-barres dans vos applications métier. Vous pouvez également développer des fonctionnalités permettant de bloquer ou de pixelliser les codes QR ou les codes-barres présents dans les images en vous appuyant sur cette même fonctionnalité.

Prérequis

  • Une paire AccessKey a été créée et obtenue. Pour plus d'informations, consultez Créer une AccessKey.

  • Object Storage Service (OSS) est activé, un bucket a été créé et des objets ont été téléchargés dans ce bucket. Pour plus d'informations, consultez Télécharger des objets.

  • IMM est activé. Pour plus d'informations, consultez Activer IMM.

  • Un projet a été créé dans la console IMM. Pour plus d'informations, consultez Créer un projet.

    Remarque
    • Appelez l'opération CreateProject pour créer un projet. Pour plus d'informations, consultez CreateProject.

    • Appelez l'opération ListProjects pour interroger les projets existants dans une région spécifique. Pour plus d'informations, consultez ListProjects.

Utilisation

Appelez l'opération DetectImageCodes pour détecter les codes-barres dans une image.

Remarque

La détection de codes QR permet d'identifier jusqu'à cinq codes QR dans une seule image.

Exemple de détection de code QR

Informations sur l'image

  • Projet IMM : test-project

  • Emplacement de stockage de l'image : oss://test-bucket/test-object1.jpg

  • Exemple d'image

    figqcode11

Exemple de requête

{
    "ProjectName": "test-project",
    "SourceURI": "oss://test-bucket/test-object1.jpg",
}

Exemple de réponse

{
  "Codes": [
    {
      "Type": "qrcode",
      "Content": "https://www.aliyun.com/product/imm",
      "Boundary": {
        "Left": 447,
        "Top": 288,
        "Height": 720,
        "Width": 767
      }
    }
  ],
  "RequestId": "9692C8B4-2AAF-55DE-91A0-B0B53725FBAB"
}
Remarque

L'exemple de réponse ci-dessus indique que l'image contient un code QR.

Exemple de code

L'exemple de code suivant montre comment utiliser le SDK IMM pour Python afin de détecter des codes QR dans une image.

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os
from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AccessKey secret to initialize the client. 
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Specify the IMM endpoint. 
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user. 
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html. 
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        # Initialize the client. 
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object1.jpg'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation. 
            client.detect_image_codes_with_options(detect_image_codes_request, runtime)
        except Exception as error:
            # Print the error message if necessary. 
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user. 
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html. 
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        # Initialize the client. 
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object1.jpg'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation. 
            await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
        except Exception as error:
            # Print the error message if necessary. 
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Exemple de détection de code-barres

Informations sur l'image

  • Projet IMM : test-project

  • Emplacement de stockage de l'image : oss://test-bucket/test-object2.jpg

  • Exemple d'image

    test-object

Exemple de requête

{
    "ProjectName": "test-project",
    "SourceURI": "oss://test-bucket/test-object2.jpg",
}

Exemple de réponse

{
  "Codes": [
    {
      "Type": "barcode",
      "Confidence": 0.433,
      "Content": "",
      "Boundary": {
        "Left": 162,
        "Top": 393,
        "Height": 86,
        "Width": 78
      }
    }
  ],
  "RequestId": "391A3AEC-FF64-5450-96DF-18DBDC234B2F"
}
Remarque

L'exemple de réponse ci-dessus indique que l'image contient un code-barres.

Exemple de code

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os
from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AccessKey secret to initialize the client. 
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Specify the IMM endpoint. 
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user. 
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html. 
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        # Initialize the client. 
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object2.jpg'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation. 
            client.detect_image_codes_with_options(detect_image_codes_request, runtime)
        except Exception as error:
            # Print the error message if necessary. 
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user. 
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html. 
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        # Initialize the client. 
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object2.jpg'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation. 
            await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
        except Exception as error:
            # Print the error message if necessary. 
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])