ML Kit, Google'ın makine öğrenimi uzmanlığını Android ve Android uygulamalarına güçlü ve kullanımı kolay bir pakette sunan bir mobil SDK'dır. Makine öğrenimi konusunda yeni veya deneyimli olmanız fark etmez. İhtiyacınız olan işlevi yalnızca birkaç satır kodla kolayca uygulayabilirsiniz. Başlamak için nöral ağlar veya model optimizasyonu hakkında derinlemesine bilgi sahibi olmanız gerekmez.
İşleyiş şekli
ML Kit, Google'ın Mobile Vision ve TensorFlow Lite gibi ML teknolojilerini tek bir SDK'da bir araya getirerek ML tekniklerini uygulamalarınıza uygulamanızı kolaylaştırır. Mobil Görüş'ün cihaz üzerinde modellerinin gerçek zamanlı özelliklerinin gücüne veya özel TensorFlow Lite modellerinin esnekliğine ihtiyacınız olsun, ML Kit yalnızca birkaç satır kodla bunu mümkün kılar.
Bu codelab'de, gerçek zamanlı kamera feed'inden metin tanıma, dil tanımlama ve çeviri eklemeyle ilgili basit adımlarda size yol gösterilir. Bu codelab'de ayrıca CameraX'i ML Kit API'leriyle kullanmayla ilgili en iyi uygulamalar da vurgulanmaktadır.
Ne oluşturacaksınız?
Bu codelab'de, ML Kit ile bir Android uygulaması oluşturacaksınız. Uygulamanız, gerçek zamanlı kamera feed'indeki metni tanımak için ML Kit Metin Tanıma cihaz üzerinde API'sini kullanır. Tanımlanan metnin dilini belirlemek için ML Kit Language Identification API'yi kullanır. Son olarak uygulamanız, ML Kit Translation API'yi kullanarak bu metni 59 seçenekten herhangi birine çevirir.
Sonunda aşağıdaki resme benzer bir şey görürsünüz.
Öğrenecekleriniz
- Herhangi bir Android uygulamasına makine öğrenimi özelliklerini kolayca eklemek için ML Kit SDK'sını kullanma.
- ML Kit Metin Tanıma, Dil Tanımlama, Translation API'ler ve özellikleri.
- CameraX kitaplığını ML Kit API'leriyle kullanma.
İhtiyacınız olanlar
- Android Studio'nun son sürümü (4.0 ve üzeri)
- Fiziksel bir Android cihaz
- Örnek kod
- Kotlin'de Android geliştirmeyle ilgili temel düzeyde bilgi
Bu codelab, ML Kit'e odaklanmaktadır. Alakalı olmayan kavramlar ve kod blokları zaten sizin için sağlanmış ve uygulanmıştır.
Kodu İndirme
Bu codelab'in tüm kodunu indirmek için aşağıdaki bağlantıyı tıklayın:
İndirilen ZIP dosyasının sıkıştırmasını açın. Bu işlem, ihtiyacınız olan tüm kaynakları içeren bir kök klasör (mlkit-android
) açar. Bu codelab için yalnızca translate
alt dizinindeki kaynaklara ihtiyacınız vardır.
mlkit-android
deposundaki translate
alt dizini aşağıdaki dizini içerir:
starter: Bu codelab'de temel aldığınız başlangıç kodu.
app/build.gradle
dosyasında, gerekli ML Kit ve CameraX bağımlılıklarının dahil edildiğinden emin olun:
// 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'
Projeyi Android Studio'ya içe aktardığınıza ve ML Kit bağımlılıkları olup olmadığını kontrol ettiğinize göre, uygulamayı ilk kez çalıştırmaya hazırsınız. Android Studio emülatörünü başlatın ve Android Studio araç çubuğunda Çalıştır'ı () tıklayın.
Uygulama cihazınızda başlatılır ve canlı feed görmek için kamerayı çeşitli metinlere doğru tutabilirsiniz. Ancak metin tanıma işlevi henüz uygulanmamıştır.
Bu adımda, uygulamanıza video kameradan metin algılayacak bir işlev ekleyeceğiz.
ML Kit metin algılayıcısını örnekleme
Aşağıdaki alanı TextAnalyzer.kt
öğesinin üst kısmına ekleyin. Bu şekilde, sonraki adımlarda kullanmak üzere metin tanımlayıcısının bir adını elde edersiniz.
TextAnalyzer.kt
private val detector = TextRecognition.getClient()
Vision görüntüsünde ( kameradan arabelleğe alınmış şekilde oluşturulur) cihaz üzerinde metin tanıma işlemini çalıştırma
CameraX kitaplığı, kameradan görüntü analizi için hazır bir görüntü akışı sağlar. Her resim karesinde ML Kit metin tanıma özelliğini kullanmak için TextAnalyzer sınıfındaki recognizeTextOnDevice()
yöntemini değiştirin.
TextAnalyzer.kt
private fun recognizeTextOnDevice(
image: InputImage
): Task<Text> {
// Pass image to an ML Kit Vision API
return detector.process(image)
.addOnSuccessListener { visionText ->
// Task completed successfully
result.value = visionText.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()
}
}
}
Aşağıdaki satırda, metin tanıma işlemini başlatmak için yukarıdaki yöntemi nasıl çağırdığımız gösterilmektedir. analyze()
yönteminin sonuna aşağıdaki satırı ekleyin. Görüntüdeki analiz tamamlandıktan sonra imageProxy.close
çağrısını yapmanız gerektiğini unutmayın. Aksi takdirde canlı kamera feed'i, analiz için başka görüntüler işleyemez.
TextAnalyzer.kt
recognizeTextOnDevice(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
imageProxy.close()
}
Uygulamayı cihazınızda çalıştırma
Ardından Android Studio araç çubuğunda Çalıştır'ı () tıklayın. Uygulama yüklendikten sonra kameradan gelen metni gerçek zamanlı olarak tanımaya başlar. Onaylamak için kameranızı herhangi bir metne doğru tutun.
ML Kit Dil Tanımlayıcısını örneklendirme
Aşağıdaki alanı MainViewModel.kt
alanına ekleyin. Bu şekilde, sonraki adımda kullanılacak dil tanımlayıcısının adını alırsınız.
MainViewModel.kt
private val languageIdentification = LanguageIdentification.getClient()
Tespit edilen metinde cihaz üzerinde dil tanımlama işlemini çalıştırma
Resimde algılanan metnin dilini öğrenmek için ML Kiti Dil Tanımlayıcı'yı kullanın.
MainViewModel.kt
içindeki sourceLang
alan tanımında TODO'yu aşağıdaki kodla değiştirin. Bu snippet, dil tanımlama yöntemini çağırır ve tanımlanmamışsa ("und") sonucu atar.
MainViewModel.kt
languageIdentification.identifyLanguage(text)
.addOnSuccessListener {
if (it != "und")
result.value = Language(it)
}
Uygulamayı cihazınızda çalıştırma
Ardından Android Studio araç çubuğunda Çalıştır'ı () tıklayın. Uygulama yüklendikten sonra kameradan metin tanımaya ve metnin dilini anlık olarak tanımlamaya başlar. Onaylamak için kameranızı herhangi bir metne doğru tutun.
MainViewModel.kt
içindeki translate()
işlevini aşağıdaki kodla değiştirin. Bu işlev, kaynak dil değerini, hedef dil değerini ve kaynak metni alır ve çeviriyi gerçekleştirir. Seçilen hedef dil modeli henüz cihaza indirilmediyse downloadModelIfNeeded()
işlevini çağırarak indirme işlemini gerçekleştirip ardından çeviriye devam ettiğimizi unutmayın.
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
}
}
Uygulamayı simülatörde çalıştırma
Ardından Android Studio araç çubuğunda Çalıştır'ı () tıklayın. Uygulama yüklendikten sonra, metin algılama ve tanımlanan dil sonuçlarını ve seçilen dile çevrilen metni gösteren aşağıdaki hareketli resme benzer bir görünüm elde edersiniz. 59 dilden herhangi birini seçebilirsiniz.
Tebrikler, ML Kit'i kullanarak uygulamanıza cihaz üzerinde metin tanıma, dil tanımlama ve çeviri özelliklerini eklediniz. Artık canlı kamera feed'inden metni ve dilini tanıyabilir, bu metni seçtiğiniz dile gerçek zamanlı olarak çevirebilirsiniz.
Ele aldığımız konular
- Android uygulamanıza ML Kit'i ekleme
- Resimlerdeki metni tanımak için ML Kit'te cihaz üzerinde metin tanıma özelliğini kullanma
- Metnin dilini belirlemek için ML Kit'te cihaz üzerinde dil tanımlama özelliğini kullanma
- Metni 59 dile dinamik olarak çevirmek için ML Kit'te cihaz üzerinde çeviriyi kullanma
- CameraX'i ML Kit API'leriyle birlikte kullanma
Sonraki Adımlar
- ML Kit ve CameraX'i kendi Android uygulamanızda kullanın.