ML Kit — είναι ένα κινητό SDK από την Google για ενσωμάτωση έτοιμων μοντέλων ML σε εφαρμογές Android και iOS. Το ML Kit παρέχει API για αναγνώριση κειμένου, ανίχνευση προσώπων, σάρωση barcode, αναγνώριση αντικειμένων, μετάφραση κειμένου, προσδιορισμό στάσης και τμηματοποίηση εικόνας — όλα τα μοντέλα λειτουργούν στη συσκευή (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 που λειτουργεί με 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 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() }
}
}
Βελτιστοποίηση του Text Recognition: χρησιμοποιήστε το ImageDecoder για βελτίωση της αναγνώρισης θολών ή σκοτεινών εικόνων. Για τυπωμένο κείμενο — TextRecognizerOptions.DEFAULT_OPTIONS (μοντέλο V2). Για χειρόγραφο — TextRecognizerOptions.SCRIPT_LATIN (ακριβέστερο, αλλά πιο αργό). Στα έργα IT Sectr χρησιμοποιούμε V2 για αναγνώριση εγγράφων και το μοντέλο Latin για επιταγές και αποδείξεις.
ML Kit Face Detection — API για ανίχνευση προσώπων σε εικόνες και βίντεο. Καθορίζει το bounding box του προσώπου, συντεταγμένες ματιών, μύτης, στόματος, αυτιών (468 σημεία περιγράμματος) και βασικές εκφράσεις: χαμόγελο, ανοιχτό στόμα, κλειστά μάτια. Το Face Detection είναι ένα από τα ταχύτερα API του ML Kit: 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. Το 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% υπό τυπικό φωτισμό.
// Σάρωση barcode με φίλτρο μορφής
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 — ανοιχτού κώδικα, λειτουργεί πλήρως εκτός σύνδεσης, δεν απαιτεί 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 trackers (καταμέτρηση επαναλήψεων, έλεγχος φόρμας), εφαρμογές AR (άβαταρ που αντιγράφει κινήσεις) και αθλητική αναλυτική. Ταχύτητα — 10–30 ms ανά καρέ ανάλογα με τον αριθμό ατόμων.
Object Tracking — το ML Kit Object Detection με παρακολούθηση μεταξύ καρέ χρησιμοποιεί tracker βασισμένο στο Optical Flow. Όταν ένα αντικείμενο ανιχνευθεί, ο tracker το παρακολουθεί χωρίς εκ νέου ανίχνευση, εξοικονομώντας CPU/GPU. Εάν ο tracker χάσει το αντικείμενο (γρήγορη κίνηση, απόφραξη), το ML Kit ξεκινά εκ νέου ανίχνευση. Σύμφωνα με την Google (2025), ο tracker διατηρεί το αντικείμενο στο 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 μεγέθους της αρχικής εικόνας — κάθε pixel περιέχει τιμή από 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 {
// Χρήση ενσωματωμένου μοντέλου από assets
}
Βελτιστοποίηση προσαρμοσμένων μοντέλων: χρησιμοποιήστε το TFLite Converter με συμβατότητα delegate. Για μέγιστη απόδοση, κβαντίστε το μοντέλο (INT8) — αυτό μειώνει το μέγεθος του μοντέλου 4x και επιταχύνει το inference 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), ανίχνευση προσώπων, σάρωση barcode, αναγνώριση αντικειμένων, προσδιορισμό στάσης, μετάφραση και τμηματοποίηση. Λειτουργεί στη συσκευή, δεν απαιτεί διαδίκτυο. Συνδέεται μέσω Google Play Services (Android) ή CocoaPods (iOS) ελάχιστα — με μία γραμμή εξάρτησης.
ML Kit — υψηλού επιπέδου SDK με έτοιμα API για συγκεκριμένες εργασίες (κείμενο, πρόσωπα, κωδικοί). Το TensorFlow Lite — χαμηλού επιπέδου περιβάλλον εκτέλεσης για την εκτέλεση οποιωνδήποτε μοντέλων TFLite. Το ML Kit περιλαμβάνει TFLite εσωτερικά, αλλά παρέχει έτοιμο κώδικα και βελτιστοποιήσεις για τυπικές εργασίες. Εάν χρειάζεται να αναγνωρίσετε κείμενο — ML Kit (5 γραμμές κώδικα). Εάν έχετε δικό σας νευρωνικό δίκτυο — TFLite (20+ γραμμές).
Ναι, όλα τα βασικά API του ML Kit (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 API του ML Kit είναι εντελώς δωρεάν, χωρίς όριο στον αριθμό αιτημάτων. Cloud API (μέσω Firebase) — επί πληρωμή μετά την υπέρβαση του δωρεάν ορίου (200$/μήνα δωρεάν). Τα on-device μοντέλα δεν απαιτούν λογαριασμό Firebase — το ML Kit λειτουργεί αυτόνομα μέσω Google Play Services. Για εμπορικές εφαρμογές, το on-device ML Kit είναι μια ασφαλής επιλογή με μηδενικό λειτουργικό κόστος.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης