ML Kit এবং CameraX: Android এর সাহায্যে ভাষা চিনুন, শনাক্ত করুন এবং পাঠ্য অনুবাদ করুন

1. ভূমিকা

ML Kit হল একটি মোবাইল SDK যা Android এবং Android অ্যাপগুলিতে Google-এর মেশিন লার্নিং দক্ষতাকে একটি শক্তিশালী কিন্তু সহজেই ব্যবহারযোগ্য প্যাকেজে নিয়ে আসে। আপনি নতুন বা মেশিন লার্নিংয়ে অভিজ্ঞ যাই হোন না কেন, আপনি কেবল কয়েকটি লাইন কোডের মাধ্যমে আপনার প্রয়োজনীয় কার্যকারিতা সহজেই বাস্তবায়ন করতে পারেন। শুরু করার জন্য নিউরাল নেটওয়ার্ক বা মডেল অপ্টিমাইজেশন সম্পর্কে গভীর জ্ঞান থাকার প্রয়োজন নেই।

এটা কিভাবে কাজ করে?

ML Kit আপনার অ্যাপগুলিতে ML কৌশল প্রয়োগ করা সহজ করে তোলে, Google এর ML প্রযুক্তি, যেমন Mobile Vision এবং TensorFlow Lite , কে একটি একক SDK-তে একত্রিত করে। আপনার Mobile Vision-এর অন-ডিভাইস মডেলগুলির রিয়েল-টাইম ক্ষমতার শক্তির প্রয়োজন হোক বা কাস্টম TensorFlow Lite মডেলগুলির নমনীয়তার প্রয়োজন হোক, ML Kit মাত্র কয়েকটি লাইন কোডের মাধ্যমে এটি সম্ভব করে তোলে।

এই কোডল্যাবটি আপনার বিদ্যমান অ্যান্ড্রয়েড অ্যাপে রিয়েল-টাইম ক্যামেরা ফিড থেকে টেক্সট রিকগনিশন, ভাষা সনাক্তকরণ এবং অনুবাদ যোগ করার সহজ ধাপগুলি আপনাকে দেখাবে। এই কোডল্যাবটি ML কিট API-এর সাথে CameraX ব্যবহারের সর্বোত্তম অনুশীলনগুলিও তুলে ধরবে।

তুমি কী তৈরি করবে

এই কোডল্যাবে, আপনি ML Kit ব্যবহার করে একটি Android অ্যাপ তৈরি করতে যাচ্ছেন। আপনার অ্যাপটি রিয়েল-টাইম ক্যামেরা ফিড থেকে টেক্সট শনাক্ত করতে ML Kit Text Recognition অন-ডিভাইস API ব্যবহার করবে। এটি স্বীকৃত টেক্সটের ভাষা শনাক্ত করতে ML Kit Language Identification API ব্যবহার করবে। পরিশেষে, আপনার অ্যাপটি ML Kit Translation API ব্যবহার করে 59টি বিকল্পের মধ্যে যেকোনো নির্বাচিত ভাষায় এই টেক্সটটি অনুবাদ করবে।

শেষ পর্যন্ত, আপনি নীচের ছবির মতো কিছু দেখতে পাবেন।

e2a9b80f1ff442d7.png সম্পর্কে

তুমি কি শিখবে

  • যেকোনো অ্যান্ড্রয়েড অ্যাপে সহজেই মেশিন লার্নিং ক্ষমতা যোগ করার জন্য ML Kit SDK কীভাবে ব্যবহার করবেন।
  • এমএল কিট টেক্সট রিকগনিশন, ভাষা শনাক্তকরণ, অনুবাদ এপিআই এবং তাদের ক্ষমতা।
  • ML Kit API গুলির সাথে CameraX লাইব্রেরি কীভাবে ব্যবহার করবেন।

তোমার যা লাগবে

  • অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v4.0+)
  • একটি বাস্তব অ্যান্ড্রয়েড ডিভাইস
  • নমুনা কোড
  • কোটলিনে অ্যান্ড্রয়েড ডেভেলপমেন্টের প্রাথমিক জ্ঞান

এই কোডল্যাবটি এমএল কিটের উপর দৃষ্টি নিবদ্ধ করে। অপ্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলি ইতিমধ্যেই আপনার জন্য সরবরাহ এবং বাস্তবায়িত করা হয়েছে।

2. সেট আপ করা

কোডটি ডাউনলোড করুন

এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে নিচের লিঙ্কে ক্লিক করুন:

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি আপনার প্রয়োজনীয় সমস্ত রিসোর্স সহ একটি রুট ফোল্ডার ( mlkit-android ) আনপ্যাক করবে। এই কোডল্যাবের জন্য, আপনার কেবল translate সাবডিরেক্টরিতে থাকা রিসোর্সগুলির প্রয়োজন হবে।

mlkit-android সংগ্রহস্থলের translate সাবডিরেক্টরিতে নিম্নলিখিত ডিরেক্টরি রয়েছে:

  • android_studio_folder.png সম্পর্কে স্টার্টার — এই কোডল্যাবে আপনি যে কোডের উপর ভিত্তি করে তৈরি করবেন তা হল স্টার্টিং কোড।

৩. প্রকল্প আমদানি করুন এবং এমএল কিট এবং ক্যামেরাএক্স নির্ভরতা যাচাই করুন

স্টার্টার প্রজেক্টটি অ্যান্ড্রয়েড স্টুডিওতে ইম্পোর্ট করুন। 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'

৪. স্টার্টার অ্যাপটি চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন এবং ML কিট নির্ভরতা পরীক্ষা করেছেন, আপনি প্রথমবারের মতো অ্যাপটি চালানোর জন্য প্রস্তুত! রান ক্লিক করুন ( এক্সিকিউট.পিএনজি ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত এবং আপনি লাইভ ফিড দেখতে ক্যামেরাটিকে বিভিন্ন টেক্সটের দিকে নির্দেশ করতে পারেন, কিন্তু টেক্সট শনাক্তকরণ কার্যকারিতা এখনও বাস্তবায়িত হয়নি।

bd1489441c334de3.png সম্পর্কে

৫. টেক্সট রিকগনিশন যোগ করুন

এই ধাপে, আমরা ভিডিও ক্যামেরা থেকে টেক্সট শনাক্ত করার জন্য আপনার অ্যাপে কার্যকারিতা যোগ করব।

এমএল কিট টেক্সট ডিটেক্টর চালু করুন

TextRecognition চালু করতে TextAnalyzer.kt এর উপরে TODO তে ক্লিক করুন। এভাবেই আপনি পরবর্তী ধাপগুলিতে টেক্সট রিকগনিজার ব্যবহার করার জন্য একটি হ্যান্ডেল পাবেন। আমাদের ডিটেক্টরটিকে লাইফসাইকেল অবজারভার হিসেবে যুক্ত করতে হবে যাতে ডিটেক্টরটি আর প্রয়োজন না থাকলে সঠিকভাবে বন্ধ করা যায়।

টেক্সটঅ্যানালাইজার.কেটি

private val detector = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)

init {
   lifecycle.addObserver(detector)
}

একটি ইনপুট ছবিতে টেক্সট রিকগনিশন চালান (ক্যামেরা থেকে বাফার ব্যবহার করে তৈরি)

CameraX লাইব্রেরি ক্যামেরা থেকে ছবি বিশ্লেষণের জন্য প্রস্তুত করে এমন একটি স্ট্রিম সরবরাহ করে। প্রতিটি ছবির ফ্রেমে ML Kit টেক্সট রিকগনিশন ব্যবহার করতে TextAnalyzer ক্লাসে recognizeText() পদ্ধতিটি প্রতিস্থাপন করুন।

টেক্সটঅ্যানালাইজার.কেটি

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()
           }
       }
}

নিচের লাইনটি দেখায় কিভাবে আমরা টেক্সট শনাক্তকরণ শুরু করার জন্য উপরের পদ্ধতিটি কল করি। analyze() পদ্ধতির শেষে নিম্নলিখিত লাইনটি যোগ করুন। মনে রাখবেন যে চিত্রটিতে বিশ্লেষণ সম্পূর্ণ হয়ে গেলে আপনাকে imageProxy.close কল করতে হবে, অন্যথায় লাইভ ক্যামেরা ফিড বিশ্লেষণের জন্য আরও ছবি প্রক্রিয়া করতে সক্ষম হবে না।

টেক্সটঅ্যানালাইজার.কেটি

recognizeText(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
   imageProxy.close()
}

আপনার ডিভাইসে অ্যাপটি চালান

এখন রান ক্লিক করুন ( এক্সিকিউট.পিএনজি ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। অ্যাপটি লোড হয়ে গেলে, এটি রিয়েল-টাইমে ক্যামেরা থেকে টেক্সট চিনতে শুরু করবে। নিশ্চিত করতে আপনার ক্যামেরাটিকে যেকোনো টেক্সটের দিকে নির্দেশ করুন। যদি আপনার অ্যাপ কোনও টেক্সট চিনতে না পারে, তাহলে ক্যামেরাটিকে টেক্সটের দিকে নির্দেশ করার আগে একটি ফাঁকা জায়গায় ক্যামেরাটি নির্দেশ করে সনাক্তকরণ 'রিসেট' করার চেষ্টা করুন।

৬. ভাষা শনাক্তকরণ যোগ করুন

ML কিট ল্যাঙ্গুয়েজ আইডেন্টিফায়ারটি চালু করুন

MainViewModel.kt মূল ফোল্ডারে অবস্থিত। ফাইলটিতে নেভিগেট করুন এবং নিম্নলিখিত ক্ষেত্রটি MainViewModel.kt তে যুক্ত করুন। এইভাবে আপনি পরবর্তী ধাপে ব্যবহার করার জন্য ভাষা শনাক্তকারীর একটি হ্যান্ডেল পাবেন।

MainViewModel.kt সম্পর্কে

private val languageIdentifier = LanguageIdentification.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)

