ML Kit — је мобилни SDK од Google-а за интеграцију готових ML модела у Android и iOS апликације. ML Kit пружа API-је за препознавање текста, откривање лица, скенирање бар кодова, препознавање објеката, превођење текста, одређивање позе и сегментацију слика — сви модели раде на уређају (on-device) без обавезног повезивања са сервером. Према подацима Google ML Kit, 2025, библиотека се користи у више од 100 000 апликација, обрађујући 2+ милијарде захтева дневно
Главне карактеристике
ML Kit — је Firebase-компатибилан SDK за мобилне платформе који пружа 14 ML-API-ја за Android и iOS. ML Kit је заменио Firebase ML (стари назив) 2020. године и сада је доступан као самостални SDK преко Google Play Services (Android) или CocoaPods/SPM (iOS). Кључна предност — сви модели раде on-device, што гарантује поверљивост података и рад без интернета.
Архитектура ML Kit-а је изграђена око два режима: bundled (модел је уграђен у APK/IPA) и downloaded (модел се преузима преко Google Play Services при првом позиву). Bundled режим даје тренутни старт, али повећава величину апликације за 5–20 MB. Downloaded — штеди простор, али захтева интернет при првом покретању. Google препоручује downloaded за API-је који се не користе на сваком екрану (Object Detection, Pose Detection).
Прилагођавање кроз TFLite — ML Kit омогућава учитавање сопственог TensorFlow Lite модела преко Custom Model API-ја. Ово даје флексибилност — користите готове API-је за стандардне задатке и свој модел за специфичне. ML Kit пружа универзални Input/Output handler који ради са ByteBuffer и FloatArray. Према Google-у (2025), 40% ML Kit пројеката комбинује готове API-је и прилагођене моделе.
// Подешавање 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 ->
// Грешка обраде
}
Firebase vs standalone — ML Kit се може користити са Firebase-ом (Cloud функције, Analytics, Crashlytics) или као самостални SDK без Firebase-а. Standalone режим се повезује преко Google Play Services (Android) без подешавања Firebase налога. Cloud API-ји су доступни преко Firebase-а (Cloud Vision, Natural Language) за задатке који захтевају неуронске мреже на Google серверу — али ове функције су плаћене и нису on-device.
ML Kit Text Recognition — API за оптичко препознавање карактера (OCR) на сликама. Подржава два режима: Latin-based (латиница, ћирилица, бројеви — 45 језика) и Chinese/Japanese/Korean (CJK — хијероглифски језици). Latin препознавање користи модел V2 (бржи) или V1 (висока прецизност). V2 даје брзину 10–30 ms по кадру, V1 — 50–100 ms.
Могућности Text Recognition-а укључују препознавање штампаног и рукописног текста, одређивање оријентације текста, откривање редова, речи и симбола, одређивање језика текста. API враћа структуру: Text → TextBlock → Line → Element (Word/Symbol). Сваки елемент има bounding box, confidence и препознат текст. Према Google-у (2025), прецизност ML Kit Text Recognition V2 на латиници је 96%, на ћирилици — 91%.
Text Recognition у реалном времену — коришћење са CameraX или Camera2 за видео стрим. Направите ImageAnalysis.Analyzer и прослеђујте кадрове ML Kit-у. За перформансе смањите резолуцију кадра на 480p (640x480) — ово је оптимални баланс између брзине и прецизности. ML Kit аутоматски обрађује ротацију слике, али за максималну брзину проследите слику у исправној оријентацији.
// Препознавање текста са 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() }
}
}
Оптимизација Text Recognition-а: користите ImageDecoder за побољшање препознавања замућених или тамних слика. За штампани текст — TextRecognizerOptions.DEFAULT_OPTIONS (модел V2). За рукописни — TextRecognizerOptions.SCRIPT_LATIN (прецизније, али спорије). У IT Sectr пројектима користимо V2 за препознавање докумената и Latin модел за чекове и признанице.
ML Kit Face Detection — API за откривање лица на сликама и видеу. Одређује bounding box лица, координате очију, носа, уста, ушију (468 контурних тачака) и основне изразе: осмех, отворена уста, затворене очи. Face Detection је један од најбржих ML Kit API-ја: 5–15 ms по кадру у зависности од броја лица и контурних тачака.
Режими Face Detection-а: contour mode (468 контурних тачака лица за прецизно наношење маски/филтера), classification mode (одређивање осмеха, отворених очију), landmark mode (кључне тачке без контуре). Режими се комбинују у FaceDetectorOptions. Укључивање свих режима успорава детекцију 2–3 пута — користите минимално потребан сет за ваш задатак.
Face Detection у AR апликацијама — на основу контурних тачака ML Kit гради маску лица за Snapchat-сличне филтере. ML Kit враћа 468 тачака са координатама x, y, z (z = дубина). Тачке се ажурирају 30–60 пута у секунди на савременим уређајима. За AR наношење користите FaceMeshDetector (специјализована верзија) — он враћа и троуглове мреже за текстурисање.
// Откривање лица са контурним тачкама
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
}
}
Ограничења Face Detection-а: API не препознаје коме лице припада (face recognition) — само открива лица. За идентификацију особе користите FaceNet или ArcFace на прилагођеном TFLite моделу. ML Kit исправно ради са лицима под углом до 45°, са наочарима и делимичном маском. За профилне углове (90°) прецизност опада на 40–60%.
ML Kit Barcode Scanning — API за читање и декодирање једно-димензионалних (EAN, UPC, Code 128) и дво-димензионалних (QR, Data Matrix, PDF417) бар кодова. Barcode Scanning детектује код на слици — за разлику од ZXing-а, који захтева да код заузима скоро цео кадар. ML Kit детектује код било које величине и оријентације, укључујући више кодова на једном кадру (multi-barcode режим).
Подржани формати: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit аутоматски одређује формат — не треба наводити тип кода. У продукцији користите setBarcodeFormats() за ограничавање подржаних формата — ово убрзава скенирање за 30–50% искључивањем непотребних алгоритама декодирања.
Barcode Scanning у реалном времену — слично Text Recognition-у, интеграција са CameraX. ML Kit обрађује кадрове фреквенцијом до 60 FPS. За максималну брзину укључите setPerformanceMode(PerformanceMode.FAST). Barcode Scanning ML Kit-а је 2–3 пута бржи од ZXing-а и прецизније детектује замућене или делимично покривене кодове. Према Google-у (2025), ML Kit Barcode Scanning има 98.5% прецизности при стандардном осветљењу.
// Скенирање бар кодова са филтером формата
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
}
}
Поређење са ZXing-ом: ML Kit је бржи, прецизнији и једноставнији за интеграцију. ZXing — open-source, ради потпуно офлајн, не захтева Google Play Services. ML Kit захтева Google Play Services (Android) или CocoaPods (iOS). За апликације које раде на уређајима без Google-а (Huawei, Amazon Fire) користите ZXing као fallback. За остале — ML Kit, јер пружа бољи UX захваљујући детекцији више кодова.
ML Kit Object Detection — API за откривање и праћење објеката на сликама. Детектује објекте из 1000+ категорија (ImageNet класе) — људе, животиње, возила, предмете за домаћинство. Object Detection ради у два режима: single-image (појединачна фотографија) и streaming (видео стрим са праћењем). Streaming режим прати објекте између кадрова, додељујући сваком јединствени track ID.
Pose Detection — API за одређивање позе човека на основу 33 кључне тачке (скелет): глава, рамена, лактови, зглобови, кукови, колена, стопала. Одређује координате (x, y, z) и confidence сваке тачке. Pose Detection се примењује у fitness тракерима (бројање понављања, контрола форме), AR апликацијама (аватар копира покрете) и спортској аналитици. Брзина — 10–30 ms по кадру у зависности од броја људи.
Object Tracking — ML Kit Object Detection са праћењем између кадрова користи тракер заснован на Optical Flow-у. Када је објекат откривен, тракер га прати без поновног откривања, што штеди CPU/GPU. Ако тракер изгуби објекат (брз покрет, заклањање), ML Kit покреће поновно откривање. Према Google-у (2025), тракер задржава објекат у 95% кадрова при брзини кретања до 30 km/h.
// Откривање позе (људски скелет)
val poseDetector = PoseDetection.getClient(
PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
)
poseDetector.process(inputImage)
.addOnSuccessListener { pose ->
pose.allPoseLandmarks.forEach { landmark ->
val type = landmark.landmarkType // ЛЕВО_РАМЕ, ДЕСНИ_ЛАКАТ...
val position = landmark.position3D
}
}
Selfie Segmentation — API за сегментацију особе на слици (одвајање особе од позадине). Враћа маску поверења за сваки пиксел. Selfie Segmentation се користи за замућивање или замену позадине у видео позивима, фото едиторима и AR апликацијама. Маска се враћа као UInt8Array величине оригиналне слике — сваки пиксел садржи вредност од 0.0 (позадина) до 1.0 (особа).
Custom Model API — могућност учитавања и покретања сопствених TensorFlow Lite модела преко ML Kit интерфејса. ML Kit пружа унификовани Input/Output API: ByteBuffer на улазу, FloatArray/TensorImage на излазу. Ово омогућава коришћење предности ML Kit-а (управљање моделом, обрада слика, веза са CameraX) са прилагођеним моделима face recognition, object classification, NLP и другим.
Учитавање модела — поставите .tflite датотеку у assets/ (Android) или bundle (iOS) и учитајте је преко CustomModelDownloadConditions или Firebase Model Manager-а. За преузимање великих модела (5+ MB) користите услове преузимања: Wi-Fi, напуњено, у позадини. Google препоручује учитавање модела при првом покретању апликације, а не у тренутку прве употребе.
// Учитавање прилагођеног 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 {
// Користите уграђени модел из ресурса
}
Оптимизација прилагођених модела: користите TFLite Converter са delegate компатибилношћу. За максималне перформансе квантизујте модел (INT8) — ово смањује величину модела 4x и убрзава инференцу 2–3x кроз XNNPACK Delegate. ML Kit Custom Model API подржава Dynamic Shape (batch = 1), Image Input (UInt8, Float32) и Tensor Output.
Често постављана питања
ML Kit — је SDK од Google-а са готовим ML моделима за Android и iOS. Укључује API-је за препознавање текста (OCR), откривање лица, скенирање бар кодова, препознавање објеката, одређивање позе, превођење и сегментацију. Ради на уређају, не захтева интернет. Повезује се преко Google Play Services (Android) или CocoaPods (iOS) минимално — једном линијом зависности.
ML Kit — високонивоски SDK са готовим API-јима за специфичне задатке (текст, лица, кодови). TensorFlow Lite — нискенивоски рантиме за покретање било којих TFLite модела. ML Kit укључује TFLite испод хаубе, али даје готов код и оптимизације за стандардне задатке. Ако треба да препознате текст — ML Kit (5 линија кода). Ако имате своју неуронску мрежу — TFLite (20+ линија).
Да, сви основни ML Kit API-ји (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) раде потпуно on-device без интернет везе након почетног преузимања модела. Cloud API (Cloud Vision, Natural Language) — опциони и захтевају интернет. За downloaded моделе интернет је потребан само при првом преузимању модела.
Да, ML Kit потпуно подржава iOS преко CocoaPods-а или Swift Package Manager-а. API-ји су слични Android верзији. За iOS, ML Kit користи Vision Framework и Core ML испод хаубе — модели се извршавају на Apple Neural Engine (A12+). ML Kit на iOS-у ради са UIImage, CVPixelBuffer и CMSampleBuffer. Подршка за iOS 12+ и Xcode 15+.
Да, on-device ML Kit API-ји су потпуно бесплатни, без ограничења броја захтева. Cloud API (преко Firebase-а) — плаћају се након прекорачења бесплатног лимита ($200/месечно бесплатно). On-device модели не захтевају Firebase налог — ML Kit ради самостално преко Google Play Services-а. За комерцијалне апликације, on-device ML Kit је сигуран избор са нултим оперативним трошком.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође