ML Kit: какво е, библиотеки и ML за Android и iOS

Автор: IT Sectr Публикувано: 2026-07-18 Време за четене: 10 мин

ML Kit — е мобилен SDK от Google за интегриране на готови ML модели в Android и iOS приложения. ML Kit предоставя API за разпознаване на текст, откриване на лица, сканиране на баркодове, разпознаване на обекти, превод на текст, определяне на поза и сегментация на изображения — всички модели работят на устройството (on-device) без задължителна връзка към сървър. Според данни на Google ML Kit, 2025, библиотеката се използва в над 100 000 приложения, обработвайки 2+ милиарда заявки на ден

Основни точки

  • ML Kit — SDK от Google за ML функции в мобилни приложения
  • On-device — всички модели работят локално, без интернет
  • Готови API — текст, лица, баркодове, обекти, превод, поза
  • Кръстосана платформа — поддръжка на Android и iOS чрез единен API
  • Персонализирани модели — зареждане на собствени TFLite модели

Какво е ML Kit: възможности и архитектура

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 и персонализирани модели.

kotlin
// Настройка на 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: разпознаване на текст

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 автоматично обработва завъртането на изображението, но за максимална скорост предавайте изображението в правилната ориентация.

kotlin
// Разпознаване на текст с 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: откриване на лица и контури

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 (специализирана версия) — той връща и триъгълниците на мрежата за текстуриране.

kotlin
// Откриване на лице с контурни точки
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: четене на всички формати кодове

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% точност при стандартно осветление.

kotlin
// Сканиране на баркод с филтър на формат
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 благодарение на откриването на множество кодове.

Object Detection и Pose Detection в ML Kit

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 се прилага във фитнес тракери (броене на повторения, контрол на формата), 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.

kotlin
// Откриване на поза (човешки скелет)
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 (човек).

Персонализирани TFLite модели в ML Kit

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 препоръчва зареждане на модела при първото стартиране на приложението, а не в момента на първата употреба.

kotlin
// Зареждане на персонализиран 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 и ускорява инференцията 2–3x чрез XNNPACK Delegate. ML Kit Custom Model API поддържа Dynamic Shape (batch = 1), Image Input (UInt8, Float32) и Tensor Output.

Често задавани въпроси

Какво е ML Kit в Android?

ML Kit — е SDK от Google с готови ML модели за Android и iOS. Включва API за разпознаване на текст (OCR), откриване на лица, сканиране на баркодове, разпознаване на обекти, определяне на поза, превод и сегментация. Работи на устройството, не изисква интернет. Свързва се чрез Google Play Services (Android) или CocoaPods (iOS) минимално — с един ред зависимост.

С какво ML Kit се различава от TensorFlow Lite?

ML Kit — високо ниво SDK с готови API за конкретни задачи (текст, лица, кодове). TensorFlow Lite — ниско ниво среда за изпълнение на всякакви TFLite модели. ML Kit включва TFLite под капака, но предоставя готов код и оптимизации за стандартни задачи. Ако трябва да разпознаете текст — ML Kit (5 реда код). Ако имате собствена невронна мрежа — TFLite (20+ реда).

ML Kit работи ли без интернет?

Да, всички основни 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?

Да, 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+.

ML Kit безплатен ли е?

Да, on-device API на ML Kit са напълно безплатни, без ограничения на броя заявки. Cloud API (чрез Firebase) — платени след надвишаване на безплатния лимит (200 USD/месец безплатно). On-device моделите не изискват Firebase акаунт — ML Kit работи самостоятелно чрез Google Play Services. За търговски приложения on-device ML Kit е безопасен избор с нулеви оперативни разходи.

Резюме

  • ML Kit — Google SDK с 14 готови ML-API за Android и iOS
  • Text Recognition — OCR за латиница (45 езика) и CJK, точност 91–96%
  • Face Detection — 468 контурни точки, усмивка, отворени очи, 5–15 ms
  • Barcode Scanning — всички формати кодове, мулти-код, 2–3x по-бърз от ZXing
  • Pose Detection — 33 точки на човешки скелет, проследяване в реално време
  • Custom Model API — собствени TFLite модели чрез унифициран интерфейс
  • On-device — всички модели работят локално, безплатно, без интернет

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също