ML Kit: co to jest, biblioteki i ML dla Android i iOS

Autor: IT Sectr Opublikowano: 2026-07-18 Czas czytania: 10 min

ML Kit — to mobilny SDK od Google do integracji gotowych modeli ML w aplikacjach Android i iOS. ML Kit udostępnia API do rozpoznawania tekstu, wykrywania twarzy, skanowania kodów kreskowych, rozpoznawania obiektów, tłumaczenia tekstu, określania pozy i segmentacji obrazów — wszystkie modele działają na urządzeniu (on-device) bez obowiązkowego połączenia z serwerem. Według danych Google ML Kit, 2025, biblioteka jest używana w ponad 100 000 aplikacji, przetwarzając 2+ miliardy zapytań dziennie

Najważniejsze

  • ML Kit — SDK od Google do funkcji ML w aplikacjach mobilnych
  • On-device — wszystkie modele działają lokalnie, bez internetu
  • Gotowe API — tekst, twarze, kody kreskowe, obiekty, tłumaczenie, pozy
  • Cross-platform — obsługa Android i iOS przez jeden API
  • Niestandardowe modele — ładowanie własnych modeli TFLite

Czym jest ML Kit: możliwości i architektura

ML Kit — to kompatybilny z Firebase SDK dla platform mobilnych, udostępniający 14 ML-API dla Android i iOS. ML Kit zastąpił Firebase ML (stara nazwa) w 2020 roku i jest teraz dostępny jako samodzielny SDK przez Google Play Services (Android) lub CocoaPods/SPM (iOS). Kluczową zaletą jest to, że wszystkie modele działają on-device, co gwarantuje poufność danych i działanie bez internetu.

Architektura ML Kit opiera się na dwóch trybach: bundled (model wbudowany w APK/IPA) i downloaded (model pobierany przez Google Play Services przy pierwszym wywołaniu). Tryb bundled zapewnia natychmiastowy start, ale zwiększa rozmiar aplikacji o 5–20 MB. Downloaded — oszczędza miejsce, ale wymaga internetu przy pierwszym uruchomieniu. Google zaleca downloaded dla API używanych nie na każdym ekranie (Object Detection, Pose Detection).

Dostosowanie przez TFLite — ML Kit pozwala załadować własny model TensorFlow Lite przez Custom Model API. Daje to elastyczność — używaj gotowych API do standardowych zadań i własnego modelu do specyficznych. ML Kit udostępnia uniwersalny handler Input/Output działający z ByteBuffer i FloatArray. Według Google (2025), 40% projektów ML Kit łączy gotowe API z niestandardowymi modelami.

kotlin
// Konfiguracja ML Kit Text Recognition (Android)
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)

val image = InputImage.fromBitmap(bitmap)
recognizer.process(image)
    .addOnSuccessListener { result ->
        for (block in result.textBlocks) {
            Log.d("MLKit", block.text)
        }
    }
    .addOnFailureListener { error ->
        // Błąd przetwarzania
    }

Firebase vs standalone — ML Kit może być używany z Firebase (funkcje Cloud, Analytics, Crashlytics) lub jako samodzielny SDK bez Firebase. Tryb standalone łączy się przez Google Play Services (Android) bez konfiguracji konta Firebase. Cloud API są dostępne przez Firebase (Cloud Vision, Natural Language) do zadań wymagających sieci neuronowych na serwerze Google — ale te funkcje są płatne i nie on-device.

ML Kit Text Recognition: rozpoznawanie tekstu

ML Kit Text Recognition — API do optycznego rozpoznawania znaków (OCR) na obrazach. Obsługuje dwa tryby: Latin-based (alfabet łaciński, cyrylica, cyfry — 45 języków) i Chinese/Japanese/Korean (CJK — języki hieroglificzne). Rozpoznawanie Latin wykorzystuje model V2 (szybszy) lub V1 (bardzo dokładny). V2 zapewnia prędkość 10–30 ms na klatkę, V1 — 50–100 ms.

Możliwości Text Recognition obejmują rozpoznawanie tekstu drukowanego i odręcznego, określanie orientacji tekstu, wykrywanie wierszy, słów i znaków, określanie języka tekstu. API zwraca strukturę: Text → TextBlock → Line → Element (Word/Symbol). Każdy element ma bounding box, confidence i rozpoznany tekst. Według Google (2025), dokładność ML Kit Text Recognition V2 dla alfabetu łacińskiego wynosi 96%, dla cyrylicy — 91%.

Text Recognition w czasie rzeczywistym — użycie z CameraX lub Camera2 do strumienia wideo. Utwórz ImageAnalysis.Analyzer i przekazuj klatki do ML Kit. Dla wydajności zmniejsz rozdzielczość klatki do 480p (640x480) — to optymalny balans między szybkością a dokładnością. ML Kit automatycznie obsługuje obrót obrazu, ale dla maksymalnej prędkości przekazuj obraz w prawidłowej orientacji.

kotlin
// Rozpoznawanie tekstu z analizatorem CameraX
class TextAnalyzer : ImageAnalysis.Analyzer {
    private val recognizer = TextRecognition.getClient(
        TextRecognizerOptions.DEFAULT_OPTIONS
    )

    override fun analyze(image: ImageProxy) {
        val inputImage = InputImage.fromMediaImage(
            image.image, image.imageInfo.rotationDegrees
        )
        recognizer.process(inputImage)
            .addOnSuccessListener { /* text found */ }
            .addOnCompleteListener { image.close() }
    }
}

Optymalizacja Text Recognition: używaj ImageDecoder do poprawy rozpoznawania rozmazanych lub przyciemnionych obrazów. Dla tekstu drukowanego — TextRecognizerOptions.DEFAULT_OPTIONS (model V2). Dla odręcznego — TextRecognizerOptions.SCRIPT_LATIN (dokładniej, ale wolniej). W projektach IT Sectr używamy V2 do rozpoznawania dokumentów i modelu Latin do czeków i paragonów.

ML Kit Face Detection: wykrywanie twarzy i konturów

ML Kit Face Detection — API do wykrywania twarzy na obrazach i wideo. Określa bounding box twarzy, współrzędne oczu, nosa, ust, uszu (468 punktów konturowych) i podstawowe wyrażenia: uśmiech, otwarte usta, zamknięte oczy. Face Detection to jedno z najszybszych API ML Kit: 5–15 ms na klatkę w zależności od liczby twarzy i punktów konturowych.

Tryby Face Detection: contour mode (468 punktów konturu twarzy do dokładnego nakładania masek/filtrów), classification mode (określanie uśmiechu, otwartych oczu), landmark mode (kluczowe punkty bez konturu). Tryby są łączone w FaceDetectorOptions. Włączenie wszystkich trybów spowalnia detekcję 2–3 razy — używaj minimalnego niezbędnego zestawu dla swojego zadania.

Face Detection w aplikacjach AR — na podstawie punktów konturowych ML Kit buduje maskę twarzy do filtrów typu Snapchat. ML Kit zwraca 468 punktów ze współrzędnymi x, y, z (z = głębokość). Punkty są aktualizowane 30–60 razy na sekundę na nowoczesnych urządzeniach. Do nakładania AR używaj FaceMeshDetector (wyspecjalizowana wersja) — zwraca również trójkąty siatki do teksturowania.

kotlin
// Wykrywanie twarzy z punktami konturowymi
val options = FaceDetectorOptions.Builder()
    .setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
    .setContourMode(FaceDetectorOptions.ContourMode.ALL)
    .setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
    .build()
val detector = FaceDetection.getClient(options)

detector.process(inputImage)
    .addOnSuccessListener { faces ->
        faces.forEach { face ->
            val bounds = face.boundingBox
            val smileProb = face.smilingProbability
        }
    }

Ograniczenia Face Detection: API nie rozpoznaje, do kogo należy twarz (face recognition) — tylko wykrywa twarze. Do identyfikacji osoby używaj FaceNet lub ArcFace na niestandardowym modelu TFLite. ML Kit poprawnie działa z twarzami pod kątem do 45°, w okularach i z częściową maską. Dla profili (90°) dokładność spada do 40–60%.

ML Kit Barcode Scanning: odczytywanie wszystkich formatów kodów

ML Kit Barcode Scanning — API do odczytywania i dekodowania jednowymiarowych (EAN, UPC, Code 128) i dwuwymiarowych (QR, Data Matrix, PDF417) kodów kreskowych. Barcode Scanning wykrywa kod na obrazie — w przeciwieństwie do ZXing, który wymaga, aby kod zajmował prawie całą klatkę. ML Kit wykrywa kod dowolnego rozmiaru i orientacji, w tym wiele kodów na jednej klatce (tryb multi-barcode).

Obsługiwane formaty: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit automatycznie określa format — nie trzeba podawać typu kodu. W produkcji używaj setBarcodeFormats() do ograniczenia obsługiwanych formatów — to przyspiesza skanowanie o 30–50% poprzez wykluczenie zbędnych algorytmów dekodowania.

Barcode Scanning w czasie rzeczywistym — podobnie jak Text Recognition, integracja z CameraX. ML Kit przetwarza klatki z częstotliwością do 60 FPS. Dla maksymalnej prędkości włącz setPerformanceMode(PerformanceMode.FAST). Barcode Scanning ML Kit jest szybszy od ZXing 2–3 razy i dokładniej wykrywa rozmazane lub częściowo zasłonięte kody. Według Google (2025), ML Kit Barcode Scanning ma 98.5% dokładności przy standardowym oświetleniu.

kotlin
// Skanowanie kodów kreskowych z filtrem formatu
val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_QR_CODE,
        Barcode.FORMAT_EAN_13)
    .build()
val scanner = BarcodeScanning.getClient(options)

scanner.process(inputImage)
    .addOnSuccessListener { barcodes ->
        barcodes.forEach { barcode ->
            val value = barcode.rawValue
            val type = barcode.format
        }
    }

Porównanie z ZXing: ML Kit jest szybszy, dokładniejszy i prostszy w integracji. ZXing — open-source, działa całkowicie offline, nie wymaga Google Play Services. ML Kit wymaga Google Play Services (Android) lub CocoaPods (iOS). Dla aplikacji działających na urządzeniach bez Google (Huawei, Amazon Fire) używaj ZXing jako fallback. Dla pozostałych — ML Kit, ponieważ zapewnia lepsze UX dzięki wykrywaniu wielu kodów.

Object Detection i Pose Detection w ML Kit

ML Kit Object Detection — API do wykrywania i śledzenia obiektów na obrazach. Wykrywa obiekty z 1000+ kategorii (klasy ImageNet) — ludzie, zwierzęta, pojazdy, przedmioty codziennego użytku. Object Detection działa w dwóch trybach: single-image (pojedyncze zdjęcie) i streaming (strumień wideo ze śledzeniem). Tryb streaming śledzi obiekty między klatkami, przypisując każdemu unikalny track ID.

Pose Detection — API do określania pozy człowieka na podstawie 33 kluczowych punktów (szkielet): głowa, ramiona, łokcie, nadgarstki, biodra, kolana, stopy. Określa współrzędne (x, y, z) i confidence każdego punktu. Pose Detection znajduje zastosowanie w trackerach fitness (liczenie powtórzeń, kontrola formy), aplikacjach AR (awatara kopiującego ruchy) i analityce sportu. Szybkość — 10–30 ms na klatkę w zależności od liczby osób.

Object Tracking — ML Kit Object Detection ze śledzeniem między klatkami używa trackera opartego na Optical Flow. Gdy obiekt zostanie wykryty, tracker śledzi go bez ponownego wykrywania, co oszczędza CPU/GPU. Jeśli tracker straci obiekt (szybki ruch, zasłonięcie), ML Kit uruchamia ponowne wykrywanie. Według Google (2025), tracker utrzymuje obiekt w 95% klatek przy prędkości ruchu do 30 km/h.

kotlin
// Wykrywanie pozy (szkielet człowieka)
val poseDetector = PoseDetection.getClient(
    PoseDetectorOptions.Builder()
        .setDetectorMode(PoseDetectorOptions.STREAM_MODE)
        .build()
)

poseDetector.process(inputImage)
    .addOnSuccessListener { pose ->
        pose.allPoseLandmarks.forEach { landmark ->
            val type = landmark.landmarkType // LEWE_RAMIĘ, PRAWY_ŁOKIEĆ...
            val position = landmark.position3D
        }
    }

Selfie Segmentation — API do segmentacji osoby na obrazie (oddzielenie osoby od tła). Zwraca maskę pewności dla każdego piksela. Selfie Segmentation jest używane do rozmycia lub zamiany tła w rozmowach wideo, edytorach zdjęć i aplikacjach AR. Maska jest zwracana jako UInt8Array o rozmiarze oryginalnego obrazu — każdy piksel zawiera wartość od 0.0 (tło) do 1.0 (osoba).

Niestandardowe modele TFLite w ML Kit

Custom Model API — możliwość ładowania i uruchamiania własnych modeli TensorFlow Lite przez interfejs ML Kit. ML Kit udostępnia ujednolicony Input/Output API: ByteBuffer na wejściu, FloatArray/TensorImage na wyjściu. Pozwala to wykorzystać zalety ML Kit (zarządzanie modelem, przetwarzanie obrazów, integracja z CameraX) z niestandardowymi modelami face recognition, object classification, NLP i innymi.

Ładowanie modelu — umieść plik .tflite w assets/ (Android) lub bundle (iOS) i załaduj przez CustomModelDownloadConditions lub Firebase Model Manager. Do pobierania dużych modeli (5+ MB) używaj download conditions: Wi-Fi, naładowane, w tle. Google zaleca ładowanie modelu przy pierwszym uruchomieniu aplikacji, a nie w momencie pierwszego użycia.

kotlin
// Ładowanie niestandardowego modelu TFLite
val conditions = CustomModelDownloadConditions.Builder()
    .requireWifi()
    .build()
val remoteModel = CustomRemoteModel.Builder("my_model")
    .setRemoteModelName("my_model_v2")
    .build()

remoteModel.download(conditions)
    .addOnSuccessListener { /* model ready */ }
    .addOnFailureListener {
        // Użyj dołączonego modelu z zasobów
    }

Optymalizacja niestandardowych modeli: używaj TFLite Converter z kompatybilnością delegate. Dla maksymalnej wydajności kwantyzuj model (INT8) — to zmniejsza rozmiar modelu 4x i przyspiesza wnioskowanie 2–3x przez XNNPACK Delegate. ML Kit Custom Model API obsługuje Dynamic Shape (batch = 1), Image Input (UInt8, Float32) i Tensor Output.

Często zadawane pytania

Czym jest ML Kit w Android?

ML Kit — to SDK od Google z gotowymi modelami ML dla Android i iOS. Obejmuje API do rozpoznawania tekstu (OCR), wykrywania twarzy, skanowania kodów kreskowych, rozpoznawania obiektów, określania pozy, tłumaczenia i segmentacji. Działa na urządzeniu, nie wymaga internetu. Podłącza się przez Google Play Services (Android) lub CocoaPods (iOS) minimalnie — jedną linią zależności.

Czym ML Kit różni się od TensorFlow Lite?

ML Kit — wysokopoziomowy SDK z gotowymi API do konkretnych zadań (tekst, twarze, kody). TensorFlow Lite — niskopoziomowe środowisko uruchomieniowe do uruchamiania dowolnych modeli TFLite. ML Kit zawiera TFLite pod maską, ale dostarcza gotowy kod i optymalizacje dla standardowych zadań. Jeśli potrzebujesz rozpoznać tekst — ML Kit (5 linii kodu). Jeśli własną sieć neuronową — TFLite (20+ linii).

Czy ML Kit działa bez internetu?

Tak, wszystkie podstawowe API ML Kit (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) działają w pełni on-device bez połączenia z internetem po początkowym pobraniu modelu. Cloud API (Cloud Vision, Natural Language) — opcjonalne i wymagają internetu. Dla modeli downloaded internet jest potrzebny tylko przy pierwszym pobraniu modelu.

Czy można używać ML Kit na iOS?

Tak, ML Kit w pełni obsługuje iOS przez CocoaPods lub Swift Package Manager. API są analogiczne do wersji Android. Dla iOS ML Kit używa Vision Framework i Core ML pod maską — modele działają na Apple Neural Engine (A12+). ML Kit na iOS działa z UIImage, CVPixelBuffer i CMSampleBuffer. Obsługa iOS 12+ i Xcode 15+.

Czy ML Kit jest darmowy?

Tak, on-device API ML Kit są całkowicie darmowe, bez limitów liczby zapytań. Cloud API (przez Firebase) — płatne po przekroczeniu darmowego limitu ($200/miesiąc gratis). Modele on-device nie wymagają konta Firebase — ML Kit działa samodzielnie przez Google Play Services. Dla aplikacji komercyjnych on-device ML Kit to bezpieczny wybór z zerowym kosztem eksploatacji.

Podsumowanie

  • ML Kit — Google SDK z 14 gotowymi ML-API dla Android i iOS
  • Text Recognition — OCR dla alfabetu łacińskiego (45 języków) i CJK, dokładność 91–96%
  • Face Detection — 468 punktów konturowych, uśmiech, otwarte oczy, 5–15 ms
  • Barcode Scanning — wszystkie formaty kodów, multi-kod, szybszy od ZXing 2–3x
  • Pose Detection — 33 punkty szkieletu człowieka, śledzenie w czasie rzeczywistym
  • Custom Model API — własne modele TFLite przez ujednolicony interfejs
  • On-device — wszystkie modele działają lokalnie, darmowo, bez internetu

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również