このトピックでは、QRコード認識機能の使用方法について説明します。
シナリオ
QRコードによる支払い: 支払者はQRコードをスキャンして支払いを完了できます。
QRコードによるマーケティングと広告: マーケティング担当者と広告主は、ポスターや製品パッケージにQRコードを追加して製品を宣伝できます。
概要
Intelligent Media Management (IMM) は、写真やスクリーンショットなどの画像ファイルから1つまたは複数のQRコードまたはバーコードの位置と内容を検出し、コードが伝える位置情報とテキスト情報を返すQRコード認識機能を提供します。位置情報には、次の図に示すように、左上隅のx軸、左上隅のy軸、幅、高さが含まれます。
QRコード
バーコード
QRコード認識機能を使用して、ビジネスアプリケーションでQRコードまたはバーコードのスキャンと読み取りを実装できます。また、QRコード認識機能に基づいて、画像内のQRコードまたはバーコードをブロックまたはピクセル化する機能を開発することもできます。
前提条件
AccessKeyペアが作成され、取得されています。詳細については、AccessKeyペアの作成を参照してください。
オブジェクトストレージサービス (OSS) がアクティブ化され、バケットが作成され、オブジェクトがバケットにアップロードされています。詳細については、オブジェクトのアップロードを参照してください。
IMMがアクティブ化されています。詳細については、IMMのアクティブ化を参照してください。
IMMコンソールでプロジェクトが作成されています。詳細については、プロジェクトの作成を参照してください。
説明CreateProjectオペレーションを呼び出してプロジェクトを作成できます。詳細については、CreateProjectを参照してください。
ListProjectsオペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、ListProjectsを参照してください。
使用方法
DetectImageCodesオペレーションを呼び出して、画像からバーコードを検出します。
QRコード検出では、画像から最大5つのQRコードを検出できます。
QRコード検出の例
画像情報
IMMプロジェクト: test-project
画像の保存場所: oss://test-bucket/test-object1.jpg
サンプル画像
リクエストの例
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object1.jpg",
}
レスポンスの例
{
"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"
}
上記のレスポンス例は、画像にQRコードが含まれていることを示しています。
サンプルコード
次のサンプルコードは、IMM SDK for Pythonを使用して画像からQRコードを検出する方法の例を示しています。
# -*- 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:
"""
// AccessKey IDとAccessKeyシークレットを使用してクライアントを初期化します。
@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
)
# IMM エンドポイントを指定します。
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。 セキュリティリスクを防ぐため、RAM ユーザーとして API オペレーションを呼び出したり、日常の O&M を実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアが読み取られます。 環境変数の設定方法については、https://help.aliyun.com/document_detail/2361894.html をご参照ください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# クライアントを初期化します。
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:
# API オペレーションの応答を出力することを選択できます。
client.detect_image_codes_with_options(detect_image_codes_request, runtime)
except Exception as error:
# 必要に応じて、エラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。 セキュリティリスクを防ぐため、RAM ユーザーとして API オペレーションを呼び出したり、日常の O&M を実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアが読み取られます。 環境変数の設定方法については、https://help.aliyun.com/document_detail/2361894.html をご参照ください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# クライアントを初期化します。
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:
# API オペレーションの応答を出力することを選択できます。
await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
except Exception as error:
# 必要に応じて、エラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
バーコード検出の例
画像情報
IMMプロジェクト: test-project
画像の保存場所: oss://test-bucket/test-object2.jpg
サンプル画像
リクエストの例
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object2.jpg",
}
レスポンスの例
{
"Codes": [
{
"Type": "barcode",
"Confidence": 0.433,
"Content": "",
"Boundary": {
"Left": 162,
"Top": 393,
"Height": 86,
"Width": 78
}
}
],
"RequestId": "391A3AEC-FF64-5450-96DF-18DBDC234B2F"
}
上記のレスポンス例は、画像にバーコードが含まれていることを示しています。
サンプルコード
# -*- 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:
"""
// AccessKey IDとAccessKeyシークレットを使用してクライアントを初期化します。
@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
)
# IMM エンドポイントを指定します。
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。 セキュリティリスクを防ぐため、RAM ユーザーとして API オペレーションを呼び出したり、日常の O&M を実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアが読み取られます。 環境変数の設定方法については、https://help.aliyun.com/document_detail/2361894.html をご参照ください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# クライアントを初期化します。
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:
# API オペレーションの応答を出力することを選択できます。
client.detect_image_codes_with_options(detect_image_codes_request, runtime)
except Exception as error:
# 必要に応じて、エラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。 セキュリティリスクを防ぐため、RAM ユーザーとして API オペレーションを呼び出したり、日常の O&M を実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアが読み取られます。 環境変数の設定方法については、https://help.aliyun.com/document_detail/2361894.html をご参照ください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# クライアントを初期化します。
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:
# API オペレーションの応答を出力することを選択できます。
await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
except Exception as error:
# 必要に応じて、エラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])