Azure Cognitive Services Computer Vision SDK untuk Python
Layanan Computer Vision memberi pengembang akses ke algoritma tingkat lanjut untuk memproses gambar dan mengembalikan informasi. Algoritma Computer Vision menganalisis konten gambar dengan cara yang berbeda, tergantung pada fitur visual yang Anda minati.
Anda dapat menggunakan Computer Vision di aplikasi Anda untuk:
- Menganalisis gambar untuk wawasan
- Mengekstrak teks dari gambar
- Hasilkan gambar mini
Mencari dokumentasi lainnya?
Prasyarat
- Langganan Azure - Membuat akun gratis
- Sumber daya Azure Computer Vision
- Python 3.6+
Jika Anda memerlukan akun Computer Vision API, Anda dapat membuatnya dengan perintah Azure CLI ini:
RES_REGION=westeurope
RES_GROUP=<resourcegroup-name>
ACCT_NAME=<computervision-account-name>
az cognitiveservices account create \
--resource-group $RES_GROUP \
--name $ACCT_NAME \
--location $RES_REGION \
--kind ComputerVision \
--sku S1 \
--yes
Penginstalan
Instal Azure Cognitive Services Computer Vision SDK dengan pip, secara opsional dalam lingkungan virtual.
Mengonfigurasi lingkungan virtual (opsional)
Meskipun tidak diperlukan, Anda dapat menjaga sistem dasar dan lingkungan Azure SDK Anda terisolasi satu sama lain jika Anda menggunakan lingkungan virtual. Jalankan perintah berikut untuk mengonfigurasi lalu masukkan lingkungan virtual dengan venv, seperti cogsrv-vision-env
:
python3 -m venv cogsrv-vision-env
source cogsrv-vision-env/bin/activate
Pemasangan SDK
Instal Azure Cognitive Services Computer Vision SDK untuk paket Python dengan pip:
pip install azure-cognitiveservices-vision-computervision
Autentikasi
Setelah Anda membuat sumber daya Computer Vision, Anda memerlukan wilayahnya, dan salah satu kunci akunnya untuk membuat instans objek klien.
Gunakan nilai-nilai ini saat Anda membuat instans objek klien ComputerVisionClient .
Mendapatkan kredensial
Gunakan cuplikan Azure CLI di bawah ini untuk mengisi dua variabel lingkungan dengan wilayah akun Computer Vision dan salah satu kuncinya (Anda juga dapat menemukan nilai-nilai ini di portal Azure). Cuplikan diformat untuk shell Bash.
RES_GROUP=<resourcegroup-name>
ACCT_NAME=<computervision-account-name>
export ACCOUNT_REGION=$(az cognitiveservices account show \
--resource-group $RES_GROUP \
--name $ACCT_NAME \
--query location \
--output tsv)
export ACCOUNT_KEY=$(az cognitiveservices account keys list \
--resource-group $RES_GROUP \
--name $ACCT_NAME \
--query key1 \
--output tsv)
Membuat klien
Setelah mengisi ACCOUNT_REGION
variabel lingkungan dan ACCOUNT_KEY
, Anda dapat membuat objek klien ComputerVisionClient .
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials
import os
region = os.environ['ACCOUNT_REGION']
key = os.environ['ACCOUNT_KEY']
credentials = CognitiveServicesCredentials(key)
client = ComputerVisionClient(
endpoint="https://" + region + ".api.cognitive.microsoft.com/",
credentials=credentials
)
Penggunaan
Setelah menginisialisasi objek klien ComputerVisionClient , Anda dapat:
- Menganalisis gambar: Anda dapat menganalisis gambar untuk fitur tertentu seperti wajah, warna, tag.
- Hasilkan gambar mini: Buat gambar JPEG kustom untuk digunakan sebagai gambar mini gambar asli.
- Mendapatkan deskripsi gambar: Dapatkan deskripsi gambar berdasarkan domain subjeknya.
Untuk informasi selengkapnya tentang layanan ini, lihat Apa itu Computer Vision?.
Contoh
Bagian berikut ini menyediakan beberapa cuplikan kode yang mencakup beberapa tugas Computer Vision yang paling umum, termasuk:
- Menganalisis gambar
- Mendapatkan daftar domain subjek
- Menganalisis gambar menurut domain
- Mendapatkan deskripsi teks gambar
- Mendapatkan teks tulisan tangan dari gambar
- Hasilkan gambar mini
Menganalisis gambar
Anda dapat menganalisis gambar untuk fitur tertentu dengan analyze_image
. visual_features
Gunakan properti untuk mengatur jenis analisis yang akan dilakukan pada gambar. Nilai umum adalah VisualFeatureTypes.tags
dan VisualFeatureTypes.description
.
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Broadway_and_Times_Square_by_night.jpg/450px-Broadway_and_Times_Square_by_night.jpg"
image_analysis = client.analyze_image(url,visual_features=[VisualFeatureTypes.tags])
for tag in image_analysis.tags:
print(tag)
Mendapatkan daftar domain subjek
Tinjau domain subjek yang digunakan untuk menganalisis gambar Anda dengan list_models
. Nama domain ini digunakan saat menganalisis gambar menurut domain. Contoh domain adalah landmarks
.
models = client.list_models()
for x in models.models_property:
print(x)
Menganalisis gambar menurut domain
Anda dapat menganalisis gambar menurut domain subjek dengan analyze_image_by_domain
. Dapatkan daftar domain subjek yang didukung untuk menggunakan nama domain yang benar.
domain = "landmarks"
url = "https://images.pexels.com/photos/338515/pexels-photo-338515.jpeg"
language = "en"
analysis = client.analyze_image_by_domain(domain, url, language)
for landmark in analysis.result["landmarks"]:
print(landmark["name"])
print(landmark["confidence"])
Mendapatkan deskripsi teks gambar
Anda bisa mendapatkan deskripsi teks berbasis bahasa gambar dengan describe_image
. Minta beberapa deskripsi dengan max_description
properti jika Anda melakukan analisis teks untuk kata kunci yang terkait dengan gambar. Contoh deskripsi teks untuk gambar berikut termasuk a train crossing a bridge over a body of water
, , a large bridge over a body of water
dan a train crossing a bridge over a large body of water
.
domain = "landmarks"
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"
language = "en"
max_descriptions = 3
analysis = client.describe_image(url, max_descriptions, language)
for caption in analysis.captions:
print(caption.text)
print(caption.confidence)
Mendapatkan teks dari gambar
Anda bisa mendapatkan teks tulisan tangan atau cetak dari gambar. Ini memerlukan dua panggilan ke SDK: read
dan get_read_result
. Panggilan untuk membaca bersifat asinkron. Dalam hasil panggilan get_read_result, Anda perlu memeriksa apakah panggilan pertama selesai OperationStatusCodes
sebelum mengekstrak data teks. Hasilnya mencakup teks serta koordinat kotak pembatas untuk teks.
# import models
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
url = "https://github.com/Azure-Samples/cognitive-services-python-sdk-samples/raw/master/samples/vision/images/make_things_happen.jpg"
raw = True
numberOfCharsInOperationId = 36
# SDK call
rawHttpResponse = client.read(url, language="en", raw=True)
# Get ID from returned headers
operationLocation = rawHttpResponse.headers["Operation-Location"]
idLocation = len(operationLocation) - numberOfCharsInOperationId
operationId = operationLocation[idLocation:]
# SDK call
result = client.get_read_result(operationId)
# Get data
if result.status == OperationStatusCodes.succeeded:
for line in result.analyze_result.read_results[0].lines:
print(line.text)
print(line.bounding_box)
Hasilkan gambar mini
Anda dapat menghasilkan gambar mini (JPG) gambar dengan generate_thumbnail
. Gambar mini tidak perlu berada dalam proporsi yang sama dengan gambar asli.
Contoh ini menggunakan paket Bantal untuk menyimpan gambar mini baru secara lokal.
from PIL import Image
import io
width = 50
height = 50
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"
thumbnail = client.generate_thumbnail(width, height, url)
for x in thumbnail:
image = Image.open(io.BytesIO(x))
image.save('thumbnail.jpg')
Pemecahan Masalah
Umum
Saat Anda berinteraksi dengan objek klien ComputerVisionClient menggunakan Python SDK, ComputerVisionErrorException
kelas digunakan untuk mengembalikan kesalahan. Kesalahan yang dikembalikan oleh layanan sesuai dengan kode status HTTP yang sama yang dikembalikan untuk permintaan REST API.
Misalnya, jika Anda mencoba menganalisis gambar dengan kunci yang tidak valid, kesalahan 401
akan ditampilkan. Dalam cuplikan berikut, kesalahan ditangani dengan baik dengan menangkap pengecualian dan menampilkan informasi tambahan tentang kesalahan.
domain = "landmarks"
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"
language = "en"
max_descriptions = 3
try:
analysis = client.describe_image(url, max_descriptions, language)
for caption in analysis.captions:
print(caption.text)
print(caption.confidence)
except HTTPFailure as e:
if e.status_code == 401:
print("Error unauthorized. Make sure your key and region are correct.")
else:
raise
Menangani kesalahan sementara dengan percobaan kembali
Saat bekerja dengan klien ComputerVisionClient , Anda mungkin mengalami kegagalan sementara yang disebabkan oleh batas tarif yang diberlakukan oleh layanan, atau masalah sementara lainnya seperti pemadaman jaringan. Untuk informasi tentang penanganan jenis kegagalan ini, lihat Coba lagi pola di panduan Pola Desain Cloud, dan pola Pemutus Sirkuit terkait.
Langkah berikutnya
Lebih banyak kode sampel
Beberapa sampel Computer Vision Python SDK tersedia untuk Anda di repositori GitHub SDK. Sampel ini menyediakan kode contoh untuk skenario tambahan yang biasa ditemui saat bekerja dengan Computer Vision:
Dokumentasi tambahan
Untuk dokumentasi yang lebih luas tentang layanan Computer Vision, lihat dokumentasi Azure Computer Vision di docs.microsoft.com.
Azure SDK for Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk