ML Kit — egy mobilos SDK a Google-tól kész ML modellek Android és iOS alkalmazásokba való integrálásához. Az ML Kit API-kat biztosít szövegfelismeréshez, arcok észleléséhez, vonalkódok szkenneléséhez, objektumok felismeréséhez, szövegfordításhoz, póz meghatározásához és képszegmentáláshoz — minden modell az eszközön (on-device) működik szerverhez való kötelező csatlakozás nélkül. A Google ML Kit, 2025 adatai szerint a könyvtárat több mint 100 000 alkalmazás használja, naponta 2+ milliárd kérést feldolgozva
Főbb pontok
ML Kit — egy Firebase-kompatibilis SDK mobil platformokhoz, amely 14 ML-API-t biztosít Androidhoz és iOS-hez. Az ML Kit 2020-ban váltotta fel a Firebase ML-t (régi név), és most önálló SDK-ként érhető el a Google Play Services (Android) vagy CocoaPods/SPM (iOS) segítségével. A legfontosabb előny — minden modell on-device működik, garantálva az adatok bizalmas kezelését és az internet nélküli működést.
Az ML Kit architektúrája két mód köré épül: bundled (a modell az APK/IPA-ba van beágyazva) és downloaded (a modell az első híváskor töltődik le a Google Play Services-en keresztül). A Bundled mód azonnali indítást biztosít, de 5–20 MB-tal növeli az alkalmazás méretét. A Downloaded — helyet takarít meg, de első indításkor internetet igényel. A Google a downloaded módot ajánlja azokhoz az API-khoz, amelyek nem minden képernyőn használatosak (Object Detection, Pose Detection).
Testreszabás TFLite-on keresztül — az ML Kit lehetővé teszi saját TensorFlow Lite modell betöltését a Custom Model API-n keresztül. Ez rugalmasságot ad — használja a kész API-kat szabványos feladatokhoz és saját modelljét specifikus feladatokhoz. Az ML Kit egy univerzális Input/Output handlert biztosít, amely ByteBuffer-rel és FloatArray-val működik. A Google (2025) adatai szerint az ML Kit projektek 40%-a kombinálja a kész API-kat és az egyedi modelleket.
// ML Kit Text Recognition beállítása (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 ->
// Feldolgozási hiba
}
Firebase vs standalone — az ML Kit használható Firebase-szel (Cloud funkciók, Analytics, Crashlytics) vagy Firebase nélküli önálló SDK-ként. A Standalone mód Google Play Services-en (Android) keresztül csatlakozik Firebase fiók konfigurálása nélkül. A Cloud API-k Firebase-en (Cloud Vision, Natural Language) keresztül érhetők el olyan feladatokhoz, amelyek neurális hálózatokat igényelnek a Google szerverén — de ezek a funkciók fizetősek és nem on-device.
ML Kit Text Recognition — API karakterek optikai felismeréséhez (OCR) képeken. Két módot támogat: Latin-based (latin ábécé, cirill, számok — 45 nyelv) és Chinese/Japanese/Korean (CJK — hieroglif nyelvek). A Latin felismerés a V2 (gyorsabb) vagy V1 (nagy pontosság) modellt használja. A V2 10–30 ms sebességet biztosít képkockánként, a V1 — 50–100 ms.
A Text Recognition lehetőségei magukban foglalják a nyomtatott és kézzel írt szöveg felismerését, a szöveg tájolásának meghatározását, sorok, szavak és szimbólumok észlelését, a szöveg nyelvének meghatározását. Az API a struktúrát adja vissza: Text → TextBlock → Line → Element (Word/Symbol). Minden elem rendelkezik bounding box-szal, confidence-szel és felismert szöveggel. A Google (2025) adatai szerint az ML Kit Text Recognition V2 pontossága latin ábécén 96%, cirillen — 91%.
Text Recognition valós időben — használat CameraX-szel vagy Camera2-vel videó streamhez. Hozzon létre egy ImageAnalysis.Analyzer-t, és továbbítsa a képkockákat az ML Kit-nek. A teljesítmény érdekében csökkentse a képkocka felbontását 480p-re (640x480) — ez az optimális egyensúly a sebesség és a pontosság között. Az ML Kit automatikusan kezeli a kép elforgatását, de a maximális sebesség érdekében továbbítsa a képet a megfelelő tájolásban.
// Szövegfelismerés CameraX Analizátorral
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() }
}
}
A Text Recognition optimalizálása: használja az ImageDecoder-t az elmosódott vagy sötét képek felismerésének javításához. Nyomtatott szöveghez — TextRecognizerOptions.DEFAULT_OPTIONS (V2 modell). Kézzel írt szöveghez — TextRecognizerOptions.SCRIPT_LATIN (pontosabb, de lassabb). Az IT Sectr projektjeiben a V2-t használjuk dokumentumok felismeréséhez és a Latin modellt csekkek és nyugták felismeréséhez.
ML Kit Face Detection — API arcok észleléséhez képeken és videókon. Meghatározza az arc bounding box-át, a szemek, orr, száj, fülek koordinátáit (468 kontúrpont) és az alapvető kifejezéseket: mosoly, nyitott száj, csukott szemek. A Face Detection az ML Kit egyik leggyorsabb API-ja: 5–15 ms képkockánként az arcok és kontúrpontok számától függően.
A Face Detection módjai: contour mode (468 kontúrpont az arc maszkok/szűrők pontos alkalmazásához), classification mode (mosoly, nyitott szemek meghatározása), landmark mode (kulcspontok kontúr nélkül). A módok a FaceDetectorOptions-ban kombinálhatók. Az összes mód bekapcsolása 2–3-szorosára lassítja a detektálást — használja a feladatához szükséges minimális készletet.
Face Detection AR alkalmazásokban — a kontúrpontok alapján az ML Kit arcmaszkot épít Snapchat-szerű szűrőkhöz. Az ML Kit 468 pontot ad vissza x, y, z koordinátákkal (z = mélység). A pontok másodpercenként 30–60-szor frissülnek modern eszközökön. AR alkalmazáshoz használja a FaceMeshDetector-t (speciális verzió) — ez a textúrázáshoz a háló háromszögeit is visszaadja.
// Arcfelismerés kontúrpontokkal
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
}
}
A Face Detection korlátai: az API nem ismeri fel, kihez tartozik az arc (face recognition) — csak észleli az arcokat. Személyazonosításhoz használja a FaceNet vagy ArcFace alkalmazást egyedi TFLite modellen. Az ML Kit helyesen működik 45°-os szögig, szemüveggel és részleges maszkkal rendelkező arcokkal. Profil szögeknél (90°) a pontosság 40–60%-ra csökken.
ML Kit Barcode Scanning — API egydimenziós (EAN, UPC, Code 128) és kétdimenziós (QR, Data Matrix, PDF417) vonalkódok olvasásához és dekódolásához. A Barcode Scanning észleli a kódot a képen — ellentétben a ZXing-gal, amely megköveteli, hogy a kód majdnem a teljes képkockát kitöltse. Az ML Kit bármilyen méretű és tájolású kódot észlel, beleértve a több kódot egy képkockán (multi-barcode mód).
Támogatott formátumok: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. Az ML Kit automatikusan meghatározza a formátumot — nem kell megadni a kód típusát. Élesben használja a setBarcodeFormats() függvényt a támogatott formátumok korlátozásához — ez 30–50%-kal gyorsítja a szkennelést a felesleges dekódolási algoritmusok kizárásával.
Barcode Scanning valós időben — hasonlóan a Text Recognition-hoz, integráció a CameraX-szel. Az ML Kit a képkockákat akár 60 FPS frekvenciával dolgozza fel. A maximális sebességhez kapcsolja be a setPerformanceMode(PerformanceMode.FAST) beállítást. Az ML Kit Barcode Scanning 2–3-szor gyorsabb, mint a ZXing, és pontosabban észleli az elmosódott vagy részben takart kódokat. A Google (2025) adatai szerint az ML Kit Barcode Scanning 98.5% pontosságú szabványos megvilágítás mellett.
// Vonalkód szkennelés formátumszűrővel
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
}
}
Összehasonlítás a ZXing-gal: Az ML Kit gyorsabb, pontosabb és egyszerűbben integrálható. A ZXing — nyílt forráskódú, teljesen offline működik, nem igényel Google Play Services-t. Az ML Kit Google Play Services-t (Android) vagy CocoaPods-ot (iOS) igényel. Google nélküli eszközökön (Huawei, Amazon Fire) futó alkalmazásokhoz használja a ZXing-ot fallback-ként. A többiekhez — ML Kit, mert jobb UX-et biztosít a többkódos észlelésnek köszönhetően.
ML Kit Object Detection — API objektumok észleléséhez és követéséhez képeken. 1000+ kategóriából (ImageNet osztályok) észlel objektumokat — emberek, állatok, járművek, háztartási tárgyak. Az Object Detection két módban működik: single-image (egyetlen fénykép) és streaming (videó stream követéssel). A Streaming mód követi az objektumokat a képkockák között, mindegyikhez egyedi track ID-t rendelve.
Pose Detection — API az emberi póz meghatározásához 33 kulcspont (csontváz) alapján: fej, vállak, könyökök, csuklók, csípő, térdek, lábak. Meghatározza az egyes pontok koordinátáit (x, y, z) és confidence-ét. A Pose Detection alkalmazása fitneszkövetőkben (ismétlések számlálása, forma ellenőrzése), AR alkalmazásokban (mozgásokat másoló avatár) és sportanalitikában történik. Sebesség — 10–30 ms képkockánként a személyek számától függően.
Object Tracking — az ML Kit Object Detection képkockák közötti követéssel Optical Flow alapú követőt használ. Amikor egy objektum észlelésre kerül, a követő újbóli észlelés nélkül követi, ami CPU/GPU-t takarít meg. Ha a követő elveszíti az objektumot (gyors mozgás, eltakarás), az ML Kit újraészlelést indít. A Google (2025) adatai szerint a követő az objektumot a képkockák 95%-ában megtartja akár 30 km/h mozgási sebesség mellett.
// Póz észlelése (emberi csontváz)
val poseDetector = PoseDetection.getClient(
PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
)
poseDetector.process(inputImage)
.addOnSuccessListener { pose ->
pose.allPoseLandmarks.forEach { landmark ->
val type = landmark.landmarkType // BAL_VÁLL, JOBB_KÖNYÖK...
val position = landmark.position3D
}
}
Selfie Segmentation — API a személy képen történő szegmentálásához (a személy elválasztása a háttértől). Egy megbízhatósági maszkot ad vissza minden pixelhez. A Selfie Segmentation a háttér elmosásához vagy cseréjéhez használatos videohívásokban, fotószerkesztőkben és AR alkalmazásokban. A maszk UInt8Array-ként kerül visszaadásra az eredeti kép méretével — minden pixel 0.0 (háttér) és 1.0 (személy) közötti értéket tartalmaz.
Custom Model API — lehetőség saját TensorFlow Lite modellek betöltésére és futtatására az ML Kit interfészen keresztül. Az ML Kit egységes Input/Output API-t biztosít: ByteBuffer a bemeneten, FloatArray/TensorImage a kimeneten. Ez lehetővé teszi az ML Kit előnyeinek (modellkezelés, képfeldolgozás, CameraX kapcsolat) használatát egyedi face recognition, object classification, NLP és más modellekkel.
Modell betöltése — helyezze a .tflite fájlt az assets/ (Android) vagy bundle (iOS) mappába, és töltse be a CustomModelDownloadConditions vagy a Firebase Model Manager segítségével. Nagy modellek (5+ MB) letöltéséhez használjon letöltési feltételeket: Wi-Fi, töltés alatt, háttérben. A Google azt ajánlja, hogy a modellt az alkalmazás első indításakor töltse be, ne az első használat pillanatában.
// Egyedi TFLite modell betöltése
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
val remoteModel = CustomRemoteModel.Builder("my_model")
.setRemoteModelName("my_model_v2")
.build()
remoteModel.download(conditions)
.addOnSuccessListener { /* model ready */ }
.addOnFailureListener {
// Használja a csomagolt modellt az assets mappából
}
Egyedi modellek optimalizálása: használja a TFLite Converter-t delegate kompatibilitással. A maximális teljesítmény érdekében kvantálja a modellt (INT8) — ez 4-szeresére csökkenti a modell méretét és 2–3-szorosára gyorsítja az inferenciát az XNNPACK Delegate-en keresztül. Az ML Kit Custom Model API támogatja a Dynamic Shape (batch = 1), Image Input (UInt8, Float32) és Tensor Output funkciókat.
Gyakran Ismételt Kérdések
ML Kit — egy SDK a Google-tól kész ML modellekkel Androidhoz és iOS-hez. Tartalmaz API-kat szövegfelismeréshez (OCR), arcészleléshez, vonalkód szkenneléshez, objektumfelismeréshez, póz meghatározáshoz, fordításhoz és szegmentáláshoz. Az eszközön működik, nem igényel internetet. Csatlakozik a Google Play Services-en (Android) vagy CocoaPods-on (iOS) keresztül minimálisan — egyetlen függőségi sorral.
ML Kit — egy magas szintű SDK kész API-kkal specifikus feladatokhoz (szöveg, arcok, kódok). A TensorFlow Lite — egy alacsony szintű futásidejű környezet bármely TFLite modell futtatásához. Az ML Kit tartalmazza a TFLite-ot a motorháztető alatt, de kész kódot és optimalizálásokat biztosít a szabványos feladatokhoz. Ha szöveget kell felismernie — ML Kit (5 sornyi kód). Ha saját neurális hálózata van — TFLite (20+ sor).
Igen, az ML Kit összes fő API-ja (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) teljes mértékben on-device működik internetkapcsolat nélkül a modell kezdeti letöltése után. A Cloud API (Cloud Vision, Natural Language) — opcionálisak és internetet igényelnek. A downloaded modellekhez internet csak a modell első letöltésekor szükséges.
Igen, az ML Kit teljes mértékben támogatja az iOS-t CocoaPods-on vagy Swift Package Manager-en keresztül. Az API-k hasonlóak az Android verzióhoz. iOS esetében az ML Kit a Vision Framework-öt és a Core ML-t használja — a modellek az Apple Neural Engine-en (A12+) futnak. Az ML Kit iOS-en UIImage, CVPixelBuffer és CMSampleBuffer objektumokkal működik. iOS 12+ és Xcode 15+ támogatás.
Igen, az ML Kit on-device API-jai teljesen ingyenesek, korlátlan számú kéréssel. A Cloud API (Firebase-en keresztül) — fizetős az ingyenes keret túllépése után (200 USD/hó ingyenes). Az on-device modellek nem igényelnek Firebase fiókot — az ML Kit önállóan működik a Google Play Services-en keresztül. Kereskedelmi alkalmazásokhoz az on-device ML Kit biztonságos választás nulla üzemeltetési költséggel.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is