ML Kit — adalah SDK seluler dari Google untuk integrasi model ML siap pakai ke dalam aplikasi Android dan iOS. ML Kit menyediakan API untuk pengenalan teks, deteksi wajah, pemindaian barcode, pengenalan objek, penerjemahan teks, penentuan pose, dan segmentasi gambar — semua model bekerja di perangkat (on-device) tanpa koneksi wajib ke server. Menurut data Google ML Kit, 2025, perpustakaan ini digunakan di lebih dari 100.000 aplikasi, memproses 2+ miliar permintaan per hari
Poin Utama
ML Kit — adalah SDK yang kompatibel dengan Firebase untuk platform seluler, menyediakan 14 ML-API untuk Android dan iOS. ML Kit menggantikan Firebase ML (nama lama) pada tahun 2020 dan sekarang tersedia sebagai SDK mandiri melalui Google Play Services (Android) atau CocoaPods/SPM (iOS). Keunggulan utama — semua model bekerja on-device, menjamin kerahasiaan data dan operasi tanpa internet.
Arsitektur ML Kit dibangun di sekitar dua mode: bundled (model tertanam dalam APK/IPA) dan downloaded (model diunduh melalui Google Play Services pada panggilan pertama). Mode bundled memberikan start instan, tetapi meningkatkan ukuran aplikasi sebesar 5–20 MB. Downloaded — menghemat ruang, tetapi memerlukan internet pada peluncuran pertama. Google merekomendasikan downloaded untuk API yang tidak digunakan di setiap layar (Object Detection, Pose Detection).
Kustomisasi melalui TFLite — ML Kit memungkinkan memuat model TensorFlow Lite sendiri melalui Custom Model API. Ini memberikan fleksibilitas — gunakan API siap pakai untuk tugas standar dan model sendiri untuk tugas spesifik. ML Kit menyediakan handler Input/Output universal yang bekerja dengan ByteBuffer dan FloatArray. Menurut Google (2025), 40% proyek ML Kit menggabungkan API siap pakai dan model kustom.
// Pengaturan 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 ->
// Kesalahan pemrosesan
}
Firebase vs standalone — ML Kit dapat digunakan dengan Firebase (fungsi Cloud, Analytics, Crashlytics) atau sebagai SDK mandiri tanpa Firebase. Mode standalone terhubung melalui Google Play Services (Android) tanpa konfigurasi akun Firebase. Cloud API tersedia melalui Firebase (Cloud Vision, Natural Language) untuk tugas yang memerlukan jaringan saraf di server Google — tetapi fungsi ini berbayar dan tidak on-device.
ML Kit Text Recognition — API untuk pengenalan karakter optik (OCR) pada gambar. Mendukung dua mode: Latin-based (alfabet Latin, Sirilik, angka — 45 bahasa) dan Chinese/Japanese/Korean (CJK — bahasa hieroglif). Pengenalan Latin menggunakan model V2 (lebih cepat) atau V1 (presisi tinggi). V2 memberikan kecepatan 10–30 ms per frame, V1 — 50–100 ms.
Kemampuan Text Recognition mencakup pengenalan teks cetak dan tulisan tangan, penentuan orientasi teks, deteksi baris, kata, dan simbol, penentuan bahasa teks. API mengembalikan struktur: Text → TextBlock → Line → Element (Word/Symbol). Setiap elemen memiliki bounding box, confidence, dan teks yang dikenali. Menurut Google (2025), akurasi ML Kit Text Recognition V2 pada alfabet Latin adalah 96%, pada Sirilik — 91%.
Text Recognition waktu nyata — penggunaan dengan CameraX atau Camera2 untuk streaming video. Buat ImageAnalysis.Analyzer dan kirim frame ke ML Kit. Untuk kinerja, kurangi resolusi frame menjadi 480p (640x480) — ini adalah keseimbangan optimal antara kecepatan dan akurasi. ML Kit secara otomatis menangani rotasi gambar, tetapi untuk kecepatan maksimal kirim gambar dalam orientasi yang benar.
// Pengenalan Teks dengan Penganalisis 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() }
}
}
Optimasi Text Recognition: gunakan ImageDecoder untuk meningkatkan pengenalan gambar buram atau gelap. Untuk teks cetak — TextRecognizerOptions.DEFAULT_OPTIONS (model V2). Untuk tulisan tangan — TextRecognizerOptions.SCRIPT_LATIN (lebih akurat, tetapi lebih lambat). Dalam proyek IT Sectr, kami menggunakan V2 untuk pengenalan dokumen dan model Latin untuk cek dan kuitansi.
ML Kit Face Detection — API untuk deteksi wajah pada gambar dan video. Menentukan bounding box wajah, koordinat mata, hidung, mulut, telinga (468 titik kontur) dan ekspresi dasar: senyum, mulut terbuka, mata tertutup. Face Detection adalah salah satu API ML Kit tercepat: 5–15 ms per frame tergantung pada jumlah wajah dan titik kontur.
Mode Face Detection: contour mode (468 titik kontur wajah untuk penerapan topeng/filter yang presisi), classification mode (penentuan senyum, mata terbuka), landmark mode (titik kunci tanpa kontur). Mode digabungkan dalam FaceDetectorOptions. Mengaktifkan semua mode memperlambat deteksi 2–3 kali — gunakan set minimum yang diperlukan untuk tugas Anda.
Face Detection di aplikasi AR — berdasarkan titik kontur, ML Kit membangun topeng wajah untuk filter mirip Snapchat. ML Kit mengembalikan 468 titik dengan koordinat x, y, z (z = kedalaman). Titik diperbarui 30–60 kali per detik pada perangkat modern. Untuk penerapan AR gunakan FaceMeshDetector (versi khusus) — ia juga mengembalikan segitiga mesh untuk tekstur.
// Deteksi Wajah dengan titik kontur
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
}
}
Keterbatasan Face Detection: API tidak mengenali milik siapa wajah itu (face recognition) — hanya mendeteksi wajah. Untuk identifikasi orang, gunakan FaceNet atau ArcFace pada model TFLite kustom. ML Kit bekerja dengan benar dengan wajah pada sudut hingga 45°, dengan kacamata dan masker parsial. Untuk sudut profil (90°) akurasi turun menjadi 40–60%.
ML Kit Barcode Scanning — API untuk membaca dan mendekode barcode satu dimensi (EAN, UPC, Code 128) dan dua dimensi (QR, Data Matrix, PDF417). Barcode Scanning mendeteksi kode dalam gambar — tidak seperti ZXing, yang memerlukan kode untuk menempati hampir seluruh frame. ML Kit mendeteksi kode dalam berbagai ukuran dan orientasi, termasuk beberapa kode dalam satu frame (mode multi-barcode).
Format yang didukung: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit secara otomatis menentukan format — tidak perlu menentukan jenis kode. Dalam produksi gunakan setBarcodeFormats() untuk membatasi format yang didukung — ini mempercepat pemindaian 30–50% dengan mengecualikan algoritma dekode yang tidak perlu.
Barcode Scanning waktu nyata — mirip dengan Text Recognition, integrasi dengan CameraX. ML Kit memproses frame dengan frekuensi hingga 60 FPS. Untuk kecepatan maksimal, aktifkan setPerformanceMode(PerformanceMode.FAST). Barcode Scanning ML Kit 2–3 kali lebih cepat dari ZXing dan mendeteksi kode buram atau tertutup sebagian dengan lebih akurat. Menurut Google (2025), ML Kit Barcode Scanning memiliki akurasi 98.5% dalam pencahayaan standar.
// Pemindaian Barcode dengan filter format
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
}
}
Perbandingan dengan ZXing: ML Kit lebih cepat, lebih akurat, dan lebih mudah diintegrasikan. ZXing — open-source, bekerja sepenuhnya offline, tidak memerlukan Google Play Services. ML Kit memerlukan Google Play Services (Android) atau CocoaPods (iOS). Untuk aplikasi yang berjalan di perangkat tanpa Google (Huawei, Amazon Fire), gunakan ZXing sebagai fallback. Untuk sisanya — ML Kit, karena memberikan UX yang lebih baik berkat deteksi multi-kode.
ML Kit Object Detection — API untuk deteksi dan pelacakan objek pada gambar. Mendeteksi objek dari 1000+ kategori (kelas ImageNet) — orang, hewan, kendaraan, barang rumah tangga. Object Detection bekerja dalam dua mode: single-image (foto tunggal) dan streaming (streaming video dengan pelacakan). Mode streaming melacak objek antar frame, memberikan masing-masing track ID unik.
Pose Detection — API untuk menentukan pose manusia berdasarkan 33 titik kunci (kerangka): kepala, bahu, siku, pergelangan tangan, pinggul, lutut, kaki. Menentukan koordinat (x, y, z) dan confidence setiap titik. Pose Detection diterapkan dalam pelacak kebugaran (menghitung pengulangan, kontrol bentuk), aplikasi AR (avatar menyalin gerakan) dan analitik olahraga. Kecepatan — 10–30 ms per frame tergantung pada jumlah orang.
Object Tracking — ML Kit Object Detection dengan pelacakan antar frame menggunakan tracker berbasis Optical Flow. Ketika objek terdeteksi, tracker melacaknya tanpa deteksi ulang, menghemat CPU/GPU. Jika tracker kehilangan objek (gerakan cepat, terhalang), ML Kit memulai deteksi ulang. Menurut Google (2025), tracker mempertahankan objek dalam 95% frame pada kecepatan gerakan hingga 30 km/jam.
// Deteksi Pose (kerangka manusia)
val poseDetector = PoseDetection.getClient(
PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
)
poseDetector.process(inputImage)
.addOnSuccessListener { pose ->
pose.allPoseLandmarks.forEach { landmark ->
val type = landmark.landmarkType // BAHU_KIRI, SIKU_KANAN...
val position = landmark.position3D
}
}
Selfie Segmentation — API untuk segmentasi orang pada gambar (memisahkan orang dari latar belakang). Mengembalikan masker kepercayaan untuk setiap piksel. Selfie Segmentation digunakan untuk memburamkan atau mengganti latar belakang dalam panggilan video, editor foto, dan aplikasi AR. Masker dikembalikan sebagai UInt8Array seukuran gambar asli — setiap piksel berisi nilai dari 0.0 (latar belakang) hingga 1.0 (orang).
Custom Model API — kemampuan untuk memuat dan menjalankan model TensorFlow Lite sendiri melalui antarmuka ML Kit. ML Kit menyediakan API Input/Output terpadu: ByteBuffer pada input, FloatArray/TensorImage pada output. Ini memungkinkan penggunaan keunggulan ML Kit (manajemen model, pemrosesan gambar, koneksi dengan CameraX) dengan model kustom face recognition, object classification, NLP, dan lainnya.
Memuat model — letakkan file .tflite di assets/ (Android) atau bundle (iOS) dan muat melalui CustomModelDownloadConditions atau Firebase Model Manager. Untuk mengunduh model besar (5+ MB) gunakan kondisi unduh: Wi-Fi, terisi daya, di latar belakang. Google merekomendasikan memuat model pada peluncuran pertama aplikasi, bukan pada saat penggunaan pertama.
// Memuat model TFLite kustom
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
val remoteModel = CustomRemoteModel.Builder("my_model")
.setRemoteModelName("my_model_v2")
.build()
remoteModel.download(conditions)
.addOnSuccessListener { /* model ready */ }
.addOnFailureListener {
// Gunakan model bawaan dari aset
}
Optimasi model kustom: gunakan TFLite Converter dengan kompatibilitas delegate. Untuk kinerja maksimal, kuantisasi model (INT8) — ini mengurangi ukuran model 4x dan mempercepat inferensi 2–3x melalui XNNPACK Delegate. ML Kit Custom Model API mendukung Dynamic Shape (batch = 1), Image Input (UInt8, Float32), dan Tensor Output.
Pertanyaan yang Sering Diajukan
ML Kit — adalah SDK dari Google dengan model ML siap pakai untuk Android dan iOS. Mencakup API untuk pengenalan teks (OCR), deteksi wajah, pemindaian barcode, pengenalan objek, penentuan pose, penerjemahan, dan segmentasi. Bekerja di perangkat, tidak memerlukan internet. Terhubung melalui Google Play Services (Android) atau CocoaPods (iOS) minimal — dengan satu baris dependensi.
ML Kit — SDK tingkat tinggi dengan API siap pakai untuk tugas spesifik (teks, wajah, kode). TensorFlow Lite — runtime tingkat rendah untuk menjalankan model TFLite apa pun. ML Kit menyertakan TFLite di dalamnya, tetapi memberikan kode siap pakai dan optimasi untuk tugas standar. Jika Anda perlu mengenali teks — ML Kit (5 baris kode). Jika memiliki jaringan saraf sendiri — TFLite (20+ baris).
Ya, semua API utama ML Kit (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) bekerja sepenuhnya on-device tanpa koneksi internet setelah unduhan awal model. Cloud API (Cloud Vision, Natural Language) — opsional dan memerlukan internet. Untuk model downloaded, internet hanya diperlukan saat unduhan pertama model.
Ya, ML Kit sepenuhnya mendukung iOS melalui CocoaPods atau Swift Package Manager. API mirip dengan versi Android. Untuk iOS, ML Kit menggunakan Vision Framework dan Core ML — model dijalankan pada Apple Neural Engine (A12+). ML Kit di iOS bekerja dengan UIImage, CVPixelBuffer, dan CMSampleBuffer. Dukungan iOS 12+ dan Xcode 15+.
Ya, API on-device ML Kit sepenuhnya gratis, tanpa batasan jumlah permintaan. Cloud API (melalui Firebase) — berbayar setelah melebihi batas gratis ($200/bulan gratis). Model on-device tidak memerlukan akun Firebase — ML Kit bekerja mandiri melalui Google Play Services. Untuk aplikasi komersial, on-device ML Kit adalah pilihan aman dengan biaya operasional nol.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga