ML Kit एक मोबाइल SDK टूल है. यह Android और Android ऐप्लिकेशन में, मशीन लर्निंग की बेहतर सुविधाएं देता है. साथ ही, यह एक बेहतरीन और आसानी से इस्तेमाल होने वाला पैकेज है. भले ही, आपने मशीन लर्निंग का इस्तेमाल पहले कभी न किया हो या आपके पास इसकी अच्छी जानकारी हो, लेकिन आपको अपनी ज़रूरत के हिसाब से सुविधाओं को लागू करने के लिए, बस कुछ लाइनों का कोड लिखना होगा. शुरू करने के लिए, न्यूरल नेटवर्क या मॉडल ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानकारी होना ज़रूरी नहीं है.
यह सुविधा कैसे काम करती है?
ML Kit, Google की एआई टेक्नोलॉजी को एक ही SDK टूल में इकट्ठा करके, आपके ऐप्लिकेशन में एआई तकनीकों को लागू करना आसान बनाता है. जैसे, Mobile Vision और TensorFlow Lite. चाहे आपको Mobile Vision के डिवाइस पर मौजूद मॉडल की रीयल-टाइम सुविधाओं की ज़रूरत हो या कस्टम TensorFlow Lite मॉडल की सुविधाओं की, ML Kit की मदद से इनका इस्तेमाल सिर्फ़ कुछ कोड लाइन में किया जा सकता है.
इस कोडलैब में, आपको अपने मौजूदा Android ऐप्लिकेशन में रीयल-टाइम कैमरा फ़ीड से टेक्स्ट की पहचान करने, भाषा की पहचान करने, और अनुवाद करने की सुविधा जोड़ने के आसान तरीके के बारे में बताया गया है. साथ ही, इस कोडलैब में ML Kit API के साथ CameraX का इस्तेमाल करने के सबसे सही तरीकों के बारे में भी बताया गया है.
आपको क्या बनाना है
इस कोडलैब में, आपको ML Kit की मदद से Android ऐप्लिकेशन बनाना है. आपका ऐप्लिकेशन, रीयल-टाइम कैमरा फ़ीड से टेक्स्ट की पहचान करने के लिए, ML Kit के टेक्स्ट की पहचान करने वाले डिवाइस पर मौजूद API का इस्तेमाल करेगा. यह पहचाने गए टेक्स्ट की भाषा की पहचान करने के लिए, ML Kit Language Identification API का इस्तेमाल करेगा. आखिर में, आपका ऐप्लिकेशन ML Kit Translation API का इस्तेमाल करके, इस टेक्स्ट का अनुवाद 59 विकल्पों में से किसी भी चुनी गई भाषा में कर देगा.
आखिर में, आपको नीचे दी गई इमेज जैसा कुछ दिखेगा.
आपको क्या सीखने को मिलेगा
- किसी भी Android ऐप्लिकेशन में मशीन लर्निंग की सुविधाएं आसानी से जोड़ने के लिए, ML Kit SDK टूल का इस्तेमाल करने का तरीका.
- ML Kit की टेक्स्ट की पहचान करने की सुविधा, भाषा की पहचान करने की सुविधा, अनुवाद करने वाले एपीआई, और उनकी सुविधाएं.
- ML Kit के एपीआई के साथ CameraX लाइब्रेरी का इस्तेमाल करने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी
- Android Studio का नया वर्शन (v4.0+)
- कोई Android डिवाइस
- सैंपल कोड
- Kotlin में Android डेवलपमेंट की बुनियादी जानकारी
इस कोडलैब में, ML Kit पर फ़ोकस किया गया है. काम के नहीं लगने वाले कॉन्सेप्ट और कोड ब्लॉक, आपके लिए पहले से ही उपलब्ध हैं और लागू किए जा चुके हैं.
कोड डाउनलोड करना
इस कोडलैब का पूरा कोड डाउनलोड करने के लिए, इस लिंक पर क्लिक करें:
डाउनलोड की गई ज़िप फ़ाइल को अनपैक करें. इससे, रूट फ़ोल्डर (mlkit-android
) अनपैक हो जाएगा. इसमें आपको ज़रूरी सभी संसाधन मिलेंगे. इस कोडलैब के लिए, आपको सिर्फ़ translate
सबडायरेक्ट्री में मौजूद रिसॉर्स की ज़रूरत होगी.
mlkit-android
रिपॉज़िटरी में मौजूद translate
सबडायरेक्ट्री में यह डायरेक्ट्री शामिल है:
स्टार्टर—इस कोडलैब में, आपको स्टार्टर कोड पर काम करना होगा.
app/build.gradle
फ़ाइल में, पुष्टि करें कि ज़रूरी ML Kit और CameraX डिपेंडेंसी शामिल हैं:
// 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'
प्रोजेक्ट को Android Studio में इंपोर्ट करने और ML Kit की डिपेंडेंसी की जांच करने के बाद, ऐप्लिकेशन को पहली बार चलाया जा सकता है! Android Studio एमुलेटर शुरू करें और Android Studio टूलबार में चालू करें () पर क्लिक करें.
यह ऐप्लिकेशन आपके डिवाइस पर लॉन्च हो जाना चाहिए. इसके बाद, लाइव फ़ीड देखने के लिए, कैमरे को अलग-अलग टेक्स्ट पर फ़ोकस किया जा सकता है. हालांकि, टेक्स्ट की पहचान करने की सुविधा अभी लागू नहीं की गई है.
इस चरण में, हम आपके ऐप्लिकेशन में वीडियो कैमरे से टेक्स्ट पहचानने की सुविधा जोड़ेंगे.
ML Kit के टेक्स्ट डिटेक्टर का इंस्टैंश बनाना
TextAnalyzer.kt
के सबसे ऊपर, यह फ़ील्ड जोड़ें. इस तरह, टेक्स्ट पहचानने वाले टूल का हैंडल मिलता है, ताकि उसे आगे के चरणों में इस्तेमाल किया जा सके.
TextAnalyzer.kt
private val detector = TextRecognition.getClient()
कैमरे से बफ़र की मदद से बनाई गई विज़न इमेज पर, डिवाइस पर टेक्स्ट की पहचान करने की सुविधा चालू करना
CameraX लाइब्रेरी, कैमरे से ली गई इमेज की स्ट्रीम उपलब्ध कराती है, ताकि इमेज का विश्लेषण किया जा सके. हर इमेज फ़्रेम पर ML Kit की टेक्स्ट पहचानने की सुविधा का इस्तेमाल करने के लिए, TextAnalyzer क्लास में recognizeTextOnDevice()
तरीके को बदलें.
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()
}
}
}
नीचे दी गई लाइन में बताया गया है कि टेक्स्ट की पहचान करने की प्रोसेस शुरू करने के लिए, हम ऊपर बताए गए तरीके को कैसे कॉल करते हैं. analyze()
तरीके के आखिर में, यह लाइन जोड़ें. ध्यान दें कि इमेज का विश्लेषण पूरा होने के बाद, आपको imageProxy.close
को कॉल करना होगा. ऐसा न करने पर, लाइव कैमरे का फ़ीड विश्लेषण के लिए अन्य इमेज प्रोसेस नहीं कर पाएगा.
TextAnalyzer.kt
recognizeTextOnDevice(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
imageProxy.close()
}
अपने डिवाइस पर ऐप्लिकेशन चलाना
अब Android Studio टूलबार में, चालू करें () पर क्लिक करें. ऐप्लिकेशन लोड होने के बाद, यह रीयल-टाइम में कैमरे से टेक्स्ट की पहचान करने लगेगा. पुष्टि करने के लिए, कैमरे को किसी टेक्स्ट पर ले जाएं.
ML Kit के भाषा आइडेंटिफ़ायर का इंस्टैंश बनाना
MainViewModel.kt
में यह फ़ील्ड जोड़ें. इस तरह, भाषा के आइडेंटिफ़ायर का हैंडल मिलता है, ताकि अगले चरण में इसका इस्तेमाल किया जा सके.
MainViewModel.kt
private val languageIdentification = LanguageIdentification.getClient()
पहचाने गए टेक्स्ट पर, डिवाइस पर भाषा की पहचान करने की सुविधा चलाना
इमेज में पहचाने गए टेक्स्ट की भाषा जानने के लिए, ML Kit के Language Identifier का इस्तेमाल करें.
MainViewModel.kt
में sourceLang
फ़ील्ड की परिभाषा में, TODO को नीचे दिए गए कोड से बदलें. यह स्निपेट, भाषा की पहचान करने के तरीके को कॉल करता है और नतीजे को असाइन करता है. हालांकि, ऐसा तब ही होता है, जब नतीजा "und" न हो.
MainViewModel.kt
languageIdentification.identifyLanguage(text)
.addOnSuccessListener {
if (it != "und")
result.value = Language(it)
}
अपने डिवाइस पर ऐप्लिकेशन चलाना
अब Android Studio टूलबार में, चालू करें () पर क्लिक करें. ऐप्लिकेशन लोड होने के बाद, यह कैमरे से टेक्स्ट को पहचानना शुरू कर देगा. साथ ही, रीयल-टाइम में टेक्स्ट की भाषा की पहचान करेगा. पुष्टि करने के लिए, कैमरे को किसी टेक्स्ट पर ले जाएं.
MainViewModel.kt
में translate()
फ़ंक्शन को, यहां दिए गए कोड से बदलें. यह फ़ंक्शन, सोर्स भाषा की वैल्यू, टारगेट भाषा की वैल्यू, और सोर्स टेक्स्ट को लेकर अनुवाद करता है. ध्यान दें कि अगर टारगेट भाषा का चुना गया मॉडल अब तक डिवाइस पर डाउनलोड नहीं हुआ है, तो हम downloadModelIfNeeded()
को कॉल करके उसे डाउनलोड करते हैं. इसके बाद, अनुवाद की प्रोसेस शुरू करते हैं.
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
}
}
ऐप्लिकेशन को सिम्युलेटर पर चलाना
अब Android Studio टूलबार में, चालू करें () पर क्लिक करें. ऐप्लिकेशन लोड होने के बाद, यह नीचे दी गई चलती-फिरती इमेज की तरह दिखेगा. इसमें टेक्स्ट की पहचान करने की सुविधा और पहचानी गई भाषा के नतीजे दिखेंगे. साथ ही, चुनी गई भाषा में अनुवाद किया गया टेक्स्ट भी दिखेगा. आपके पास 59 भाषाओं में से किसी भी भाषा को चुनने का विकल्प है.
बधाई हो, आपने ML Kit का इस्तेमाल करके, अपने ऐप्लिकेशन में डिवाइस पर टेक्स्ट पहचानने, भाषा पहचानने, और अनुवाद करने की सुविधा जोड़ दी है! अब लाइव कैमरा फ़ीड से टेक्स्ट और उसकी भाषा पहचानी जा सकती है. साथ ही, इस टेक्स्ट का अनुवाद अपनी पसंद की भाषा में रियल-टाइम में किया जा सकता है.
हमने क्या-क्या शामिल किया है
- अपने Android ऐप्लिकेशन में ML Kit जोड़ने का तरीका
- इमेज में टेक्स्ट की पहचान करने के लिए, ML Kit में डिवाइस पर टेक्स्ट की पहचान करने की सुविधा का इस्तेमाल करने का तरीका
- टेक्स्ट की भाषा की पहचान करने के लिए, ML Kit में डिवाइस पर भाषा पहचानने की सुविधा का इस्तेमाल करने का तरीका
- ML Kit में डिवाइस पर अनुवाद की सुविधा का इस्तेमाल करके, टेक्स्ट का डाइनैमिक तौर पर 59 भाषाओं में अनुवाद करने का तरीका
- ML Kit के एपीआई के साथ CameraX का इस्तेमाल करने का तरीका
अगले चरण
- अपने Android ऐप्लिकेशन में ML Kit और CameraX का इस्तेमाल करें!