এছাড়াও, আপনি নিশ্চিত করতে চান যে ক্লায়েন্টগুলি যখন আর প্রয়োজন হয় না তখন সঠিকভাবে বন্ধ করা হয়েছে। এটি করার জন্য, ViewModel এর onCleared() পদ্ধতিটি ওভাররাইড করুন।

MainViewModel.kt সম্পর্কে

override fun onCleared() {
   languageIdentifier.close()
   translators.evictAll()
}

সনাক্ত করা টেক্সটে ডিভাইসে ভাষা সনাক্তকরণ চালান

ইমেজ থেকে সনাক্ত করা টেক্সটের ভাষা পেতে ML কিট ল্যাঙ্গুয়েজ আইডেন্টিফায়ার ব্যবহার করুন।

MainViewModel.kt এর sourceLang ফিল্ডের সংজ্ঞায় TODO কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন। এই স্নিপেটটি ভাষা শনাক্তকরণ পদ্ধতিকে কল করে এবং যদি এটি অনির্ধারিত ("und") না থাকে তবে ফলাফল নির্ধারণ করে। একটি অনির্ধারিত ভাষা মানে হল যে API সমর্থিত ভাষার তালিকার উপর ভিত্তি করে ভাষা সনাক্ত করতে সক্ষম হয়নি।

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
}

আপনার ডিভাইসে অ্যাপটি চালান

এখন রান ক্লিক করুন ( এক্সিকিউট.পিএনজি ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। অ্যাপটি লোড হয়ে গেলে, এটি ক্যামেরা থেকে টেক্সট চিনতে শুরু করবে এবং রিয়েল-টাইমে টেক্সটের ভাষা শনাক্ত করতে পারবে। নিশ্চিত করতে আপনার ক্যামেরাটি যেকোনো টেক্সটের দিকে নির্দেশ করুন।

৭. অনুবাদ যোগ করুন

MainViewModel.kttranslate() ফাংশনটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন। এই ফাংশনটি উৎস ভাষার মান, লক্ষ্য ভাষার মান এবং উৎস পাঠ্য গ্রহণ করে এবং অনুবাদ সম্পাদন করে। লক্ষ্য করুন কিভাবে নির্বাচিত লক্ষ্য ভাষার মডেলটি যদি এখনও ডিভাইসে ডাউনলোড না করা হয়, তাহলে আমরা 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
   }
}

সিমুলেটরে অ্যাপটি চালান

এখন রান ক্লিক করুন ( এক্সিকিউট.পিএনজি ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। অ্যাপটি লোড হয়ে গেলে, এটি এখন নীচের চলমান ছবির মতো দেখাবে, যেখানে টেক্সট শনাক্তকরণ এবং চিহ্নিত ভাষার ফলাফল এবং নির্বাচিত ভাষায় অনুবাদিত টেক্সট দেখানো হবে। আপনি ৫৯টি ভাষার যেকোনো একটি বেছে নিতে পারেন।

e2a9b80f1ff442d7.png সম্পর্কে

৮. অভিনন্দন!

অভিনন্দন, আপনি ML Kit ব্যবহার করে আপনার অ্যাপে ডিভাইসে টেক্সট রিকগনিশন, ভাষা শনাক্তকরণ এবং অনুবাদ যোগ করেছেন! এখন আপনি লাইভ ক্যামেরা ফিড থেকে টেক্সট এবং এর ভাষা চিনতে পারবেন এবং রিয়েল-টাইমে আপনার পছন্দের ভাষায় এই টেক্সটটি অনুবাদ করতে পারবেন।

আমরা যা কভার করেছি

  • আপনার অ্যান্ড্রয়েড অ্যাপে এমএল কিট কীভাবে যুক্ত করবেন
  • ছবিতে লেখা শনাক্ত করার জন্য ML Kit-এ ডিভাইসে লেখা শনাক্তকরণ পদ্ধতি কীভাবে ব্যবহার করবেন
  • টেক্সটের ভাষা শনাক্ত করার জন্য ML কিটে ডিভাইসের ভাষা শনাক্তকরণ কীভাবে ব্যবহার করবেন
  • ML Kit-এ অন-ডিভাইস অনুবাদ ব্যবহার করে ৫৯টি ভাষায় গতিশীলভাবে টেক্সট অনুবাদ করার পদ্ধতি
  • ML Kit API-এর সাথে CameraX কীভাবে ব্যবহার করবেন

পরবর্তী পদক্ষেপ

  • আপনার নিজস্ব অ্যান্ড্রয়েড অ্যাপে ML Kit এবং CameraX ব্যবহার করুন!

আরও জানুন