ML Kit est un SDK mobile de Google permettant d«intégrer des modèles ML prêts à l«emploi dans les applications Android et iOS. ML Kit fournit des API pour la reconnaissance de texte, la détection des visages, le scan de codes-barres, la reconnaissance d«objets, la traduction de texte, la détection de pose et la segmentation d«images — tous les modèles fonctionnent sur l«appareil (on-device) sans connexion obligatoire au serveur. Selon Google ML Kit, 2025, la bibliothèque est utilisée dans plus de 100 000 applications, traitant plus de 2 milliards de requêtes par jour
Points clés
ML Kit est un SDK compatible Firebase pour plateformes mobiles fournissant 14 API ML pour Android et iOS. ML Kit a remplacé Firebase ML (ancien nom) en 2020 et est désormais disponible en tant que SDK autonome via Google Play Services (Android) ou CocoaPods/SPM (iOS). L«avantage clé est que tous les modèles fonctionnent sur l«appareil, garantissant la confidentialité des données et le fonctionnement hors ligne.
Architecture de ML Kit repose sur deux modes : bundled (modèle intégré dans l«APK/IPA) et downloaded (modèle téléchargé via Google Play Services au premier appel). Le mode bundled offre un démarrage instantané mais augmente la taille de l«application de 5 à 20 Mo. Le mode downloaded économise de l«espace mais nécessite une connexion internet au premier lancement. Google recommande downloaded pour les API non utilisées sur chaque écran (Object Detection, Pose Detection).
Personnalisation via TFLite — ML Kit permet de charger votre propre modèle TensorFlow Lite via la Custom Model API. Cela offre de la flexibilité — utilisez les API prêtes pour les tâches standard et votre propre modèle pour les tâches spécifiques. ML Kit fournit un gestionnaire d«entrée/sortie universel fonctionnant avec ByteBuffer et FloatArray. Selon Google (2025), 40% des projets ML Kit combinent API prêtes et modèles personnalisés.
// Configuration de 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 ->
// Erreur de traitement
}
Firebase vs autonome — ML Kit peut être utilisé avec Firebase (fonctions Cloud, Analytics, Crashlytics) ou en tant que SDK autonome sans Firebase. Le mode autonome se connecte via Google Play Services (Android) sans configuration de compte Firebase. Les API Cloud sont disponibles via Firebase (Cloud Vision, Natural Language) pour les tâches nécessitant des réseaux neuronaux sur le serveur Google — mais ces fonctions sont payantes et non on-device.
ML Kit Text Recognition — API de reconnaissance optique de caractères (OCR) sur les images. Prend en charge deux modes : Latin-based (latin, cyrillique, chiffres — 45 langues) et Chinese/Japanese/Korean (CJK — langues idéographiques). La reconnaissance latine utilise le modèle V2 (plus rapide) ou V1 (haute précision). V2 offre 10–30 ms par image, V1 — 50–100 ms.
Fonctionnalités de Text Recognition incluent la reconnaissance de texte imprimé et manuscrit, la détection de l«orientation du texte, la localisation des lignes, mots et caractères, la détermination de la langue du texte. L«API renvoie une structure : Text → TextBlock → Line → Element (Word/Symbol). Chaque élément a une boîte englobante, une confiance et un texte reconnu. Selon Google (2025), la précision de ML Kit Text Recognition V2 en écriture latine est de 96%, en cyrillique — 91%.
Text Recognition en temps réel — utilisation avec CameraX ou Camera2 pour flux vidéo. Créez un ImageAnalysis.Analyzer et passez les images à ML Kit. Pour les performances, réduisez la résolution d«image à 480p (640x480) — c«est l«équilibre optimal entre vitesse et précision. ML Kit gère automatiquement la rotation de l«image, mais pour une vitesse maximale, passez l«image dans la bonne orientation.
// Reconnaissance de texte avec CameraX Analyzer
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() }
}
}
Optimisation de Text Recognition : utilisez ImageDecoder pour améliorer la reconnaissance des images floues ou sombres. Pour le texte imprimé — TextRecognizerOptions.DEFAULT_OPTIONS (modèle V2). Pour le texte manuscrit — TextRecognizerOptions.SCRIPT_LATIN (plus précis mais plus lent). Dans les projets IT Sectr, nous utilisons V2 pour la reconnaissance de documents et le modèle Latin pour les chèques et reçus.
ML Kit Face Detection — API de détection des visages dans les images et vidéos. Détecte la boîte englobante du visage, les coordonnées des yeux, du nez, de la bouche, des oreilles (468 points de contour) et les expressions de base : sourire, bouche ouverte, yeux fermés. Face Detection est l«une des API les plus rapides de ML Kit : 5–15 ms par image selon le nombre de visages et de points de contour.
Modes de Face Detection : mode contour (468 points de contour facial pour superposition précise de masques/filtres), mode classification (détection du sourire, yeux ouverts), mode landmark (points clés sans contour). Les modes sont combinés dans FaceDetectorOptions. Activer tous les modes ralentit la détection de 2 à 3 fois — utilisez l«ensemble minimum requis pour votre tâche.
Face Detection dans les applications AR — basé sur les points de contour, ML Kit construit un masque facial pour les filtres de type Snapchat. ML Kit renvoie 468 points avec coordonnées x, y, z (z = profondeur). Les points se mettent à jour 30 à 60 fois par seconde sur les appareils modernes. Pour la superposition AR, utilisez FaceMeshDetector (version spécialisée) — il renvoie également les triangles du maillage pour la texturation.
// Détection des visages avec points de contour
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
}
}
Limitations de Face Detection : l«API ne reconnaît pas à qui appartient le visage (reconnaissance faciale) — elle détecte uniquement les visages. Pour l«identification, utilisez FaceNet ou ArcFace sur un modèle TFLite personnalisé. ML Kit fonctionne correctement avec des visages à des angles jusqu«à 45°, avec des lunettes et un masque partiel. Pour les angles de profil (90°), la précision tombe à 40–60%.
ML Kit Barcode Scanning — API pour lire et décoder les codes-barres 1D (EAN, UPC, Code 128) et 2D (QR, Data Matrix, PDF417). Barcode Scanning détecte le code dans l«image — contrairement à ZXing qui nécessite que le code occupe presque toute l«image. ML Kit détecte les codes de toute taille et orientation, y compris plusieurs codes dans une seule image (mode multi-barcode).
Formats pris en charge : EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit détermine automatiquement le format — pas besoin de spécifier le type de code. En production, utilisez setBarcodeFormats() pour limiter les formats pris en charge — cela accélère le scan de 30 à 50% en excluant les algorithmes de décodage inutiles.
Barcode Scanning en temps réel — similaire à Text Recognition, intégration avec CameraX. ML Kit traite les images jusqu«à 60 FPS. Pour une vitesse maximale, activez setPerformanceMode(PerformanceMode.FAST). ML Kit Barcode Scanning est 2 à 3 fois plus rapide que ZXing et plus précis pour détecter les codes flous ou partiellement couverts. Selon Google (2025), ML Kit Barcode Scanning a une précision de 98,5% sous éclairage standard.
// Scan de codes-barres avec filtre de 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
}
}
Comparaison avec ZXing : ML Kit est plus rapide, plus précis et plus facile à intégrer. ZXing est open-source, fonctionne entièrement hors ligne, ne nécessite pas Google Play Services. ML Kit nécessite Google Play Services (Android) ou CocoaPods (iOS). Pour les applications fonctionnant sur des appareils sans Google (Huawei, Amazon Fire), utilisez ZXing comme solution de repli. Pour les autres — ML Kit, car il offre une meilleure UX grâce à la détection multi-codes.
ML Kit Object Detection — API pour détecter et suivre des objets dans les images. Détecte des objets de plus de 1000 catégories (classes ImageNet) — personnes, animaux, véhicules, objets domestiques. Object Detection fonctionne en deux modes : single-image (photo unique) et streaming (flux vidéo avec suivi). Le mode streaming suit les objets entre les images, attribuant à chacun un ID de suivi unique.
Pose Detection — API pour déterminer la pose humaine via 33 points clés (squelette) : tête, épaules, coudes, poignets, hanches, genoux, pieds. Détermine les coordonnées (x, y, z) et la confiance de chaque point. Pose Detection est utilisé dans les trackers de fitness (comptage de répétitions, vérification de forme), les applications AR (avatar imite les mouvements) et l«analyse sportive. Vitesse — 10–30 ms par image selon le nombre de personnes.
Object Tracking — ML Kit Object Detection avec suivi inter-images utilise un tracker basé sur Optical Flow. Lorsqu«un objet est détecté, le tracker le suit sans nouvelle détection, économisant CPU/GPU. Si le tracker perd l«objet (mouvement rapide, occlusion), ML Kit relance la détection. Selon Google (2025), le tracker maintient l«objet dans 95% des images à des vitesses allant jusqu«à 30 km/h.
// Détection de pose (squelette humain)
val poseDetector = PoseDetection.getClient(
PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
)
poseDetector.process(inputImage)
.addOnSuccessListener { pose ->
pose.allPoseLandmarks.forEach { landmark ->
val type = landmark.landmarkType // ÉPAULE_GAUCHE, COUDE_DROIT...
val position = landmark.position3D
}
}
Selfie Segmentation — API pour segmenter une personne de l«image (séparer la personne du fond). Renvoie un masque de confiance pour chaque pixel. Selfie Segmentation est utilisé pour flouter ou remplacer les arrière-plans dans les appels vidéo, les éditeurs photo et les applications AR. Le masque est renvoyé sous forme de UInt8Array de la taille de l«image originale — chaque pixel contient une valeur de 0.0 (fond) à 1.0 (personne).
Custom Model API — la possibilité de charger et d«exécuter vos propres modèles TensorFlow Lite via l«interface ML Kit. ML Kit fournit une API d«entrée/sortie unifiée : ByteBuffer en entrée, FloatArray/TensorImage en sortie. Cela permet de tirer parti des avantages de ML Kit (gestion de modèles, traitement d«images, intégration CameraX) avec des modèles personnalisés pour la reconnaissance faciale, la classification d«objets, le TALN et plus.
Chargement d«un modèle — placez le fichier .tflite dans assets/ (Android) ou bundle (iOS) et chargez-le via CustomModelDownloadConditions ou Firebase Model Manager. Pour télécharger de grands modèles (5+ Mo), utilisez des conditions de téléchargement : Wi-Fi, chargé, en arrière-plan. Google recommande de télécharger le modèle au premier lancement de l«application, pas au moment de la première utilisation.
// Chargement du modèle TFLite personnalisé
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
val remoteModel = CustomRemoteModel.Builder("my_model")
.setRemoteModelName("my_model_v2")
.build()
remoteModel.download(conditions)
.addOnSuccessListener { /* model ready */ }
.addOnFailureListener {
// Utiliser le modèle groupé depuis assets
}
Optimisation des modèles personnalisés : utilisez TFLite Converter avec compatibilité delegate. Pour des performances maximales, quantifiez le modèle (INT8) — cela réduit la taille du modèle de 4x et accélère l«inférence de 2 à 3x via XNNPACK Delegate. ML Kit Custom Model API prend en charge Dynamic Shape (batch = 1), Image Input (UInt8, Float32) et Tensor Output.
Foire aux questions
ML Kit est un SDK Google avec des modèles ML prêts à l«emploi pour Android et iOS. Inclut des API pour la reconnaissance de texte (OCR), la détection des visages, le scan de codes-barres, la reconnaissance d«objets, la détection de pose, la traduction et la segmentation. Fonctionne sur l«appareil, ne nécessite pas internet. Se connecte via Google Play Services (Android) ou CocoaPods (iOS) minimalement — avec une seule ligne de dépendance.
ML Kit — SDK haut niveau avec API prêtes pour des tâches spécifiques (texte, visages, codes). TensorFlow Lite — runtime bas niveau pour exécuter n«importe quel modèle TFLite. ML Kit inclut TFLite en interne mais fournit du code prêt et des optimisations pour les tâches standard. Si vous devez reconnaître du texte — ML Kit (5 lignes de code). Si vous avez votre propre réseau neuronal — TFLite (20+ lignes).
Oui, toutes les API principales de ML Kit (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) fonctionnent entièrement sur l«appareil sans connexion internet après le téléchargement initial du modèle. Les API Cloud (Cloud Vision, Natural Language) sont optionnelles et nécessitent internet. Pour les modèles téléchargés, internet n«est nécessaire que pour le premier téléchargement du modèle.
Oui, ML Kit prend entièrement en charge iOS via CocoaPods ou Swift Package Manager. Les API sont similaires à la version Android. Pour iOS, ML Kit utilise Vision Framework et Core ML en interne — les modèles s«exécutent sur Apple Neural Engine (A12+). ML Kit sur iOS fonctionne avec UIImage, CVPixelBuffer et CMSampleBuffer. Prend en charge iOS 12+ et Xcode 15+.
Oui, les API on-device de ML Kit sont entièrement gratuites, sans limite sur le nombre de requêtes. Les API Cloud (via Firebase) sont payantes après le seuil gratuit (200 $/mois gratuits). Les modèles on-device ne nécessitent pas de compte Firebase — ML Kit fonctionne de manière autonome via Google Play Services. Pour les applications commerciales, ML Kit on-device est un choix sûr avec un coût d«exploitation nul.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi