ML Kit: المكتبات والتعلم الآلي لنظامي Android وiOS

المؤلف: IT Sectr نُشر: 2026-07-18 وقت القراءة: 10 دق

ML Kit هي حزمة SDK محمولة من Google لدمج نماذج التعلم الآلي الجاهزة في تطبيقات Android وiOS. توفر ML Kit واجهات برمجة تطبيقات للتعرف على النص، اكتشاف الوجه، مسح الرموز الشريطية، التعرف على الأشياء، ترجمة النص، تحديد الوضعية وتجزئة الصور — جميع النماذج تعمل على الجهاز (on-device) دون اتصال إلزامي بالخادم. وفقًا لـ Google ML Kit, 2025، تُستخدم المكتبة في أكثر من 100,000 تطبيق، مع معالجة أكثر من 2 مليار طلب يوميًا

الملخص

  • ML Kit — حزمة SDK من Google لوظائف التعلم الآلي في التطبيقات المحمولة
  • على الجهاز — جميع النماذج تعمل محليًا، بدون إنترنت
  • واجهات برمجة تطبيقات جاهزة — نص، وجوه، رموز شريطية، أشياء، ترجمة، وضعية
  • متعدد المنصات — دعم Android وiOS من خلال واجهة برمجة تطبيقات موحدة
  • نماذج مخصصة — تحميل نماذج TFLite الخاصة بك

ما هو ML Kit: الإمكانيات والهندسة المعمارية

ML Kit هي حزمة SDK متوافقة مع Firebase للمنصات المحمولة توفر 14 واجهة برمجة تطبيقات للتعلم الآلي لنظامي 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 ميجابايت. وضع downloaded يوفر مساحة ولكنه يتطلب إنترنت عند التشغيل الأول. توصي Google باستخدام downloaded لواجهات برمجة التطبيقات غير المستخدمة في كل شاشة (Object Detection, Pose Detection).

التخصيص عبر TFLite — يتيح لك ML Kit تحميل نموذج TensorFlow Lite الخاص بك من خلال Custom Model API. هذا يوفر مرونة — استخدم واجهات برمجة التطبيقات الجاهزة للمهام القياسية ونموذجك الخاص للمهام المحددة. يوفر ML Kit معالج إدخال/إخراج عالمي يعمل مع ByteBuffer وFloatArray. وفقًا لـ Google (2025)، 40% من مشاريع ML Kit تجمع بين واجهات برمجة التطبيقات الجاهزة والنماذج المخصصة.

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 مقابل مستقل — يمكن استخدام ML Kit مع Firebase (وظائف Cloud، Analytics، Crashlytics) أو كحزمة SDK مستقلة بدون Firebase. الوضع المستقل يتصل عبر Google Play Services (Android) دون إعداد حساب Firebase. واجهات برمجة تطبيقات Cloud متاحة عبر Firebase (Cloud Vision, Natural Language) للمهام التي تتطلب شبكات عصبية على خادم Google — لكن هذه الميزات مدفوعة وليست على الجهاز.

ML Kit Text Recognition: التعرف على النص

ML Kit Text Recognition — واجهة برمجة تطبيقات للتعرف البصري على الأحرف (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)، ثقة ونص تم التعرف عليه. وفقًا لـ 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 — واجهة برمجة تطبيقات لاكتشاف الوجوه في الصور والفيديو. تكتشف مربع الإحاطة للوجه، إحداثيات العينين والأنف والفم والأذنين (468 نقطة كفافية) والتعبيرات الأساسية: ابتسامة، فم مفتوح، عيون مغلقة. Face Detection هي واحدة من أسرع واجهات برمجة تطبيقات ML Kit: 5–15 مللي ثانية لكل إطار حسب عدد الوجوه ونقاط الكفاف.

أوضاع Face Detection: وضع الكفاف (468 نقطة كفافية للوجه للتراكب الدقيق للأقنعة/المرشحات)، وضع التصنيف (اكتشاف الابتسامة، العيون المفتوحة)، وضع المعالم (نقاط رئيسية بدون كفاف). يتم دمج الأوضاع في 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 — واجهة برمجة تطبيقات لقراءة وفك تشفير الرموز الشريطية أحادية البعد (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 إطارًا في الثانية. للسرعة القصوى فعّل setPerformanceMode(PerformanceMode.FAST). ML Kit Barcode Scanning أسرع 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 كخيار احتياطي. للباقي — ML Kit، حيث أنه يوفر تجربة مستخدم أفضل من خلال اكتشاف الرموز المتعددة.

Object Detection وPose Detection في ML Kit

ML Kit Object Detection — واجهة برمجة تطبيقات لاكتشاف وتتبع الأشياء في الصور. تكتشف أشياء من أكثر من 1000 فئة (فئات ImageNet) — أشخاص، حيوانات، مركبات، أدوات منزلية. يعمل Object Detection في وضعين: single-image (صورة واحدة) وstreaming (دفق فيديو مع تتبع). وضع streaming يتتبع الأشياء بين الإطارات، مع تعيين معرف تتبع فريد لكل كائن.

Pose Detection — واجهة برمجة تطبيقات لتحديد وضعية الإنسان باستخدام 33 نقطة رئيسية (هيكل عظمي): الرأس، الكتفين، المرفقين، المعصمين، الوركين، الركبتين، القدمين. تحدد الإحداثيات (x, y, z) ودرجة الثقة لكل نقطة. يستخدم Pose Detection في متتبعات اللياقة البدنية (عد التكرارات، التحقق من الشكل)، تطبيقات AR (الصورة الرمزية تحاكي الحركات) وتحليلات الرياضة. السرعة — 10–30 مللي ثانية لكل إطار حسب عدد الأشخاص.

Object Tracking — ML Kit Object Detection مع التتبع بين الإطارات يستخدم متتبعًا يعتمد على Optical Flow. عندما يتم اكتشاف كائن، يتتبعه المتتبع دون إعادة اكتشاف، مما يوفر وحدة المعالجة المركزية/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 — واجهة برمجة تطبيقات لفصل الشخص عن الصورة (فصل الشخص عن الخلفية). تعيد قناع ثقة لكل بكسل. يستخدم Selfie Segmentation لتعتيم أو استبدال الخلفيات في مكالمات الفيديو، محررات الصور وتطبيقات AR. يتم إرجاع القناع كـ UInt8Array بحجم الصورة الأصلية — كل بكسل يحتوي على قيمة من 0.0 (خلفية) إلى 1.0 (شخص).

نماذج TFLite المخصصة في ML Kit

Custom Model API — القدرة على تحميل وتشغيل نماذج TensorFlow Lite الخاصة بك من خلال واجهة ML Kit. يوفر ML Kit واجهة إدخال/إخراج موحدة: ByteBuffer كمدخل، FloatArray/TensorImage كمخرج. هذا يسمح بالاستفادة من مزايا ML Kit (إدارة النماذج، معالجة الصور، التكامل مع CameraX) مع نماذج مخصصة للتعرف على الوجه، تصنيف الأشياء، NLP والمزيد.

تحميل نموذج — ضع ملف .tflite في assets/ (Android) أو bundle (iOS) وحمّله عبر CustomModelDownloadConditions أو Firebase Model Manager. لتنزيل النماذج الكبيرة (5+ ميجابايت) استخدم شروط التنزيل: 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 (batch = 1), Image Input (UInt8, Float32) وTensor Output.

الأسئلة الشائعة

ما هو ML Kit في Android؟

ML Kit هي حزمة SDK من Google مع نماذج تعلم آلي جاهزة لنظامي Android وiOS. تتضمن واجهات برمجة تطبيقات للتعرف على النص (OCR)، اكتشاف الوجه، مسح الرموز الشريطية، التعرف على الأشياء، تحديد الوضعية، الترجمة والتجزئة. تعمل على الجهاز، لا تتطلب إنترنت. تتصل عبر Google Play Services (Android) أو CocoaPods (iOS) بأقل جهد — بسطر تبعية واحد.

كيف يختلف ML Kit عن TensorFlow Lite؟

ML Kit — حزمة SDK عالية المستوى مع واجهات برمجة تطبيقات جاهزة لمهام محددة (نص، وجوه، رموز). TensorFlow Lite — وقت تشغيل منخفض المستوى لتشغيل أي نماذج TFLite. يتضمن ML Kit TFLite داخليًا لكنه يوفر كودًا جاهزًا وتحسينات للمهام القياسية. إذا كنت بحاجة للتعرف على النص — ML Kit (5 أسطر من الكود). إذا كانت لديك شبكتك العصبية الخاصة — TFLite (20+ سطرًا).

هل يعمل ML Kit بدون إنترنت؟

نعم، جميع واجهات برمجة تطبيقات ML Kit الأساسية (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) تعمل بالكامل على الجهاز دون اتصال بالإنترنت بعد التنزيل الأولي للنموذج. واجهات برمجة تطبيقات Cloud (Cloud Vision, Natural Language) اختيارية وتتطلب إنترنت. للنماذج التي تم تنزيلها، الإنترنت مطلوب فقط عند أول تنزيل للنموذج.

هل يمكن استخدام ML Kit على iOS؟

نعم، ML Kit يدعم iOS بالكامل عبر CocoaPods أو Swift Package Manager. واجهات برمجة التطبيقات مماثلة لإصدار Android. لنظام iOS، يستخدم ML Kit Vision Framework وCore Core داخليًا — يتم تشغيل النماذج على Apple Neural Engine (A12+). ML Kit على iOS يعمل مع UIImage وCVPixelBuffer وCMSampleBuffer. يدعم iOS 12+ وXcode 15+.

هل ML Kit مجاني؟

نعم، واجهات برمجة تطبيقات ML Kit على الجهاز مجانية تمامًا بدون حدود على عدد الطلبات. واجهات برمجة تطبيقات Cloud (عبر Firebase) مدفوعة بعد الحد المجاني (200 دولار/شهر مجانًا). النماذج على الجهاز لا تتطلب حساب Firebase — يعمل ML Kit بشكل مستقل عبر Google Play Services. للتطبيقات التجارية، ML Kit على الجهاز هو خيار آمن بتكلفة تشغيل صفرية.

الخلاصة

  • ML Kit — حزمة SDK من Google مع 14 واجهة برمجة تطبيقات تعلم آلي جاهزة لنظامي Android وiOS
  • Text Recognition — OCR للاتينية (45 لغة) وCJK، دقة 91–96%
  • Face Detection — 468 نقطة كفافية، ابتسامة، عيون مفتوحة، 5–15 مللي ثانية
  • Barcode Scanning — جميع تنسيقات الرموز، رموز متعددة، أسرع 2–3 مرات من ZXing
  • Pose Detection — 33 نقطة هيكل عظمي بشري، تتبع في الوقت الفعلي
  • Custom Model API — نماذج TFLite الخاصة بك عبر واجهة موحدة
  • على الجهاز — جميع النماذج تعمل محليًا، مجانًا، بدون إنترنت

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا