ML Kit: co to je, knihovny a ML pro Android a iOS

Autor: IT Sectr Publikováno: 2026-07-18 Doba čtení: 10 min

ML Kit — je mobilní SDK od Google pro integraci hotových ML modelů do aplikací Android a iOS. ML Kit poskytuje API pro rozpoznávání textu, detekci obličejů, skenování čárových kódů, rozpoznávání objektů, překlad textu, určování pózy a segmentaci obrazu — všechny modely pracují na zařízení (on-device) bez povinného připojení k serveru. Podle údajů Google ML Kit, 2025 je knihovna používána ve více než 100 000 aplikacích a zpracovává 2+ miliardy požadavků denně

Hlavní body

  • ML Kit — SDK od Google pro ML funkce v mobilních aplikacích
  • On-device — všechny modely pracují lokálně, bez internetu
  • Hotová API — text, obličeje, čárové kódy, objekty, překlad, póza
  • Multiplatformní — podpora Android a iOS přes jednotné API
  • Vlastní modely — načítání vlastních modelů TFLite

Co je ML Kit: možnosti a architektura

ML Kit — je SDK kompatibilní s Firebase pro mobilní platformy, poskytující 14 ML-API pro Android a iOS. ML Kit nahradil Firebase ML (starý název) v roce 2020 a je nyní k dispozici jako samostatné SDK přes Google Play Services (Android) nebo CocoaPods/SPM (iOS). Klíčová výhoda — všechny modely pracují on-device, což zaručuje důvěrnost dat a provoz bez internetu.

Architektura ML Kit je postavena kolem dvou režimů: bundled (model je vložen do APK/IPA) a downloaded (model se stahuje přes Google Play Services při prvním volání). Režim bundled poskytuje okamžitý start, ale zvyšuje velikost aplikace o 5–20 MB. Downloaded — šetří místo, ale vyžaduje internet při prvním spuštění. Google doporučuje downloaded pro API, která se nepoužívají na každé obrazovce (Object Detection, Pose Detection).

Přizpůsobení přes TFLite — ML Kit umožňuje načíst vlastní model TensorFlow Lite přes Custom Model API. To poskytuje flexibilitu — používejte hotová API pro standardní úkoly a vlastní model pro specifické. ML Kit poskytuje univerzální obsluhu Input/Output pracující s ByteBuffer a FloatArray. Podle Google (2025) 40% projektů ML Kit kombinuje hotová API a vlastní modely.

kotlin
// Nastavení 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 ->
        // Chyba zpracování
    }

Firebase vs standalone — ML Kit lze používat s Firebase (Cloud funkce, Analytics, Crashlytics) nebo jako samostatné SDK bez Firebase. Režim standalone se připojuje přes Google Play Services (Android) bez konfigurace účtu Firebase. Cloud API jsou k dispozici přes Firebase (Cloud Vision, Natural Language) pro úkoly vyžadující neuronové sítě na serveru Google — ale tyto funkce jsou placené a ne on-device.

ML Kit Text Recognition: rozpoznávání textu

ML Kit Text Recognition — API pro optické rozpoznávání znaků (OCR) na obrázcích. Podporuje dva režimy: Latin-based (latinka, azbuka, číslice — 45 jazyků) a Chinese/Japanese/Korean (CJK — hieroglyfické jazyky). Rozpoznávání Latin používá model V2 (rychlejší) nebo V1 (vysoká přesnost). V2 poskytuje rychlost 10–30 ms na snímek, V1 — 50–100 ms.

Možnosti Text Recognition zahrnují rozpoznávání tištěného a ručně psaného textu, určování orientace textu, detekci řádků, slov a symbolů, určování jazyka textu. API vrací strukturu: Text → TextBlock → Line → Element (Word/Symbol). Každý prvek má bounding box, confidence a rozpoznaný text. Podle Google (2025) je přesnost ML Kit Text Recognition V2 na latince 96%, na azbuce — 91%.

Text Recognition v reálném čase — použití s CameraX nebo Camera2 pro video stream. Vytvořte ImageAnalysis.Analyzer a přenášejte snímky do ML Kit. Pro výkon snižte rozlišení snímku na 480p (640x480) — to je optimální rovnováha mezi rychlostí a přesností. ML Kit automaticky zpracovává rotaci obrazu, ale pro maximální rychlost přenášejte obraz ve správné orientaci.

kotlin
// Rozpoznávání textu s CameraX Analyzerem
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() }
    }
}

Optimalizace Text Recognition: používejte ImageDecoder pro zlepšení rozpoznávání rozmazaných nebo tmavých obrázků. Pro tištěný text — TextRecognizerOptions.DEFAULT_OPTIONS (model V2). Pro ručně psaný — TextRecognizerOptions.SCRIPT_LATIN (přesnější, ale pomalejší). V projektech IT Sectr používáme V2 pro rozpoznávání dokumentů a model Latin pro šeky a účtenky.

ML Kit Face Detection: detekce obličejů a kontur

ML Kit Face Detection — API pro detekci obličejů na obrázcích a videu. Určuje bounding box obličeje, souřadnice očí, nosu, úst, uší (468 konturních bodů) a základní výrazy: úsměv, otevřená ústa, zavřené oči. Face Detection je jedno z nejrychlejších API ML Kit: 5–15 ms na snímek v závislosti na počtu obličejů a konturních bodů.

Režimy Face Detection: contour mode (468 konturních bodů obličeje pro přesné nanášení masek/filtrů), classification mode (určování úsměvu, otevřených očí), landmark mode (klíčové body bez kontury). Režimy se kombinují v FaceDetectorOptions. Zapnutí všech režimů zpomaluje detekci 2–3krát — používejte minimální potřebnou sadu pro váš úkol.

Face Detection v AR aplikacích — na základě konturních bodů ML Kit staví masku obličeje pro filtry podobné Snapchatu. ML Kit vrací 468 bodů se souřadnicemi x, y, z (z = hloubka). Body se aktualizují 30–60krát za sekundu na moderních zařízeních. Pro AR aplikaci používejte FaceMeshDetector (specializovaná verze) — vrací také trojúhelníky sítě pro texturování.

kotlin
// Detekce obličeje s konturními body
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
        }
    }

Omezení Face Detection: API nerozpoznává, komu obličej patří (face recognition) — pouze detekuje obličeje. Pro identifikaci osoby používejte FaceNet nebo ArcFace na vlastním modelu TFLite. ML Kit správně pracuje s obličeji pod úhlem do 45°, s brýlemi a částečnou maskou. Pro profilové úhly (90°) přesnost klesá na 40–60%.

ML Kit Barcode Scanning: čtení všech formátů kódů

ML Kit Barcode Scanning — API pro čtení a dekódování jednorozměrných (EAN, UPC, Code 128) a dvourozměrných (QR, Data Matrix, PDF417) čárových kódů. Barcode Scanning detekuje kód na obrázku — na rozdíl od ZXing, který vyžaduje, aby kód zabíral téměř celý snímek. ML Kit detekuje kód libovolné velikosti a orientace, včetně několika kódů na jednom snímku (režim multi-barcode).

Podporované formáty: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit automaticky určuje formát — není třeba zadávat typ kódu. V produkci používejte setBarcodeFormats() pro omezení podporovaných formátů — to zrychluje skenování o 30–50% vyloučením nadbytečných dekódovacích algoritmů.

Barcode Scanning v reálném čase — podobně jako Text Recognition, integrace s CameraX. ML Kit zpracovává snímky s frekvencí až 60 FPS. Pro maximální rychlost zapněte setPerformanceMode(PerformanceMode.FAST). Barcode Scanning ML Kit je 2–3krát rychlejší než ZXing a přesněji detekuje rozmazané nebo částečně zakryté kódy. Podle Google (2025) má ML Kit Barcode Scanning 98.5% přesnost při standardním osvětlení.

kotlin
// Skenování čárových kódů s filtrem formátu
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
        }
    }

Porovnání s ZXing: ML Kit je rychlejší, přesnější a jednodušší na integraci. ZXing — open-source, pracuje zcela offline, nevyžaduje Google Play Services. ML Kit vyžaduje Google Play Services (Android) nebo CocoaPods (iOS). Pro aplikace běžící na zařízeních bez Google (Huawei, Amazon Fire) používejte ZXing jako fallback. Pro ostatní — ML Kit, protože poskytuje lepší UX díky detekci více kódů.

Object Detection a Pose Detection v ML Kit

ML Kit Object Detection — API pro detekci a sledování objektů na obrázcích. Detekuje objekty z 1000+ kategorií (třídy ImageNet) — lidi, zvířata, vozidla, domácí předměty. Object Detection pracuje ve dvou režimech: single-image (jednotlivá fotografie) a streaming (video stream se sledováním). Režim streaming sleduje objekty mezi snímky a přiřazuje každému jedinečné track ID.

Pose Detection — API pro určení pózy člověka na základě 33 klíčových bodů (kostra): hlava, ramena, lokty, zápěstí, boky, kolena, chodidla. Určuje souřadnice (x, y, z) a confidence každého bodu. Pose Detection se uplatňuje ve fitness trackerech (počítání opakování, kontrola formy), AR aplikacích (avatar kopírující pohyby) a sportovní analytice. Rychlost — 10–30 ms na snímek v závislosti na počtu osob.

Object Tracking — ML Kit Object Detection se sledováním mezi snímky používá tracker založený na Optical Flow. Když je objekt detekován, tracker jej sleduje bez opětovné detekce, což šetří CPU/GPU. Pokud tracker objekt ztratí (rychlý pohyb, zakrytí), ML Kit spustí opětovnou detekci. Podle Google (2025) tracker udržuje objekt v 95% snímků při rychlosti pohybu až 30 km/h.

kotlin
// Detekce pózy (lidská kostra)
val poseDetector = PoseDetection.getClient(
    PoseDetectorOptions.Builder()
        .setDetectorMode(PoseDetectorOptions.STREAM_MODE)
        .build()
)

poseDetector.process(inputImage)
    .addOnSuccessListener { pose ->
        pose.allPoseLandmarks.forEach { landmark ->
            val type = landmark.landmarkType // LEVÉ_RAMENO, PRAVÝ_LOKET...
            val position = landmark.position3D
        }
    }

Selfie Segmentation — API pro segmentaci osoby na obrázku (oddělení osoby od pozadí). Vrací masku spolehlivosti pro každý pixel. Selfie Segmentation se používá pro rozostření nebo výměnu pozadí ve videohovorech, editorech fotografií a AR aplikacích. Maska je vrácena jako UInt8Array o velikosti původního obrázku — každý pixel obsahuje hodnotu od 0.0 (pozadí) do 1.0 (osoba).

Vlastní modely TFLite v ML Kit

Custom Model API — možnost načítat a spouštět vlastní modely TensorFlow Lite přes rozhraní ML Kit. ML Kit poskytuje jednotné Input/Output API: ByteBuffer na vstupu, FloatArray/TensorImage na výstupu. To umožňuje využívat výhody ML Kit (správa modelu, zpracování obrazu, propojení s CameraX) s vlastními modely face recognition, object classification, NLP a dalšími.

Načtení modelu — umístěte soubor .tflite do assets/ (Android) nebo bundle (iOS) a načtěte jej přes CustomModelDownloadConditions nebo Firebase Model Manager. Pro stahování velkých modelů (5+ MB) používejte podmínky stahování: Wi-Fi, nabito, na pozadí. Google doporučuje načítat model při prvním spuštění aplikace, ne v okamžiku prvního použití.

kotlin
// Načtení vlastního 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 {
        // Použít přiložený model z assets
    }

Optimalizace vlastních modelů: používejte TFLite Converter s kompatibilitou delegate. Pro maximální výkon kvantujte model (INT8) — to snižuje velikost modelu 4x a zrychluje inferenci 2–3x přes XNNPACK Delegate. ML Kit Custom Model API podporuje Dynamic Shape (batch = 1), Image Input (UInt8, Float32) a Tensor Output.

Často kladené otázky

Co je ML Kit v Android?

ML Kit — je SDK od Google s hotovými ML modely pro Android a iOS. Zahrnuje API pro rozpoznávání textu (OCR), detekci obličejů, skenování čárových kódů, rozpoznávání objektů, určování pózy, překlad a segmentaci. Pracuje na zařízení, nevyžaduje internet. Připojuje se přes Google Play Services (Android) nebo CocoaPods (iOS) minimálně — jedním řádkem závislosti.

Čím se ML Kit liší od TensorFlow Lite?

ML Kit — vysokourovňové SDK s hotovými API pro specifické úkoly (text, obličeje, kódy). TensorFlow Lite — nízkourovňové runtime pro spouštění jakýchkoli modelů TFLite. ML Kit zahrnuje TFLite pod kapotou, ale poskytuje hotový kód a optimalizace pro standardní úkoly. Pokud potřebujete rozpoznat text — ML Kit (5 řádků kódu). Pokud máte vlastní neuronovou síť — TFLite (20+ řádků).

Pracuje ML Kit bez internetu?

Ano, všechna hlavní API ML Kit (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) pracují plně on-device bez připojení k internetu po počátečním stažení modelu. Cloud API (Cloud Vision, Natural Language) — volitelné a vyžadují internet. Pro downloaded modely je internet potřeba pouze při prvním stažení modelu.

Lze ML Kit použít na iOS?

Ano, ML Kit plně podporuje iOS přes CocoaPods nebo Swift Package Manager. API jsou podobná verzi pro Android. Pro iOS ML Kit používá Vision Framework a Core ML pod kapotou — modely běží na Apple Neural Engine (A12+). ML Kit na iOS pracuje s UIImage, CVPixelBuffer a CMSampleBuffer. Podpora iOS 12+ a Xcode 15+.

Je ML Kit zdarma?

Ano, on-device API ML Kit jsou zcela zdarma, bez omezení počtu požadavků. Cloud API (přes Firebase) — placená po překročení bezplatného limitu (200 $/měsíc zdarma). On-device modely nevyžadují účet Firebase — ML Kit pracuje samostatně přes Google Play Services. Pro komerční aplikace je on-device ML Kit bezpečnou volbou s nulovými provozními náklady.

Shrnutí

  • ML Kit — Google SDK se 14 hotovými ML-API pro Android a iOS
  • Text Recognition — OCR pro latinku (45 jazyků) a CJK, přesnost 91–96%
  • Face Detection — 468 konturních bodů, úsměv, otevřené oči, 5–15 ms
  • Barcode Scanning — všechny formáty kódů, multi-kód, 2–3x rychlejší než ZXing
  • Pose Detection — 33 bodů lidské kostry, sledování v reálném čase
  • Custom Model API — vlastní modely TFLite přes jednotné rozhraní
  • On-device — všechny modely pracují lokálně, zdarma, bez internetu

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také