ML Kit to mobilny pakiet SDK, który udostępnia zaawansowane funkcje uczenia maszynowego Google w wysokiej jakości, a jednocześnie łatwym w użyciu pakiecie. Niezależnie od tego, czy dopiero zaczynasz korzystać z systemów uczących się, czy masz już doświadczenie w tej dziedzinie, możesz łatwo wdrożyć potrzebną funkcję za pomocą kilku linii kodu. Nie musisz mieć szczegółowej wiedzy o sieciach neuronowych ani optymalizacji modeli, aby zacząć korzystać z tej funkcji.
Jak to działa?
ML Kit ułatwia stosowanie technik uczenia maszynowego w aplikacjach, ponieważ łączy w jednym pakiecie SDK technologie uczenia maszynowego od Google, takie jak Mobile Vision i TensorFlow Lite. Niezależnie od tego, czy potrzebujesz potężnych możliwości modeli na urządzeniu Mobile Vision czy elastyczności niestandardowych modeli TensorFlow Lite, ML Kit umożliwia to za pomocą kilku linii kodu.
W tych ćwiczeniach z programowania poznasz proste kroki, które pozwolą Ci dodać do istniejącej aplikacji na Androida rozpoznawanie tekstu, identyfikację języka i tłumaczenie z obrazu z kamery w czasie rzeczywistym. Dowiesz się też, jak korzystać z interfejsów API CameraX i ML Kit.
Co utworzysz
W tym ćwiczeniu z programowania utworzysz aplikację na Androida za pomocą ML Kit. Aplikacja będzie używać interfejsu API do rozpoznawania tekstu w ML Kit na urządzeniu, aby rozpoznawać tekst z obrazu z kamery w czasie rzeczywistym. Do identyfikacji języka rozpoznanego tekstu zostanie użyte ML Kit Language Identification API. Na koniec aplikacja przetłumaczy ten tekst na dowolny z 59 dostępnych języków za pomocą interfejsu ML Kit Translation API.
Powinien pojawić się ekran podobny do tego poniżej.

Czego się nauczysz
- Jak za pomocą pakietu ML Kit SDK łatwo dodać funkcje uczenia maszynowego do dowolnej aplikacji na Androida
- Interfejsy ML Kit do rozpoznawania tekstu, identyfikacji języka i tłumaczenia oraz ich możliwości.
- Jak używać biblioteki CameraX z interfejsami ML Kit
Co będzie Ci potrzebne
- najnowsza wersja Android Studio (4.0 lub nowsza);
- fizyczne urządzenie z Androidem,
- Przykładowy kod
- podstawowa znajomość tworzenia aplikacji na Androida w Kotlinie;
Ten moduł dotyczy ML Kit. Nieistotne koncepcje i bloki kodu zostały już zaimplementowane.
Pobieranie kodu
Aby pobrać cały kod tego ćwiczenia, kliknij ten link:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego (mlkit-android) ze wszystkimi potrzebnymi zasobami. W tym ćwiczeniu będziesz potrzebować tylko zasobów z podkatalogu translate.
Podkatalog translate w repozytorium mlkit-android zawiera ten katalog:
starter – kod startowy, na którym możesz budować w tym ćwiczeniu z programowania.
W pliku app/build.gradle sprawdź, czy uwzględniono niezbędne zależności ML Kit i 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'Po zaimportowaniu projektu do Android Studio i sprawdzeniu zależności ML Kit możesz uruchomić aplikację po raz pierwszy. Uruchom emulator Android Studio i kliknij Uruchom (
) na pasku narzędzi Android Studio.
Aplikacja powinna się uruchomić na urządzeniu. Możesz skierować kamerę na różne teksty, aby zobaczyć obraz na żywo. Funkcja rozpoznawania tekstu nie została jeszcze zaimplementowana.

W tym kroku dodamy do Twojej aplikacji funkcję rozpoznawania tekstu z kamery wideo.
Tworzenie instancji wykrywacza tekstu w ML Kit
Dodaj to pole na początku TextAnalyzer.kt. W ten sposób uzyskujesz dostęp do rozpoznawacza tekstu, który będzie używany w kolejnych krokach.
TextAnalyzer.kt
private val detector = TextRecognition.getClient()Rozpoznawanie tekstu na urządzeniu na obrazie z Vision ( utworzonym za pomocą bufora z kamery)
Biblioteka CameraX udostępnia strumień obrazów z kamery gotowych do analizy. Zastąp metodę recognizeTextOnDevice() w klasie TextAnalyzer, aby używać rozpoznawania tekstu za pomocą ML Kit na każdej klatce obrazu.
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()
}
}
}
Następujący wiersz kodu pokazuje, jak wywołujemy powyższą metodę, aby rozpocząć rozpoznawanie tekstu. Na końcu metody analyze() dodaj ten wiersz. Pamiętaj, że po zakończeniu analizy obrazu musisz wywołać funkcję imageProxy.close. W przeciwnym razie transmisja na żywo z kamery nie będzie mogła przetwarzać kolejnych obrazów na potrzeby analizy.
TextAnalyzer.kt
recognizeTextOnDevice(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
imageProxy.close()
}Uruchom aplikację na urządzeniu
Teraz na pasku narzędzi Android Studio kliknij Uruchom (
). Po załadowaniu aplikacji powinna ona zacząć rozpoznawać tekst z kamery w czasie rzeczywistym. Skieruj aparat na dowolny tekst, aby go odczytać.
Tworzenie instancji identyfikatora języka ML Kit
Dodaj do MainViewModel.kt to pole: W ten sposób uzyskasz identyfikator języka, który będzie używany w następnym kroku.
MainViewModel.kt
private val languageIdentification = LanguageIdentification.getClient()Wykonywanie identyfikacji języka na urządzeniu na podstawie wykrytego tekstu
Użyj identyfikatora języka ML Kit, aby poznać język wykrytego tekstu na obrazie.
Zastąp TODO w definicji pola sourceLang w pliku MainViewModel.kt tym kodem. Ten fragment kodu wywołuje metodę identyfikacji języka i przypisuje wynik, jeśli nie jest on nieokreślony („und”).
MainViewModel.kt
languageIdentification.identifyLanguage(text)
.addOnSuccessListener {
if (it != "und")
result.value = Language(it)
}Uruchom aplikację na urządzeniu
Teraz na pasku narzędzi Android Studio kliknij Uruchom (
). Po załadowaniu aplikacji powinna ona zacząć rozpoznawać tekst z kamery i określać język tekstu w czasie rzeczywistym. Skieruj aparat na dowolny tekst, aby go odczytać.
Zastąp funkcję translate() w pliku MainViewModel.kt tym kodem. Ta funkcja przyjmuje wartość języka źródłowego, wartość języka docelowego i tekst źródłowy, a następnie wykonuje tłumaczenie. Zwróć uwagę, że jeśli wybrany model języka docelowego nie został jeszcze pobrany na urządzenie, wywołujemy funkcję downloadModelIfNeeded(), aby to zrobić, a następnie wykonujemy tłumaczenie.
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
}
}
Uruchamianie aplikacji na symulatorze
Teraz na pasku narzędzi Android Studio kliknij Uruchom (
). Po załadowaniu aplikacji powinna ona wyglądać jak animowane zdjęcie poniżej. Widok obejmuje rozpoznawanie tekstu, rozpoznanie języka i przetłumaczony tekst w wybranym języku. Możesz wybrać dowolny z 59 języków.

Gratulacje! Korzystając z ML Kit, dodałeś/dodałaś do aplikacji rozpoznawanie tekstu, identyfikację języka i tłumaczenie. Teraz możesz rozpoznawać tekst i jego język na podstawie obrazu z kamery na żywo, a potem tłumaczyć go na wybrany język – wszystko w czasie rzeczywistym.
Omówione zagadnienia
- Jak dodać ML Kit do aplikacji na Androida
- Jak używać rozpoznawania tekstu na urządzeniu w ML Kit do rozpoznawania tekstu na obrazach
- Jak używać rozpoznawania języka na urządzeniu w ML Kit do identyfikowania języka tekstu
- Jak korzystać z tłumaczenia na urządzeniu w ML Kit, aby dynamicznie tłumaczyć tekst na 59 języków
- Jak używać CameraX w połączeniu z interfejsami ML Kit
Dalsze kroki
- Używaj ML Kit i CameraX w swojej aplikacji na Androida.