ML Kit — Android və iOS tətbiqlərinə hazır ML modellərini inteqrasiya etmək üçün Google-dan mobil SDK-dır. ML Kit mətn tanıma, üz aşkarlama, ştrix-kod skan etmə, obyekt tanıma, mətn tərcüməsi, poza təyini və şəkil seqmentasiyası üçün API-lər təqdim edir — bütün modellər serverə məcburi qoşulma olmadan cihazda (on-device) işləyir. Google ML Kit, 2025 məlumatlarına görə, kitabxana 100 000-dən çox tətbiqdə istifadə olunur, gündə 2+ milyard sorğu emal edir
Əsas məqamlar
ML Kit — Android və iOS üçün 14 ML-API təqdim edən Firebase-uyumlu mobil platforma SDK-dır. ML Kit 2020-ci ildə Firebase ML-i (köhnə ad) əvəz etdi və indi Google Play Services (Android) və ya CocoaPods/SPM (iOS) vasitəsilə müstəqil SDK kimi mövcuddur. Əsas üstünlük — bütün modellər on-device işləyir, bu da məlumatların məxfiliyini və internet olmadan işləməyi təmin edir.
ML Kit arxitekturası iki rejim ətrafında qurulub: bundled (model APK/IPA-ya daxil edilib) və downloaded (model ilk çağırışda Google Play Services vasitəsilə yüklənir). Bundled rejim ani start verir, lakin tətbiqin ölçüsünü 5–20 MB artırır. Downloaded — yerə qənaət edir, lakin ilk işə salınarkən internet tələb edir. Google downloaded rejimini hər ekranda istifadə olunmayan API-lər (Object Detection, Pose Detection) üçün tövsiyə edir.
TFLite vasitəsilə fərdiləşdirmə — ML Kit Custom Model API vasitəsilə öz TensorFlow Lite modelinizi yükləməyə imkan verir. Bu elastiklik verir — standart tapşırıqlar üçün hazır API-lərdən, spesifik tapşırıqlar üçün öz modelinizdən istifadə edin. ML Kit ByteBuffer və FloatArray ilə işləyən universal Input/Output handler təqdim edir. Google (2025) məlumatlarına görə, ML Kit layihələrinin 40%-i hazır API-lər və xüsusi modelləri birləşdirir.
// ML Kit Text Recognition qurulumu (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 ->
// Emal xətası
}
Firebase vs standalone — ML Kit Firebase (Cloud funksiyaları, Analytics, Crashlytics) ilə və ya Firebase olmadan müstəqil SDK kimi istifadə edilə bilər. Standalone rejim Firebase hesabı qurmadan Google Play Services (Android) vasitəsilə qoşulur. Cloud API-lər Firebase (Cloud Vision, Natural Language) vasitəsilə Google serverində neyron şəbəkələri tələb edən tapşırıqlar üçün mövcuddur — lakin bu funksiyalar ödənişlidir və on-device deyil.
ML Kit Text Recognition — şəkillərdə optik simvol tanıma (OCR) üçün API. İki rejimi dəstəkləyir: Latin-based (latın əlifbası, kiril, rəqəmlər — 45 dil) və Chinese/Japanese/Korean (CJK — heroqlif dilləri). Latin tanıma V2 (daha sürətli) və ya V1 (yüksək dəqiqlik) modelindən istifadə edir. V2 kadr başına 10–30 ms sürət verir, V1 — 50–100 ms.
Text Recognition imkanları çap və əl yazısı mətninin tanınması, mətn oriyentasiyasının təyini, sətirlərin, sözlərin və simvolların aşkarlanması, mətn dilinin təyinini əhatə edir. API strukturu qaytarır: Text → TextBlock → Line → Element (Word/Symbol). Hər elementin bounding box, confidence və tanınmış mətni var. Google (2025) məlumatlarına görə, ML Kit Text Recognition V2-nin latın əlifbasında dəqiqliyi 96%, kirildə — 91% təşkil edir.
Real vaxtda Text Recognition — video axını üçün CameraX və ya Camera2 ilə istifadə. ImageAnalysis.Analyzer yaradın və kadrları ML Kit-ə ötürün. Məhsuldarlıq üçün kadr təsvir ölçüsünü 480p (640x480) endirin — bu sürət və dəqiqlik arasında optimal balansdır. ML Kit şəkil fırlanmasını avtomatik emal edir, lakin maksimum sürət üçün şəkli düzgün oriyentasiyada ötürün.
// CameraX Analizatoru ilə Mətn Tanıma
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 optimallaşdırması: bulanıq və ya qaranlıq şəkillərin tanınmasını yaxşılaşdırmaq üçün ImageDecoder istifadə edin. Çap mətni üçün — TextRecognizerOptions.DEFAULT_OPTIONS (model V2). Əl yazısı üçün — TextRecognizerOptions.SCRIPT_LATIN (daha dəqiq, lakin yavaş). IT Sectr layihələrində biz sənədlərin tanınması üçün V2-dən, çek və qəbzlər üçün Latin modelindən istifadə edirik.
ML Kit Face Detection — şəkillərdə və videolarda üzlərin aşkarlanması üçün API. Üzün bounding box-unu, göz, burun, ağız, qulaq koordinatlarını (468 kontur nöqtəsi) və əsas ifadələri təyin edir: gülümsəmə, açıq ağız, qapalı gözlər. Face Detection ML Kit-in ən sürətli API-lərindən biridir: üzlərin və kontur nöqtələrinin sayından asılı olaraq kadr başına 5–15 ms.
Face Detection rejimləri: contour mode (maskalar/filtrlər dəqiq tətbiqi üçün 468 üz kontur nöqtəsi), classification mode (gülümsəmə, açıq gözlərin təyini), landmark mode (kontursuz əsas nöqtələr). Rejimlər FaceDetectorOptions-da birləşdirilir. Bütün rejimlərin aktivləşdirilməsi deteksiyanı 2–3 dəfə yavaşladır — tapşırığınız üçün minimum zəruri dəstdən istifadə edin.
AR tətbiqlərində Face Detection — kontur nöqtələri əsasında ML Kit Snapchat tipli filtrlər üçün üz maskası qurur. ML Kit x, y, z koordinatları ilə 468 nöqtə qaytarır (z = dərinlik). Nöqtələr müasir cihazlarda saniyədə 30–60 dəfə yenilənir. AR tətbiqi üçün FaceMeshDetector (ixtisaslaşdırılmış versiya) istifadə edin — o, tekstur üçün üçbucaq şəbəkəsini də qaytarır.
// Kontur nöqtələri ilə Üz Aşkarlama
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 məhdudiyyətləri: API üzün kimə aid olduğunu tanımır (face recognition) — yalnız üzləri aşkarlayır. Şəxsiyyətin identifikasiyası üçün xüsusi TFLite modelində FaceNet və ya ArcFace istifadə edin. ML Kit 45°-ə qədər bucaq altında, eynəkli və qismən maskalı üzlərlə düzgün işləyir. Profil rakursları (90°) üçün dəqiqlik 40–60%-ə düşür.
ML Kit Barcode Scanning — birölçülü (EAN, UPC, Code 128) və ikiolçülü (QR, Data Matrix, PDF417) ştrix-kodların oxunması və dekodlanması üçün API. Barcode Scanning şəkildə kodu aşkarlayır — ZXing-dən fərqli olaraq, kodun demək olar ki, bütün kadrı tutmasını tələb edir. ML Kit istənilən ölçüdə və oriyentasiyada kodu, o cümlədən bir kadrda bir neçə kodu aşkarlayır (multi-barcode rejimi).
Dəstəklənən formatlar: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit formatı avtomatik təyin edir — kod növünü göstərmək lazım deyil. Production-da dəstəklənən formatları məhdudlaşdırmaq üçün setBarcodeFormats() istifadə edin — bu, artıq dekodlaşdırma alqoritmlərini istisna etməklə skanlamanı 30–50% sürətləndirir.
Real vaxtda Barcode Scanning — Text Recognition-a bənzər, CameraX ilə inteqrasiya. ML Kit kadrları 60 FPS-ə qədər tezliklə emal edir. Maksimum sürət üçün setPerformanceMode(PerformanceMode.FAST) aktivləşdirin. ML Kit Barcode Scanning ZXing-dən 2–3 dəfə sürətlidir və bulanıq və ya qismən örtülü kodları daha dəqiq aşkarlayır. Google (2025) məlumatlarına görə, ML Kit Barcode Scanning standart işıqlandırmada 98.5% dəqiqliyə malikdir.
// Format filtri ilə Ştrix-Kod Skan etmə
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 ilə müqayisə: ML Kit daha sürətli, dəqiq və inteqrasiyası daha sadədir. ZXing — open-source, tamamilə oflayn işləyir, Google Play Services tələb etmir. ML Kit Google Play Services (Android) və ya CocoaPods (iOS) tələb edir. Google olmayan cihazlarda (Huawei, Amazon Fire) işləyən tətbiqlər üçün ZXing-i fallback kimi istifadə edin. Qalanları üçün — ML Kit, çünki çoxkodlu aşkarlama sayəsində daha yaxşı UX təmin edir.
ML Kit Object Detection — şəkillərdə obyektlərin aşkarlanması və izlənməsi üçün API. 1000+ kateqoriyadan (ImageNet sinifləri) obyektləri aşkarlayır — insanlar, heyvanlar, nəqliyyat, məişət əşyaları. Object Detection iki rejimdə işləyir: single-image (tək şəkil) və streaming (izləmə ilə video axını). Streaming rejimi obyektləri kadrlar arasında izləyir, hər birinə unikal track ID təyin edir.
Pose Detection — 33 əsas nöqtə (skelet) üzrə insan pozasını təyin etmək üçün API: baş, çiyinlər, dirsəklər, biləklər, ombalar, dizlər, ayaqlar. Hər nöqtənin koordinatlarını (x, y, z) və confidence təyin edir. Pose Detection fitness trekerlərində (təkrarların sayılması, formaya nəzarət), AR tətbiqlərində (hərəkətləri kopyalayan avatar) və idman analitikasında tətbiq olunur. Sürət — insanların sayından asılı olaraq kadr başına 10–30 ms.
Object Tracking — ML Kit Object Detection kadrlar arasında izləmə ilə Optical Flow əsasında trekerdən istifadə edir. Obyekt aşkarlandıqda, treker onu təkrar aşkarlamadan izləyir, bu da CPU/GPU-ya qənaət edir. Treker obyekti itirərsə (sürətli hərəkət, örtülmə), ML Kit təkrar aşkarlama işə salır. Google (2025) məlumatlarına görə, treker 30 km/saat hərəkət sürətinə qədər kadrların 95%-də obyekti saxlayır.
// Poza Aşkarlama (insan skeleti)
val poseDetector = PoseDetection.getClient(
PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
)
poseDetector.process(inputImage)
.addOnSuccessListener { pose ->
pose.allPoseLandmarks.forEach { landmark ->
val type = landmark.landmarkType // SOL_ÇİYİN, SAĞ_DİRSƏK...
val position = landmark.position3D
}
}
Selfie Segmentation — şəkildə insanın seqmentasiyası (insanı fondan ayırma) üçün API. Hər piksel üçün inam maskası qaytarır. Selfie Segmentation video zənglərdə, foto redaktorlarda və AR tətbiqlərində fonu bulanıqlaşdırmaq və ya dəyişmək üçün istifadə olunur. Maska orijinal şəkil ölçüsündə UInt8Array kimi qaytarılır — hər piksel 0.0 (fon) ilə 1.0 (insan) arasında dəyər ehtiva edir.
Custom Model API — ML Kit interfeysi vasitəsilə öz TensorFlow Lite modellərinizi yükləmək və işə salmaq imkanı. ML Kit vahid Input/Output API təqdim edir: girişdə ByteBuffer, çıxışda FloatArray/TensorImage. Bu, ML Kit-in üstünlüklərindən (model idarəetməsi, şəkil emalı, CameraX ilə əlaqə) xüsusi face recognition, object classification, NLP və digər modellərlə istifadə etməyə imkan verir.
Modelin yüklənməsi — .tflite faylını assets/ (Android) və ya bundle (iOS) qoyun və CustomModelDownloadConditions və ya Firebase Model Manager vasitəsilə yükləyin. Böyük modelləri (5+ MB) yükləmək üçün download conditions istifadə edin: Wi-Fi, doldurulub, fonda. Google modeli ilk istifadə anında deyil, tətbiqin ilk işə salınmasında yükləməyi tövsiyə edir.
// Xüsusi TFLite modelinin yüklənməsi
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
val remoteModel = CustomRemoteModel.Builder("my_model")
.setRemoteModelName("my_model_v2")
.build()
remoteModel.download(conditions)
.addOnSuccessListener { /* model ready */ }
.addOnFailureListener {
// Aktivlərdən daxil edilmiş modeli istifadə et
}
Xüsusi modellərin optimallaşdırılması: delegate uyğunluğu ilə TFLite Converter istifadə edin. Maksimum məhsuldarlıq üçün modeli kvantlayın (INT8) — bu model ölçüsünü 4x azaldır və XNNPACK Delegate vasitəsilə inferensı 2–3x sürətləndirir. ML Kit Custom Model API Dynamic Shape (batch = 1), Image Input (UInt8, Float32) və Tensor Output dəstəkləyir.
Tez-tez verilən suallar
ML Kit — Android və iOS üçün hazır ML modelləri olan Google SDK-dır. Mətn tanıma (OCR), üz aşkarlama, ştrix-kod skan etmə, obyekt tanıma, poza təyini, tərcümə və seqmentasiya üçün API-ləri əhatə edir. Cihazda işləyir, internet tələb etmir. Google Play Services (Android) və ya CocoaPods (iOS) vasitəsilə minimal — bir sətir asılılıq ilə qoşulur.
ML Kit — konkret tapşırıqlar (mətn, üzlər, kodlar) üçün hazır API-ləri olan yüksək səviyyəli SDK. TensorFlow Lite — istənilən TFLite modelini işə salmaq üçün aşağı səviyyəli icra mühiti. ML Kit TFLite-i özündə ehtiva edir, lakin standart tapşırıqlar üçün hazır kod və optimallaşdırmalar verir. Mətni tanımaq lazımdırsa — ML Kit (5 sətir kod). Öz neyron şəbəkəniz varsa — TFLite (20+ sətir).
Bəli, ML Kit-in bütün əsas API-ləri (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) modelin ilkin yüklənməsindən sonra internetə qoşulmadan tam on-device işləyir. Cloud API (Cloud Vision, Natural Language) — isteğe bağlıdır və internet tələb edir. Downloaded modellər üçün internet yalnız modelin ilk yüklənməsində lazımdır.
Bəli, ML Kit iOS-u CocoaPods və ya Swift Package Manager vasitəsilə tam dəstəkləyir. API-lər Android versiyasına analojidir. iOS üçün ML Kit Vision Framework və Core ML-dən istifadə edir — modellər Apple Neural Engine (A12+) ilə işləyir. iOS-da ML Kit UIImage, CVPixelBuffer və CMSampleBuffer ilə işləyir. iOS 12+ və Xcode 15+ dəstəyi.
Bəli, ML Kit on-device API-ləri tamamilə pulsuzdur, sorğu sayında məhdudiyyət yoxdur. Cloud API (Firebase vasitəsilə) — pulsuz limit keçdikdən sonra ödənişlidir ($200/ay pulsuz). On-device modellər Firebase hesabı tələb etmir — ML Kit Google Play Services vasitəsilə müstəqil işləyir. Kommersiya tətbiqləri üçün on-device ML Kit sıfır əməliyyat dəyəri ilə təhlükəsiz seçimdir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun