All Products
Search
Document Center

Object Storage Service:Pengenalan kode QR

Last Updated:Aug 14, 2026

Fitur pengenalan kode QR mendeteksi beberapa kode QR atau barcode dalam berbagai gambar serta mengembalikan kotak pembatas dan konten teks untuk setiap kode yang terdeteksi. Sistem menganotasi kotak pembatas setiap kode QR atau barcode dan menampilkan konten teksnya dalam output.

Ikhtisar

Intelligent Media Management (IMM) menyediakan fitur pengenalan kode QR yang dapat digunakan untuk mendeteksi posisi dan konten satu atau beberapa kode QR atau barcode dari file gambar seperti foto dan tangkapan layar, serta mengembalikan informasi posisi dan teks yang disampaikan oleh kode tersebut. Informasi posisi mencakup koordinat sumbu-x pojok kiri atas, sumbu-y pojok kiri atas, lebar, dan tinggi, seperti yang ditunjukkan pada gambar berikut.

  • Kode QR

    figqcode11

  • Barcode

    image

Anda dapat menggunakan fitur pengenalan kode QR untuk mengimplementasikan pemindaian dan pembacaan kode QR atau barcode dalam aplikasi bisnis Anda, atau mengembangkan fitur untuk memblokir atau mengaburkan kode QR atau barcode dalam gambar berdasarkan hasil deteksi fitur ini.

Skenario

  • Pembayaran dengan kode QR: Pembayar dapat memindai kode QR untuk menyelesaikan pembayaran.

  • Pemasaran dan iklan dengan kode QR: Pemasar dan pengiklan dapat menambahkan kode QR ke poster dan kemasan produk untuk mempromosikan produk.

Catatan penggunaan

  • Hanya pemrosesan sinkron (x-oss-process) yang didukung.

  • Maksimal lima kode QR dapat dideteksi dalam satu gambar.

  • Akses anonim akan ditolak.

Cara menggunakan

Prasyarat

Pengenalan kode QR

Action: image/codes

Java

Gunakan Java SDK 3.17.4 atau versi lebih baru.

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 {
        // Setel endpoint ke endpoint wilayah tempat bucket berada.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan informasi wilayah yang sesuai dengan endpoint, misalnya cn-hangzhou.
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket.
        String bucketName = "examplebucket";
        // Jika gambar berada di direktori root bucket, tentukan nama gambarnya. Jika tidak berada di direktori root, tentukan path lengkapnya, seperti exampledir/example.jpg.
        String key = "example.jpg";

        // Buat instance OSSClient.
  // Setelah instance OSSClient tidak digunakan lagi, panggil metode shutdown untuk melepaskan sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Bangun instruksi pemrosesan untuk pengenalan kode QR.
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
            getObjectRequest.setProcess("image/codes");

            // Gunakan metode getObject dan teruskan instruksi pemrosesan melalui parameter process.
            OSSObject ossObject = ossClient.getObject(getObjectRequest);

            // Baca dan cetak informasinya.
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
                baos.write(buffer, 0, bytesRead);
            }
            String imageCodes = baos.toString("UTF-8");
            System.out.println("Image Codes:");
            System.out.println(imageCodes);
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            // Matikan OSSClient.
            ossClient.shutdown();
        }
    }
}

Python

Gunakan Python SDK 2.18.4 atau versi lebih baru.

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

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Setel endpoint ke endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), setel endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah umum Alibaba Cloud.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

# Jika gambar berada di direktori root bucket, tentukan nama gambarnya. Jika tidak berada di direktori root, tentukan path lengkapnya, seperti exampledir/example.jpg.
key = 'example.jpg'

# Bangun instruksi pemrosesan untuk pengenalan kode QR.
process = 'image/codes'

try:
    # Gunakan metode get_object dan teruskan instruksi pemrosesan melalui parameter process.
    result = bucket.get_object(key, process=process)

    # Baca dan cetak informasinya.
    image_codes = result.read().decode('utf-8')
    print("Image Codes:")
    print(image_codes)
except oss2.exceptions.OssError as e:
    print("Error:", e)

Go

Gunakan Go SDK 3.0.2 atau versi lebih baru.

package main

import (
	"fmt"
	"io"
	"os"

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

func main() {
	// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Buat instance OSSClient.
	// Setel endpoint ke endpoint bucket. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), setel endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Sesuaikan endpoint berdasarkan wilayah aktual Anda.
	// Tentukan ID wilayah umum Alibaba Cloud, misalnya cn-hangzhou.
	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)
	}
	// Tentukan nama bucket, misalnya examplebucket.
	bucketName := "examplebucket"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Jika gambar berada di direktori root bucket, tentukan nama gambarnya. Jika tidak berada di direktori root, tentukan path lengkapnya, seperti exampledir/example.jpg.
	// Gunakan metode oss.Process untuk membangun instruksi pemrosesan untuk pengenalan kode QR.
	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("data:", string(data))
}

PHP

Gunakan PHP SDK 2.7.0 atau versi lebih baru.

<?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 {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
    $provider = new EnvironmentVariableCredentialsProvider(); 
    // Setel endpoint ke endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), setel endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
    $endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
    // Tentukan nama bucket, misalnya examplebucket.
    $bucket = 'examplebucket';
    // Jika gambar berada di direktori root bucket, tentukan nama gambarnya. Jika tidak berada di direktori root, tentukan path lengkapnya, seperti exampledir/example.jpg.
    $key = 'example.jpg'; 

    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Tentukan ID wilayah umum Alibaba Cloud.
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
  // Bangun instruksi pemrosesan untuk pengenalan kode QR.
  $options[$ossClient::OSS_PROCESS] = "image/codes";
  $result = $ossClient->getObject($bucket,$key,$options);
  var_dump($result);
} catch (OssException $e) {
  printf($e->getMessage() . "\n");
  return;
}

Parameter

Action: image/codes

Catatan

Untuk informasi selengkapnya tentang parameter respons, lihat DetectImageCodes - Mendeteksi kode QR dalam gambar.

Operasi API terkait

Jika aplikasi Anda memerlukan kustomisasi tingkat tinggi, Anda dapat langsung mengirim permintaan REST API. Anda harus menulis kode secara manual untuk menghitung signature. Untuk informasi selengkapnya tentang cara menghitung header permintaan Authorization, lihat Signature V4 (disarankan).

Anda dapat memproses gambar dengan menambahkan parameter x-oss-process ke operasi GetObject. Untuk informasi selengkapnya, lihat GetObject.

Contoh pemrosesan

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

Contoh respons

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

Izin

Akun Alibaba Cloud memiliki izin penuh secara default. Pengguna Resource Access Management (RAM) atau peran RAM tidak memiliki izin secara default. Anda dapat memberikan izin kepada pengguna RAM atau peran RAM menggunakan kebijakan RAM atau kebijakan bucket.

  • Berikan izin kepada pengguna untuk mengakses sumber daya terkait.

    • Berikan izin kepada pengguna untuk menggunakan OSS dalam pemrosesan data.

      API

      Action

      Deskripsi

      GetObject

      oss:GetObject

      Mengunduh objek.

      kms:Decrypt

      Izin ini diperlukan untuk mengunduh objek jika metadata objek mencakup X-Oss-Server-Side-Encryption: KMS.

      None

      oss:ProcessImm

      Izin untuk menggunakan IMM dalam pemrosesan data melalui OSS.

      PostProcessTask

      oss:PostProcessTask

      Izin untuk menggunakan fitur pemrosesan data dengan mengirim permintaan POST, seperti untuk pemrosesan asinkron (x-oss-async-process).

    • Berikan izin kepada pengguna untuk menggunakan fitur pengenalan kode QR IMM.

      API

      Action

      Deskripsi

      DetectImageCodes

      imm:DetectImageCodes

      Izin untuk menggunakan IMM dalam pengenalan kode QR.

  • Berikan peran layanan untuk IMM (peran default adalah AliyunIMMDefaultRole, dan ARN-nya adalah acs:ram:*:<account-id>:role/aliyunimmdefaultrole) izin untuk mengakses sumber daya terkait dalam pemrosesan data.

    API

    Action

    Deskripsi

    GetObject

    oss:GetObject

    Mengunduh objek.

    kms:Decrypt

    Izin ini diperlukan untuk mengunduh objek jika metadata objek mencakup X-Oss-Server-Side-Encryption: KMS.

Penagihan

Pengenalan kode QR melibatkan pemanggilan layanan IMM, yang menghasilkan biaya untuk OSS dan IMM. Biaya berikut dikenakan:

  • OSS: Item yang dapat ditagih berikut berlaku. Untuk informasi selengkapnya tentang harga, lihat Harga OSS:

    API

    Item yang dapat ditagih

    Deskripsi

    GetObject

    Permintaan GET

    Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.

    Lalu lintas keluar Internet

    Jika Anda memanggil operasi GetObject menggunakan titik akhir publik, seperti oss-cn-hangzhou.aliyuncs.com, atau titik akhir percepatan, seperti oss-accelerate.aliyuncs.com, Anda dikenai biaya lalu lintas keluar Internet berdasarkan ukuran data.

    Pengambilan data IA

    Jika data IA diambil, Anda dikenai biaya pengambilan data IA berdasarkan ukuran data IA yang diambil.

    Pengambilan objek Archive dalam bucket yang diaktifkan akses real-time

    Jika Anda mengambil objek Archive dalam bucket yang diaktifkan akses real-time, Anda dikenai biaya pengambilan data Archive berdasarkan ukuran objek Archive yang diambil.

    Biaya akselerasi transfer

    Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda dikenai biaya akselerasi transfer berdasarkan ukuran data.

  • IMM: Item yang dapat ditagih IMM berikut berlaku:

    API

    Item yang dapat ditagih

    Deskripsi

    DetectImageCodes

    ImageQRCodes

    Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.