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-функцій у мобільних додатках
  • На пристрої — всі моделі працюють локально, без інтернету
  • Готові API — текст, обличчя, штрих-коди, об’єкти, переклад, поза
  • Крос-платформа — підтримка Android та iOS через єдиний API
  • Користувацькі моделі — завантаження власних TFLite-моделей

Що таке ML Kit: можливості та архітектура

ML Kit — це SDK, сумісний із Firebase, для мобільних платформ, що надає 14 ML-API для Android та iOS. ML Kit замінив Firebase ML (стара назва) у 2020 році й тепер доступний як автономний SDK через Google Play Services (Android) або CocoaPods/SPM (iOS). Ключова перевага — всі моделі працюють на пристрої, що гарантує конфіденційність даних і роботу без інтернету.

Архітектура 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 та користувацькі моделі.

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 автономний — ML Kit може використовуватися з Firebase (Cloud-функції, Analytics, Crashlytics) або як автономний SDK без Firebase. Автономний режим підключається через 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 — ієрогліфічні мови). Латиницеве розпізнавання використовує модель V2 (швидша) або V1 (високоточний). V2 дає швидкість 10–30 мс на кадр, V1 — 50–100 мс.

Можливості 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 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: виявлення облич і контурів

ML Kit Face Detection — API для виявлення облич на зображеннях і відео. Визначає bounding box обличчя, координати очей, носа, рота, вух (468 контурних точок) та основні вирази: посмішка, відкритий рот, закриті очі. Face Detection — один із найшвидших API ML Kit: 5–15 мс на кадр залежно від кількості облич і контурних точок.

Режими 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 mode).

Підтримувані формати: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit автоматично визначає формат — не потрібно вказувати тип коду. У production використовуйте setBarcodeFormats() для обмеження підтримуваних форматів — це прискорює сканування на 30–50% за рахунок виключення зайвих алгоритмів декодування.

Barcode Scanning у реальному часі — аналогічно Text Recognition, інтеграція з CameraX. ML Kit обробляє кадри з частотою до 60 FPS. Для максимальної швидкості ввімкніть setPerformanceMode(PerformanceMode.FAST). Barcode Scanning ML Kit швидший за ZXing у 2–3 рази та точніше виявляє розмиті або частково закриті коди. За даними 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 — open-source, працює повністю офлайн, не потребує 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 мс на кадр залежно від кількості людей.

Object Tracking — ML Kit Object Detection з трекінгом між кадрами використовує трекер на основі Optical Flow. Коли об’єкт виявлено, трекер слідкує за ним без повторного виявлення, що економить CPU/GPU. Якщо трекер втрачає об’єкт (швидкий рух, заслонення), ML Kit запускає повторне виявлення. За даними Google (2025), трекер утримує об’єкт у 95% кадрів при швидкості руху до 30 км/год.

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) використовуйте download conditions: 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) — це зменшує розмір моделі в 4 рази та прискорює інференс у 2–3 рази через XNNPACK Delegate. ML Kit Custom Model API підтримує Dynamic Shape (батч = 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 працює без інтернету?

Так, всі основні API ML Kit (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) працюють повністю на пристрої без підключення до інтернету після початкового завантаження моделі. 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 — це безкоштовно?

Так, ML Kit on-device API повністю безкоштовні, без лімітів на кількість запитів. Cloud API (через Firebase) — платні після безкоштовного ліміту ($200/місяць безкоштовно). 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 мс
  • Barcode Scanning — всі формати кодів, мульти-код, швидше за ZXing у 2–3 рази
  • Pose Detection — 33 точки скелета людини, трекінг у реальному часі
  • Custom Model API — свої TFLite-моделі через уніфікований інтерфейс
  • На пристрої — всі моделі працюють локально, безкоштовно, без інтернету

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також