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، این کتابخانه در بیش از ۱۰۰٬۰۰۰ برنامه استفاده می‌شود و روزانه ۲+ میلیارد درخواست را پردازش می‌کند

نکات اصلی

  • ML Kit — SDK از Google برای قابلیت‌های ML در برنامه‌های موبایل
  • On-device — همه مدل‌ها به صورت محلی و بدون اینترنت کار می‌کنند
  • APIهای آماده — متن، چهره، بارکد، اشیا، ترجمه، وضعیت بدن
  • چندپلتفرمی — پشتیبانی از Android و iOS از طریق API یکپارچه
  • مدل‌های سفارشی — بارگذاری مدل‌های TFLite خود

ML Kit چیست: امکانات و معماری

ML Kit — SDK سازگار با Firebase برای پلتفرم‌های موبایل است که ۱۴ ML-API برای Android و iOS ارائه می‌دهد. ML Kit در سال ۲۰۲۰ جایگزین Firebase ML (نام قدیمی) شد و اکنون به عنوان SDK مستقل از طریق Google Play Services (Android) یا CocoaPods/SPM (iOS) در دسترس است. مزیت کلیدی — همه مدل‌ها on-device کار می‌کنند که محرمانگی داده‌ها و کار بدون اینترنت را تضمین می‌کند.

معماری ML Kit حول دو حالت ساخته شده است: bundled (مدل در APK/IPA تعبیه شده) و downloaded (مدل در اولین فراخوانی از طریق Google Play Services دانلود می‌شود). حالت bundled شروع فوری را فراهم می‌کند اما اندازه برنامه را ۵–۲۰ MB افزایش می‌دهد. Downloaded — در فضا صرفه‌جویی می‌کند اما در اولین راه‌اندازی نیاز به اینترنت دارد. Google حالت downloaded را برای APIهایی که در هر صفحه استفاده نمی‌شوند (Object Detection, Pose Detection) توصیه می‌کند.

سفارشی‌سازی از طریق TFLite — ML Kit به شما امکان می‌دهد مدل TensorFlow Lite خود را از طریق Custom Model API بارگذاری کنید. این انعطاف‌پذیری می‌دهد — از APIهای آماده برای کارهای استاندارد و از مدل خود برای کارهای خاص استفاده کنید. ML Kit یک handler ورودی/خروجی جهانی ارائه می‌دهد که با ByteBuffer و FloatArray کار می‌کند. طبق داده‌های Google (2025)، ۴۰٪ پروژه‌های 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 در مقابل standalone — ML Kit می‌تواند با Firebase (توابع Cloud، Analytics، Crashlytics) یا به عنوان SDK مستقل بدون Firebase استفاده شود. حالت standalone بدون تنظیم حساب Firebase از طریق Google Play Services (Android) متصل می‌شود. Cloud APIها از طریق Firebase (Cloud Vision, Natural Language) برای کارهایی که نیاز به شبکه‌های عصبی در سرور Google دارند در دسترس هستند — اما این قابلیت‌ها پولی و غیر on-device هستند.

ML Kit Text Recognition: تشخیص متن

ML Kit Text Recognition — API برای تشخیص نوری کاراکترها (OCR) در تصاویر. دو حالت را پشتیبانی می‌کند: Latin-based (لاتین، سیریلیک، اعداد — ۴۵ زبان) و Chinese/Japanese/Korean (CJK — زبان‌های ایدئوگرافیک). تشخیص Latin از مدل V2 (سریع‌تر) یا V1 (دقت بالا) استفاده می‌کند. V2 سرعت ۱۰–۳۰ ms در هر فریم را می‌دهد، V1 — ۵۰–۱۰۰ ms.

قابلیت‌های Text Recognition شامل تشخیص متن چاپی و دست‌نویس، تعیین جهت متن، تشخیص خطوط، کلمات و کاراکترها، تعیین زبان متن است. API ساختاری را برمی‌گرداند: Text → TextBlock → Line → Element (Word/Symbol). هر عنصر دارای bounding box، confidence و متن تشخیص داده شده است. طبق Google (2025)، دقت ML Kit Text Recognition V2 در لاتین ۹۶٪، در سیریلیک ۹۱٪ است.

Text Recognition در زمان واقعی — استفاده با CameraX یا Camera2 برای جریان ویدیو. یک ImageAnalysis.Analyzer ایجاد کنید و فریم‌ها را به ML Kit منتقل کنید. برای کارایی، وضوح فریم را به ۴۸۰p (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 چهره، مختصات چشم‌ها، بینی، دهان، گوش‌ها (۴۶۸ نقطه خطوط) و حالات پایه را تعیین می‌کند: لبخند، دهان باز، چشم‌های بسته. Face Detection یکی از سریع‌ترین APIهای ML Kit است: ۵–۱۵ ms در هر فریم بسته به تعداد چهره‌ها و نقاط خطوط.

حالت‌های Face Detection: contour mode (۴۶۸ نقطه خطوط چهره برای اعمال دقیق ماسک‌ها/فیلترها)، classification mode (تشخیص لبخند، چشم‌های باز)، landmark mode (نقاط کلیدی بدون خطوط). حالت‌ها در FaceDetectorOptions ترکیب می‌شوند. فعال کردن همه حالت‌ها تشخیص را ۲–۳ برابر کند می‌کند — از حداقل مجموعه لازم برای کار خود استفاده کنید.

Face Detection در برنامه‌های AR — بر اساس نقاط خطوط، ML Kit یک ماسک چهره برای فیلترهای مشابه Snapchat می‌سازد. ML Kit ۴۶۸ نقطه با مختصات x، y، z برمی‌گرداند (z = عمق). نقاط در دستگاه‌های مدرن ۳۰–۶۰ بار در ثانیه به‌روز می‌شوند. برای 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 با چهره‌های با زاویه تا ۴۵ درجه، با عینک و ماسک جزئی به درستی کار می‌کند. برای زوایای نیمرخ (۹۰°) دقت به ۴۰–۶۰٪ کاهش می‌یابد.

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 به طور خودکار فرمت را تعیین می‌کند — نیازی به مشخص کردن نوع کد نیست. در production از setBarcodeFormats() برای محدود کردن فرمت‌های پشتیبانی شده استفاده کنید — این کار اسکن را با حذف الگوریتم‌های رمزگشایی اضافی ۳۰–۵۰٪ سریع‌تر می‌کند.

Barcode Scanning در زمان واقعی — مشابه Text Recognition، ادغام با CameraX. ML Kit فریم‌ها را با فرکانس تا ۶۰ FPS پردازش می‌کند. برای حداکثر سرعت setPerformanceMode(PerformanceMode.FAST) را فعال کنید. Barcode Scanning ML Kit ۲–۳ برابر سریع‌تر از ZXing است و کدهای تار یا نیمه پوشیده را دقیق‌تر تشخیص می‌دهد. طبق Google (2025)، ML Kit Barcode Scanning در نور استاندارد ۹۸.۵٪ دقت دارد.

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 برای تشخیص و ردیابی اشیا در تصاویر. اشیا را از ۱۰۰۰+ دسته (کلاس‌های ImageNet) تشخیص می‌دهد — افراد، حیوانات، وسایل نقلیه، اشیاء روزمره. Object Detection در دو حالت کار می‌کند: single-image (عکس تکی) و streaming (جریان ویدیو با ردیابی). حالت streaming اشیا را بین فریم‌ها ردیابی می‌کند و به هر کدام یک track ID منحصر به فرد اختصاص می‌دهد.

Pose Detection — API برای تعیین وضعیت بدن انسان بر اساس ۳۳ نقطه کلیدی (اسکلت): سر، شانه‌ها، آرنج‌ها، مچ‌ها، باسن، زانوها، پاها. مختصات (x، y، z) و confidence هر نقطه را تعیین می‌کند. Pose Detection در ردیاب‌های تناسب اندام (شمارش تکرارها، کنترل فرم)، برنامه‌های AR (آواتاری که حرکات را کپی می‌کند) و تحلیل ورزشی کاربرد دارد. سرعت — ۱۰–۳۰ ms در هر فریم بسته به تعداد افراد.

Object Tracking — ML Kit Object Detection با ردیابی بین فریم‌ها از ردیاب مبتنی بر Optical Flow استفاده می‌کند. وقتی شیء تشخیص داده شد، ردیاب بدون تشخیص مجدد آن را دنبال می‌کند که باعث صرفه‌جویی در CPU/GPU می‌شود. اگر ردیاب شیء را گم کند (حرکت سریع، پوشانده شدن)، ML Kit تشخیص مجدد را راه‌اندازی می‌کند. طبق Google (2025)، ردیاب شیء را در ۹۵٪ فریم‌ها در سرعت حرکت تا ۳۰ 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 با اندازه تصویر اصلی برمی‌گردد — هر پیکسل حاوی مقداری از ۰.۰ (پس‌زمینه) تا ۱.۰ (فرد) است.

مدل‌های سفارشی TFLite در ML Kit

Custom Model API — امکان بارگذاری و اجرای مدل‌های TensorFlow Lite خود از طریق رابط ML Kit. ML Kit یک API ورودی/خروجی یکپارچه ارائه می‌دهد: ByteBuffer در ورودی، FloatArray/TensorImage در خروجی. این امکان استفاده از مزایای ML Kit (مدیریت مدل، پردازش تصویر، اتصال به CameraX) را با مدل‌های سفارشی face recognition، object classification، NLP و دیگران فراهم می‌کند.

بارگذاری مدل — فایل .tflite را در assets/ (Android) یا bundle (iOS) قرار دهید و از طریق CustomModelDownloadConditions یا Firebase Model Manager بارگذاری کنید. برای دانلود مدل‌های بزرگ (۵+ 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 {
        // استفاده از مدل همراه از منابع
    }

بهینه‌سازی مدل‌های سفارشی: از TFLite Converter با سازگاری delegate استفاده کنید. برای حداکثر کارایی مدل را کوانتیزه کنید (INT8) — این کار اندازه مدل را ۴ برابر کاهش می‌دهد و استنتاج را از طریق 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 (۵ خط کد). اگر شبکه عصبی خود را دارید — TFLite (۲۰+ خط).

آیا ML Kit بدون اینترنت کار می‌کند؟

بله، تمام 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 استفاده کرد؟

بله، 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 ۱۲+ و Xcode ۱۵+.

آیا ML Kit رایگان است؟

بله، APIهای on-device ML Kit کاملاً رایگان و بدون محدودیت تعداد درخواست هستند. Cloud API (از طریق Firebase) — پس از حد مجاز رایگان پرداختی هستند (۲۰۰ دلار در ماه رایگان). مدل‌های on-device نیازی به حساب Firebase ندارند — ML Kit مستقل از طریق Google Play Services کار می‌کند. برای برنامه‌های تجاری، on-device ML Kit انتخابی امن با هزینه عملیاتی صفر است.

خلاصه

  • ML Kit — Google SDK با ۱۴ ML-API آماده برای Android و iOS
  • Text Recognition — OCR برای لاتین (۴۵ زبان) و CJK، دقت ۹۱–۹۶٪
  • Face Detection — ۴۶۸ نقطه خطوط، لبخند، چشم‌های باز، ۵–۱۵ ms
  • Barcode Scanning — همه فرمت‌های کد، چندکدی، ۲–۳x سریع‌تر از ZXing
  • Pose Detection — ۳۳ نقطه اسکلت انسان، ردیابی در زمان واقعی
  • Custom Model API — مدل‌های TFLite خود از طریق رابط یکپارچه
  • On-device — همه مدل‌ها محلی، رایگان، بدون اینترنت کار می‌کنند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید