1. Pengantar
ML Kit adalah SDK seluler yang menghadirkan keahlian machine learning Google untuk aplikasi Android dan Android dalam paket yang andal dan mudah digunakan. Sebagai pengguna machine learning, baik pemula maupun berpengalaman, Anda dapat menerapkan fungsionalitas yang diperlukan dengan mudah hanya dalam beberapa baris kode. Anda tidak perlu memiliki pengetahuan mendalam tentang jaringan neural atau pengoptimalan model untuk memulai.
Bagaimana cara kerjanya?
ML Kit memudahkan penerapan teknik ML di aplikasi Anda dengan menyatukan teknologi ML Google, seperti Mobile Vision, dan TensorFlow Lite, semua dalam satu SDK. Baik Anda memerlukan kemampuan real-time model di perangkat Mobile Vision, atau fleksibilitas model TensorFlow Lite kustom, ML Kit memungkinkan hal tersebut hanya dengan beberapa baris kode.
Codelab ini akan memandu Anda melakukan langkah-langkah sederhana untuk menambahkan Pengenalan Teks, Identifikasi Bahasa, dan Terjemahan dari feed kamera real-time ke aplikasi Android yang sudah ada. Codelab ini juga akan menjelaskan praktik terbaik seputar penggunaan CameraX dengan API ML Kit.
Yang akan Anda buat
Dalam codelab ini, Anda akan membuat aplikasi Android dengan ML Kit. Aplikasi Anda akan menggunakan API Pengenalan Teks di perangkat pada ML Kit untuk mengenali teks dari feed kamera secara real-time. Aplikasi ini akan menggunakan ML Kit Language Identification API untuk mengidentifikasi bahasa teks yang dikenali. Terakhir, aplikasi Anda akan menerjemahkan teks ini ke dalam bahasa apa pun yang dipilih dari 59 opsi, menggunakan ML Kit Translation API.
Pada akhirnya, Anda akan melihat sesuatu yang mirip dengan gambar di bawah.

Yang akan Anda pelajari
- Cara menggunakan ML Kit SDK untuk menambahkan kemampuan Machine Learning dengan mudah ke aplikasi Android mana pun.
- ML Kit Text Recognition, Language Identification, Translation API, dan kemampuannya.
- Cara menggunakan library CameraX dengan API ML Kit.
Yang Anda butuhkan
- Versi terbaru Android Studio (v4.0+)
- Perangkat Android fisik
- Kode contoh
- Pengetahuan dasar tentang pengembangan Android di Kotlin
Codelab ini berfokus pada ML Kit. Konsep dan blok kode yang tidak relevan sudah disediakan dan diimplementasikan untuk Anda.
2. Mempersiapkan
Download Kode
Klik link berikut untuk mendownload semua kode untuk codelab ini:
Ekstrak file ZIP yang didownload. Tindakan ini akan mengekstrak folder root (mlkit-android) dengan semua resource yang Anda butuhkan. Untuk codelab ini, Anda hanya memerlukan resource di subdirektori translate.
Subdirektori translate di repositori mlkit-android berisi direktori berikut:
starter—Kode awal yang Anda buat dalam codelab ini.
3. Mengimpor project dan memverifikasi dependensi ML Kit dan CameraX
Impor project starter ke Android Studio. Di file app/build.gradle, verifikasi bahwa dependensi ML Kit dan CameraX yang diperlukan disertakan:
// CameraX dependencies
def camerax_version = "1.0.0-beta05"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:1.0.0-alpha12"
// ML Kit dependencies
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
implementation 'com.google.mlkit:language-id:16.0.0'
implementation 'com.google.mlkit:translate:16.0.0'
4. Menjalankan aplikasi awal
Setelah mengimpor project ke Android Studio dan memeriksa dependensi ML Kit, Anda siap menjalankan aplikasi untuk pertama kalinya. Klik Run (
) di toolbar Android Studio.
Aplikasi akan diluncurkan di perangkat Anda dan Anda dapat mengarahkan kamera ke berbagai teks untuk melihat feed langsung, tetapi fungsi pengenalan teks belum diterapkan.

5. Menambahkan pengenalan teks
Pada langkah ini, kita akan menambahkan fungsi ke aplikasi Anda untuk mengenali teks dari kamera video.
Buat instance Detektor Teks ML Kit
Ganti TODO di bagian atas TextAnalyzer.kt untuk membuat instance TextRecognition. Dengan cara ini, Anda akan mendapatkan handle ke pengenal teks untuk digunakan di langkah selanjutnya. Kita juga perlu menambahkan detektor sebagai pengamat siklus proses agar dapat menutup detektor dengan benar saat tidak lagi diperlukan.
TextAnalyzer.kt
private val detector = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
init {
lifecycle.addObserver(detector)
}
Menjalankan pengenalan teks pada Gambar Input (dibuat dengan buffer dari kamera)
Library CameraX menyediakan aliran gambar dari kamera yang siap untuk analisis gambar. Ganti metode recognizeText() di class TextAnalyzer untuk menggunakan pengenalan teks ML Kit pada setiap frame gambar.
TextAnalyzer.kt
private fun recognizeText(
image: InputImage
): Task<Text> {
// Pass image to an ML Kit Vision API
return detector.process(image)
.addOnSuccessListener { text ->
// Task completed successfully
result.value = text.text
}
.addOnFailureListener { exception ->
// Task failed with an exception
Log.e(TAG, "Text recognition error", exception)
val message = getErrorMessage(exception)
message?.let {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
}
}
Baris berikut menunjukkan cara memanggil metode di atas untuk mulai melakukan pengenalan teks. Tambahkan baris berikut di akhir metode analyze(). Perhatikan bahwa Anda harus memanggil imageProxy.close setelah analisis selesai pada gambar, jika tidak, feed kamera live tidak akan dapat memproses gambar lebih lanjut untuk dianalisis.
TextAnalyzer.kt
recognizeText(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
imageProxy.close()
}
Menjalankan aplikasi di perangkat Anda
Sekarang klik Run (
) di toolbar Android Studio. Setelah aplikasi dimuat, aplikasi akan mulai mengenali teks dari kamera secara real-time. Arahkan kamera ke teks mana pun untuk mengonfirmasi. Jika aplikasi Anda tidak mengenali teks apa pun, coba 'reset' deteksi dengan mengarahkan kamera ke ruang kosong sebelum mengarahkan kamera ke teks.
6. Menambahkan identifikasi bahasa
Membuat instance Language Identifier ML Kit
MainViewModel.kt terletak di folder utama. Buka file dan tambahkan kolom berikut ke MainViewModel.kt. Berikut cara mendapatkan handle ke ID bahasa untuk digunakan pada langkah berikutnya.
MainViewModel.kt
private val languageIdentifier = LanguageIdentification.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
Selain itu, Anda juga harus memastikan bahwa klien dimatikan dengan benar jika sudah tidak diperlukan. Untuk melakukannya, ganti metode onCleared() ViewModel.
MainViewModel.kt
override fun onCleared() {
languageIdentifier.close()
translators.evictAll()
}
Menjalankan identifikasi bahasa di perangkat pada teks yang terdeteksi
Gunakan Pengidentifikasi Bahasa ML Kit untuk mendapatkan bahasa teks yang terdeteksi dari gambar.
Ganti TODO dalam definisi kolom sourceLang di MainViewModel.kt dengan kode berikut. Cuplikan ini memanggil metode identifikasi bahasa dan menetapkan hasilnya jika tidak tidak ditentukan ("und"). Bahasa yang tidak ditentukan berarti API tidak dapat mengidentifikasi bahasa berdasarkan daftar bahasa yang didukung.
MainViewModel.kt
val sourceLang = Transformations.switchMap(sourceText) { text ->
val result = MutableLiveData<Language>()
languageIdentifier.identifyLanguage(text)
.addOnSuccessListener { languageCode ->
if (languageCode != "und")
result.value = Language(languageCode)
}
result
}
Menjalankan aplikasi di perangkat Anda
Sekarang klik Run (
) di toolbar Android Studio. Setelah aplikasi dimuat, aplikasi akan mulai mengenali teks dari kamera dan mengidentifikasi bahasa teks secara real-time. Arahkan kamera ke teks mana pun untuk mengonfirmasi.
7. Tambahkan terjemahan
Ganti fungsi translate() di MainViewModel.kt dengan kode berikut: Fungsi ini menggunakan nilai bahasa sumber, nilai bahasa target, dan teks sumber, lalu melakukan terjemahan. Perhatikan bahwa jika model bahasa target yang dipilih belum didownload ke perangkat, kita akan memanggil downloadModelIfNeeded() untuk melakukannya, lalu melanjutkan terjemahan.
MainViewModel.kt
private fun translate(): Task<String> {
val text = sourceText.value
val source = sourceLang.value
val target = targetLang.value
if (modelDownloading.value != false || translating.value != false) {
return Tasks.forCanceled()
}
if (source == null || target == null || text == null || text.isEmpty()) {
return Tasks.forResult("")
}
val sourceLangCode = TranslateLanguage.fromLanguageTag(source.code)
val targetLangCode = TranslateLanguage.fromLanguageTag(target.code)
if (sourceLangCode == null || targetLangCode == null) {
return Tasks.forCanceled()
}
val options = TranslatorOptions.Builder()
.setSourceLanguage(sourceLangCode)
.setTargetLanguage(targetLangCode)
.build()
val translator = translators[options]
modelDownloading.setValue(true)
// Register watchdog to unblock long running downloads
Handler().postDelayed({ modelDownloading.setValue(false) }, 15000)
modelDownloadTask = translator.downloadModelIfNeeded().addOnCompleteListener {
modelDownloading.setValue(false)
}
translating.value = true
return modelDownloadTask.onSuccessTask {
translator.translate(text)
}.addOnCompleteListener {
translating.value = false
}
}
Jalankan aplikasi di simulator
Sekarang klik Run (
) di toolbar Android Studio. Setelah aplikasi dimuat, aplikasi akan terlihat seperti gambar bergerak di bawah, yang menampilkan hasil pengenalan teks dan bahasa yang diidentifikasi serta teks yang diterjemahkan ke dalam bahasa yang dipilih. Anda dapat memilih salah satu dari 59 bahasa.

8. Selamat!
Selamat, Anda baru saja menambahkan pengenalan teks, identifikasi bahasa, dan terjemahan di perangkat ke aplikasi Anda menggunakan ML Kit. Sekarang Anda dapat mengenali teks dan bahasanya dari feed kamera live dan menerjemahkan teks ini ke bahasa yang Anda pilih secara real-time.
Yang telah kita bahas
- Cara menambahkan ML Kit ke aplikasi Android Anda
- Cara menggunakan pengenalan teks di perangkat di ML Kit untuk mengenali teks dalam gambar
- Cara menggunakan identifikasi bahasa di perangkat di ML Kit untuk mengidentifikasi bahasa teks
- Cara menggunakan terjemahan di perangkat di ML Kit untuk menerjemahkan teks secara dinamis ke 59 bahasa
- Cara menggunakan CameraX bersama dengan API ML Kit
Langkah Berikutnya
- Gunakan ML Kit dan CameraX di aplikasi Android Anda sendiri.