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

-
Code-barres

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.
RemarqueAppelez 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.
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

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"
}
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

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"
}
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:])