Analisis Gambar yang Kuat Dengan Google Cloud Vision Dan Python

Diterbitkan: 2022-03-10
Ringkasan cepat Cakupan kemungkinan untuk menerapkan layanan Google Cloud Vision praktis tidak terbatas. Dengan Python Library yang tersedia, tentunya dapat membantu Anda memunculkan minat yang lebih dalam pada teknologi Machine Learning.

Baru-baru ini, saya telah membuat aplikasi web untuk mengelola pengeluaran pribadi pengguna. Fitur utamanya adalah memindai struk belanja dan mengekstrak data untuk diproses lebih lanjut. Google Vision API ternyata menjadi alat yang hebat untuk mendapatkan teks dari foto. Pada artikel ini, saya akan memandu Anda melalui proses pengembangan dengan Python dalam proyek sampel.

Jika Anda seorang pemula, jangan khawatir. Anda hanya memerlukan pengetahuan yang sangat dasar tentang bahasa pemrograman ini — tanpa keterampilan lain yang diperlukan.

Mari kita mulai, ya?

Pernah Mendengar Tentang Google Cloud Vision?

Ini adalah API yang memungkinkan pengembang menganalisis konten gambar melalui data yang diekstraksi. Untuk tujuan ini, Google menggunakan model pembelajaran mesin yang dilatih pada kumpulan data gambar yang besar. Semua itu tersedia dengan satu permintaan API. Mesin di belakang API mengklasifikasikan gambar, mendeteksi objek, wajah orang, dan mengenali kata-kata yang dicetak di dalam gambar.

Sebagai contoh, mari kita bahas Giphy yang sangat disukai. Mereka telah mengadopsi API untuk mengekstrak data teks dari GIF, yang menghasilkan peningkatan signifikan dalam pengalaman pengguna. Contoh lain adalah realtor.com, yang menggunakan OCR Vision API untuk mengekstrak teks dari gambar tanda Dijual yang diambil di aplikasi seluler untuk memberikan detail lebih lanjut tentang properti.

Sekilas tentang Pembelajaran Mesin

Mari kita mulai dengan menjawab pertanyaan yang mungkin pernah Anda dengar sebelumnya — apa itu Machine Learning?

Ide luasnya adalah mengembangkan model yang dapat diprogram yang menemukan pola dalam data yang diberikannya. Semakin tinggi kualitas data yang Anda berikan dan semakin baik desain model yang Anda gunakan, hasil yang lebih cerdas akan dihasilkan. Dengan 'pembelajaran mesin yang ramah' (seperti yang disebut Google sebagai Pembelajaran Mesin mereka melalui layanan API), Anda dapat dengan mudah memasukkan sebagian Kecerdasan Buatan ke dalam aplikasi Anda.

Bacaan yang disarankan : Memulai Pembelajaran Mesin

Lebih banyak setelah melompat! Lanjutkan membaca di bawah ini

Cara Memulai Dengan Google Cloud

Mari kita mulai dengan pendaftaran ke Google Cloud. Google memerlukan autentikasi, tetapi sederhana dan tidak merepotkan — Anda hanya perlu menyimpan file JSON yang menyertakan kunci API, yang bisa Anda dapatkan langsung dari Google Cloud Platform.

Unduh file dan tambahkan jalurnya ke variabel lingkungan:

 export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/apikey.json

Atau, dalam pengembangan, Anda dapat mendukung diri Anda sendiri dengan metode from_serivce_account_json() , yang akan saya jelaskan lebih lanjut di artikel ini. Untuk mempelajari lebih lanjut tentang otentikasi, lihat dokumentasi resmi Cloud.

Google menyediakan paket Python untuk menangani API. Mari tambahkan versi terbaru google-cloud-vision==0.33 ke aplikasi Anda. Saatnya membuat kode!

Cara Menggabungkan Google Cloud Vision Dengan Python

Pertama, mari impor kelas dari perpustakaan.

 from google.cloud import vision from google.cloud.vision import types

Ketika itu diurus, sekarang Anda akan membutuhkan sebuah instance dari klien. Untuk melakukannya, Anda akan menggunakan fitur pengenalan teks.

 client = vision.ImageAnnotatorClient()

Jika Anda tidak akan menyimpan kredensial Anda dalam variabel lingkungan, pada tahap ini Anda dapat menambahkannya langsung ke klien.

 client = vision.ImageAnnotatorClient.from_service_account_file( '/path/to/apikey.json' )

Dengan asumsi bahwa Anda menyimpan gambar untuk diproses dalam folder 'gambar' di dalam katalog proyek Anda, mari kita buka salah satunya.

Gambar tanda terima yang dapat diproses oleh Google Cloud Vision
Contoh tanda terima sederhana yang dapat diproses oleh Google Cloud Vision. (Pratinjau besar)
 image_to_open = 'images/receipt.jpg' with open(image_to_open, 'rb') as image_file: content = image_file.read()

Langkah selanjutnya adalah membuat objek Vision, yang memungkinkan Anda mengirim permintaan untuk melanjutkan pengenalan teks.

 image = vision.types.Image(content=content) text_response = client.text_detection(image=image)

Responsnya terdiri dari kata-kata yang terdeteksi yang disimpan sebagai kunci deskripsi, lokasinya pada gambar, dan prediksi bahasa. Misalnya, mari kita lihat lebih dekat kata pertama:

 [ ... description: "SHOPPING" bounding_poly { vertices { x: 1327 y: 1513 } vertices { x: 1789 y: 1345 } vertices { x: 1821 y: 1432 } vertices { x: 1359 y: 1600 } } ... ]

Seperti yang Anda lihat, untuk memfilter teks saja, Anda perlu mendapatkan deskripsi "pada semua elemen". Untungnya, dengan bantuan datanglah pemahaman daftar yang kuat dari Python.

 texts = [text.description for text in text_response.text_annotations] ['SHOPPING STORE\nREG 12-21\n03:22 PM\nCLERK 2\n618\n1 MISC\n1 STUFF\n$0.49\n$7.99\n$8.48\n$0.74\nSUBTOTAL\nTAX\nTOTAL\nCASH\n6\n$9. 22\n$10.00\nCHANGE\n$0.78\nNO REFUNDS\nNO EXCHANGES\nNO RETURNS\n', 'SHOPPING', 'STORE', 'REG', '12-21', '03:22', 'PM', 'CLERK', '2', '618', '1', 'MISC', '1', 'STUFF', '$0.49', '$7.99', '$8.48', '$0.74', 'SUBTOTAL', 'TAX', 'TOTAL', 'CASH', '6', '$9.', '22', '$10.00', 'CHANGE', '$0.78', 'NO', 'REFUNDS', 'NO', 'EXCHANGES', 'NO', 'RETURNS']

Jika Anda perhatikan dengan seksama, Anda dapat melihat bahwa elemen pertama dari daftar berisi semua teks yang terdeteksi dalam gambar yang disimpan sebagai string, sementara yang lain adalah kata-kata yang terpisah. Ayo cetak.

 print(texts[0]) SHOPPING STORE REG 12-21 03:22 PM CLERK 2 618 1 MISC 1 STUFF $0.49 $7.99 $8.48 $0.74 SUBTOTAL TAX TOTAL CASH 6 $9. 22 $10.00 CHANGE $0.78 NO REFUNDS NO EXCHANGES NO RETURNS

Cukup akurat, bukan? Dan jelas cukup berguna, jadi mari bermain lebih banyak.

Apa yang Dapat Anda Dapatkan Dari Google Cloud Vision?

Seperti yang telah saya sebutkan di atas, Google Cloud Vision tidak hanya tentang mengenali teks, tetapi juga memungkinkan Anda menemukan wajah, tengara, properti gambar, dan koneksi web. Dengan mengingat hal itu, mari cari tahu apa yang dapat diceritakannya tentang asosiasi web gambar.

 web_response = client.web_detection(image=image)

Oke Google, apakah Anda benar-benar tahu apa yang ditampilkan pada gambar yang Anda terima?

 web_content = web_response.web_detection web_content.best_guess_labels >>> [label: "Receipt"]

Kerja bagus, Google! Itu memang tanda terima. Tapi mari kita beri Anda sedikit lebih banyak latihan — dapatkah Anda melihat hal lain? Bagaimana dengan lebih banyak prediksi yang dinyatakan dalam persentase?

 predictions = [ (entity.description, '{:.2%}'.format(entity.score))) for entity in web_content.web_entities ] >>> [('Receipt', '70.26%'), ('Product design', '64.24%'), ('Money', '56.54%'), ('Shopping', '55.86%'), ('Design', '54.62%'), ('Brand', '54.01%'), ('Font', '53.20%'), ('Product', '51.55%'), ('Image', '38.82%')]

Banyak wawasan berharga, bagus sekali, temanku yang mahakuasa! Bisakah Anda juga mencari tahu dari mana gambar itu berasal dan apakah ada salinannya?

 web_content.full_matching_images >>> [ url: "https://www.rcapitalassociates.com/wp-content/uploads/2018/03/receipts.jpg", url:"https://media.istockphoto.com/photos/shopping-receipt-picture-id901964616?k=6&m=901964616&s=612x612&w=0&h=RmFpYy9uDazil1H9aXkkrAOlCb0lQ-bHaFpdpl76o9A=", url: "https://www.pakstat.com.au/site/assets/files/1172/shutterstock_573065707.500x500.jpg" ]

Saya terkesan. Terima kasih, Google! Tapi satu saja tidak cukup, bisakah Anda memberi saya tiga contoh gambar yang serupa?

 web_content.visually_similar_images[:3] >>>[ url: "https://thumbs.dreamstime.com/z/shopping-receipt-paper-sales-isolated-white-background-85651861.jpg", url: "https://thumbs.dreamstime.com/b/grocery-receipt-23403878.jpg", url:"https://image.shutterstock.com/image-photo/closeup-grocery-shopping-receipt-260nw-95237158.jpg" ]

Manis! Sudah selesai dilakukan dengan baik.

Benarkah Ada Kecerdasan Buatan di Google Cloud Vision?

Seperti yang Anda lihat pada gambar di bawah, berurusan dengan tanda terima bisa menjadi sedikit emosional.

Pria berteriak dan terlihat stres sambil memegang kwitansi panjang
Contoh stres yang bisa Anda alami saat mendapatkan kwitansi. (Pratinjau besar)

Mari kita lihat apa yang dapat disampaikan oleh Vision API tentang foto ini.

 image_to_open = 'images/face.jpg' with open(image_to_open, 'rb') as image_file: content = image_file.read() image = vision.types.Image(content=content) face_response = client.face_detection(image=image) face_content = face_response.face_annotations face_content[0].detection_confidence >>> 0.5153166651725769

Tidak terlalu buruk, algoritme lebih dari 50% yakin bahwa ada wajah dalam gambar. Tapi bisakah Anda belajar sesuatu tentang emosi di baliknya?

 face_content[0] >>> [ ... joy_likelihood: VERY_UNLIKELY sorrow_likelihood: VERY_UNLIKELY anger_likelihood: UNLIKELY surprise_likelihood: POSSIBLE under_exposed_likelihood: VERY_UNLIKELY blurred_likelihood: VERY_UNLIKELY headwear_likelihood: VERY_UNLIKELY ... ]

Anehnya, dengan perintah sederhana, Anda dapat memeriksa kemungkinan beberapa emosi dasar serta hiasan kepala atau properti foto.

Dalam hal pendeteksian wajah, saya perlu mengarahkan perhatian Anda ke beberapa potensi masalah yang mungkin Anda hadapi. Anda harus ingat bahwa Anda menyerahkan foto ke mesin dan meskipun Google's API menggunakan model yang dilatih pada kumpulan data besar, mungkin saja itu akan mengembalikan beberapa hasil yang tidak terduga dan menyesatkan. Online Anda dapat menemukan foto yang menunjukkan betapa mudahnya kecerdasan buatan dapat ditipu dalam hal analisis gambar. Beberapa dari mereka dapat dianggap lucu, tetapi ada garis tipis antara kesalahan yang tidak bersalah dan kesalahan ofensif, terutama ketika kesalahan menyangkut wajah manusia.

Tidak diragukan lagi, Google Cloud Vision adalah alat yang tangguh. Apalagi bekerja sama itu menyenangkan. Arsitektur REST API dan paket Python yang tersedia secara luas membuatnya lebih mudah diakses oleh semua orang, terlepas dari seberapa maju Anda dalam pengembangan Python. Bayangkan betapa signifikannya Anda dapat meningkatkan aplikasi Anda dengan memanfaatkan kemampuannya!

Bacaan yang direkomendasikan : Aplikasi Pembelajaran Mesin Untuk Desainer

Bagaimana Anda Dapat Memperluas Pengetahuan Anda Tentang Google Cloud Vision

Cakupan kemungkinan untuk menerapkan layanan Google Cloud Vision praktis tidak terbatas. Dengan Python Library yang tersedia, Anda dapat menggunakannya dalam proyek apa pun berdasarkan bahasa, apakah itu aplikasi web atau proyek ilmiah. Ini tentu dapat membantu Anda memunculkan minat yang lebih dalam pada teknologi Machine Learning.

Dokumentasi Google memberikan beberapa ide bagus tentang cara menerapkan fitur Vision API dalam praktik serta memberi Anda kemungkinan untuk mempelajari lebih lanjut tentang Machine Learning. Saya terutama merekomendasikan untuk membaca panduan tentang cara membuat aplikasi pencarian gambar lanjutan.

Orang bisa mengatakan bahwa apa yang Anda lihat di artikel ini seperti sulap. Lagi pula, siapa yang mengira bahwa API yang sederhana dan mudah diakses didukung oleh alat ilmiah yang begitu kuat? Yang tersisa untuk dilakukan hanyalah menulis beberapa baris kode, melepaskan imajinasi Anda, dan mengalami potensi analisis gambar yang tak terbatas.