Library Klien untuk Python v0.25.1 menyertakan beberapa perubahan signifikan terkait cara mendesain library klien sebelumnya. Perubahan ini dapat dirangkum sebagai berikut:
Konsolidasi modul menjadi lebih sedikit jenis
Mengganti parameter tanpa jenis dengan kelas dan enumerasi yang berjenis kuat
Topik ini memberikan detail tentang perubahan yang perlu Anda lakukan pada kode Python untuk library klien Cloud Vision API agar dapat menggunakan library klien Python v0.25.1.
Menjalankan library klien versi sebelumnya
Anda tidak perlu mengupgrade library klien Python ke v0.25.1. Jika ingin terus menggunakan library klien Python versi sebelumnya
dan tidak ingin memigrasikan kode, Anda harus menentukan versi
library klien Python yang digunakan oleh aplikasi Anda. Untuk menentukan versi library
tertentu, edit file requirements.txt
seperti yang ditunjukkan:
google-cloud-vision==0.25
Modul yang Dihapus
Modul berikut telah dihapus di paket Python Library Klien v0.25.1.
google.cloud.vision.annotations
google.cloud.vision.batch
google.cloud.vision.client
google.cloud.vision.color
google.cloud.vision.crop_hint
google.cloud.vision.entity
google.cloud.vision.face
google.cloud.vision.feature
google.cloud.vision.geometry
google.cloud.vision.image
google.cloud.vision.likelihood
google.cloud.vision.safe_search
google.cloud.vision.text
google.cloud.vision.web
Perubahan Kode yang Diperlukan
Impor
Sertakan modul google.cloud.vision.types
baru untuk mengakses jenis baru di Library Klien Python v0.25.1.
Modul types
berisi kelas baru yang diperlukan untuk membuat permintaan, seperti types.Image
.
Selain itu, modul google.cloud.vision.enums
baru berisi enumerasi yang berguna untuk mengurai dan memahami respons API, seperti enums.Likelihood.UNLIKELY
dan enums.FaceAnnotation.Landmark.Type.LEFT_EYE
.
Membuat klien
Kelas Client
telah diganti dengan kelas ImageAnnotatorClient
. Ganti referensi ke kelas Client
dengan ImageAnnotatorClient
.
Library klien versi sebelumnya:
old_client = vision.Client()
Library Klien Python v0.25.1:
Membuat objek yang merepresentasikan konten gambar
Untuk mengidentifikasi konten gambar dari file lokal, dari Google Cloud Storage URI, atau dari web URI, gunakan kelas Image
yang baru.
Membuat objek yang merepresentasikan konten gambar dari file lokal
Contoh berikut menunjukkan cara baru untuk menampilkan konten gambar dari file lokal.
Library klien versi sebelumnya:
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
Library Klien Python v0.25.1:
Membuat objek yang merepresentasikan konten gambar dari URI
Contoh berikut menunjukkan cara baru untuk menampilkan konten gambar dari Google Cloud Storage URI atau web URI. uri
adalah URI ke file gambar di Google Cloud Storage atau di web.
Library klien versi sebelumnya:
image = old_client.image(source_uri=uri)
Library Klien Python v0.25.1:
Membuat permintaan dan memproses respons
Dengan Library Klien Python v.0.25.1, metode API seperti face_detection
menjadi bagian dari objek ImageAnnotatorClient
, bukan objek Image
.
Nilai yang ditampilkan berbeda untuk beberapa metode seperti yang dijelaskan di bawah ini.
Khususnya, verteks kotak pembatas kini disimpan di bounding_poly.vertices
bukan bounds.vertices
. Koordinat setiap verteks disimpan di vertex.x
dan vertex.y
bukan vertex.x_coordinate
dan vertex.y_coordinate
.
Perubahan kotak pembatas memengaruhi face_detection
, logo_detection
, text_detection
, document_text_detection
, dan crop_hints
.
Membuat permintaan deteksi wajah dan memproses respons
Kemungkinan emosi kini ditampilkan sebagai enumerasi yang disimpan di face.surprise_likelihood
, bukan face.emotions.surprise
. Nama label kemungkinan dapat dipulihkan dengan mengimpor google.cloud.vision.enums.Likelihood
.
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
faces = image.detect_faces()
for face in faces:
print('anger: {}'.format(face.emotions.anger))
print('joy: {}'.format(face.emotions.joy))
print('surprise: {}'.format(face.emotions.surprise))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in face.bounds.vertices])
print('face bounds: {}'.format(','.join(vertices)))
Library Klien Python v0.25.1:
Membuat permintaan deteksi label dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
labels = image.detect_labels()
for label in labels:
print(label.description)
Library Klien Python v0.25.1:
Membuat permintaan deteksi penanda dan memproses respons
Library klien versi sebelumnya::
Lintang dan bujur lokasi penanda sekarang disimpan di location.lat_lng.latitude
dan location.lat_lng.longitude
, bukan di location.latitude
dan location.longitude
.
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
landmarks = image.detect_landmarks()
for landmark in landmarks:
print(landmark.description, landmark.score)
for location in landmark.locations:
print('Latitude'.format(location.latitude))
print('Longitude'.format(location.longitude))
Library Klien Python v0.25.1:
Membuat permintaan deteksi logo dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
logos = image.detect_logos()
for logo in logos:
print(logo.description, logo.score)
Library Klien Python v0.25.1:
Membuat permintaan deteksi SafeSearch dan memproses respons
Kemungkinan SafeSearch kini ditampilkan sebagai enumerasi. Nama label kemungkinan dapat dipulihkan dengan mengimpor google.cloud.vision.enums.Likelihood
.
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
safe = image.detect_safe_search()
print('Safe search:')
print('adult: {}'.format(safe.adult))
print('medical: {}'.format(safe.medical))
print('spoofed: {}'.format(safe.spoof))
print('violence: {}'.format(safe.violence))
Library Klien Python v0.25.1:
Membuat permintaan deteksi teks dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
texts = image.detect_text()
for text in texts:
print('\n"{}"'.format(text.description))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in text.bounds.vertices])
print('bounds: {}'.format(','.join(vertices)))
Library Klien Python v0.25.1:
Membuat permintaan deteksi teks dokumen dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
document = image.detect_full_text()
for page in document.pages:
for block in page.blocks:
block_words = []
for paragraph in block.paragraphs:
block_words.extend(paragraph.words)
block_symbols = []
for word in block_words:
block_symbols.extend(word.symbols)
block_text = ''
for symbol in block_symbols:
block_text = block_text + symbol.text
print('Block Content: {}'.format(block_text))
print('Block Bounds:\n {}'.format(block.bounding_box))
Library Klien Python v0.25.1:
Membuat permintaan properti gambar dan memproses respons
Informasi warna dominan kini disimpan di props.dominant_colors.colors
, bukan props.colors
.
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
props = image.detect_properties()
for color in props.colors:
print('fraction: {}'.format(color.pixel_fraction))
print('\tr: {}'.format(color.color.red))
print('\tg: {}'.format(color.color.green))
print('\tb: {}'.format(color.color.blue))
print('\ta: {}'.format(color.color.alpha))
Library Klien Python v0.25.1:
Membuat permintaan deteksi web dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
notes = image.detect_web()
if notes.pages_with_matching_images:
print('\n{} Pages with matching images retrieved')
for page in notes.pages_with_matching_images:
print('Score : {}'.format(page.score))
print('Url : {}'.format(page.url))
if notes.full_matching_images:
print ('\n{} Full Matches found: '.format(
len(notes.full_matching_images)))
for image in notes.full_matching_images:
print('Score: {}'.format(image.score))
print('Url : {}'.format(image.url))
if notes.partial_matching_images:
print ('\n{} Partial Matches found: '.format(
len(notes.partial_matching_images)))
for image in notes.partial_matching_images:
print('Score: {}'.format(image.score))
print('Url : {}'.format(image.url))
if notes.web_entities:
print ('\n{} Web entities found: '.format(len(notes.web_entities)))
for entity in notes.web_entities:
print('Score : {}'.format(entity.score))
print('Description: {}'.format(entity.description))
Library Klien Python v0.25.1:
Membuat permintaan petunjuk pangkas dan memproses respons
Library klien versi sebelumnya::
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = old_client.image(content=content)
hints = image.detect_crop_hints(aspect_ratios=[1.77])
for n, hint in enumerate(hints):
print('\nCrop Hint: {}'.format(n))
vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in hint.bounds.vertices])
print('bounds: {}'.format(','.join(vertices)))
Library Klien Python v0.25.1:
Perhatikan bahwa rasio aspek harus dimasukkan melalui CropHintsParams
dan ImageContext
.