الانتقال من Mobile Vision إلى ML Kit على نظام التشغيل iOS

يتناول هذا المستند الخطوات التي يجب اتّباعها لنقل مشاريعك من Google Mobile Vision (GMV) إلى حزمة تعلّم الآلة على نظام التشغيل iOS.

المتطلبات الأساسية

قبل البدء في نقل الرمز البرمجي، تأكَّد من استيفاء المتطلبات التالية:

  • تتوافق "حزمة تعلّم الآلة" مع الإصدار 13.2.1 من Xcode أو الإصدارات الأحدث.
  • تتوافق "حزمة تعلّم الآلة" مع الإصدار 15.5 من نظام التشغيل iOS أو الإصدارات الأحدث.
  • لا تتوافق "حزمة تعلّم الآلة" مع البُنى الأساسية لإصدار 32 بت (i386 وarmv7). تتوافق "حزمة تعلّم الآلة" مع البُنى الأساسية لإصدار 64 بت (x86_64 وarm64).

تحديث cocoapods

عدِّل التبعيات لـ حزمة تعلّم الآلة iOS cocoapods في ملف Podfile الخاص بتطبيقك:

واجهة برمجة التطبيقاتمجموعة قيمة المتاجرة الإجماليةحزمة تعلّم الآلة
مسح الرموز الشريطية ضوئيًا GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
التعرّف على الوجوه GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
التعرّف على النص GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

التغييرات العامة في واجهة برمجة التطبيقات

تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:

  • تتلقّى واجهات برمجة التطبيقات للاستنتاج في GMV‏ UIImage أو CMSampleBufferRef كإدخال. تغلّفها "حزمة تعلّم الآلة" داخل MLKVisionImage وتستخدمها كإدخال.
  • يستخدم GMV السمة NSDictionary لتمرير خيارات مختلفة لأداة الرصد. تستخدم "حزمة تعلّم الآلة" فئات خيارات مخصّصة لهذا الغرض.
  • تمرّر GMV نوع أداة الرصد إلى فئة GMVDetector الواحدة عند إنشاء أداة رصد. تستخدم "حزمة تعلّم الآلة" فئات مخصّصة لإنشاء نُسخ منفصلة من أدوات الرصد والمسح الضوئي والتعرّف.
  • تتيح واجهات برمجة التطبيقات في GMV الرصد المتزامن فقط. يمكن استدعاء واجهات برمجة التطبيقات للاستدلال في "حزمة تعلّم الآلة" بشكل متزامن وغير متزامن.
  • توسّع GMV نطاق AVCaptureVideoDataOutput وتوفّر إطار عمل متعدد أدوات الرصد لإجراء عمليات رصد متعددة في الوقت نفسه. لا توفّر "حزمة تعلّم الآلة" هذه الآليات، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا أراد ذلك.

التغييرات الخاصة بواجهة برمجة التطبيقات

يصف هذا القسم فئات وأساليب GMV وML Kit المقابلة لكل واجهة برمجة تطبيقات Vision API، ويوضح كيفية تهيئة واجهة برمجة التطبيقات.

FaceDetector

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

GMV

NSDictionary *options = @{
    GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode),
    GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
    GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll)
};
GMVDetector *faceDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];

حزمة تعلّم الآلة

MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init];
options.performanceMode = MLKFaceDetectorPerformanceModeAccurate;
options.classificationMode = MLKFaceDetectorClassificationModeAll;
options.landmarkMode = MLKFaceDetectorLandmarkModeAll;
MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];

GMVDetector لديه واجهتا برمجة تطبيقات مختلفتان للكشف. كلاهما عمليتان متزامنتان:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector بـ MLKFaceDetector. يمكن استدعاء واجهة برمجة التطبيقات للاستنتاج بشكل متزامن أو غير متزامن.

متزامن

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

غير متزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطرق والأسماء التالية:

GMV حزمة تعلّم الآلة
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary من خيارات التعرّف على الوجوه MLKFaceDetectorOptions
GMVDetectorFaceFastMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeFast
GMVDetectorFaceAccurateMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeAccurate
GMVDetectorFaceSelfieMode Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceLandmarkType MLKFaceDetectorOptions.landmarkMode
GMVDetectorFaceLandmarkNone Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeNone
GMVDetectorFaceLandmarkAll Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeAll
GMVDetectorFaceLandmarkContour Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceClassificationType MLKFaceDetectorOptions.classificationMode
GMVDetectorFaceClassificationNone Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeNone
GMVDetectorFaceClassificationAll Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeAll
GMVDetectorFaceTrackingEnabled MLKFaceDetectorOptions.trackingEnabled
GMVDetectorProminentFaceOnly Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceMinSize MLKFaceDetectorOptions.minFaceSize

BarcodeDetector

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

GMV

NSDictionary *options = @{
    GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 |
                                  GMVDetectorBarcodeFormatQRCode)
};
GMVDetector *barcodeDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];

حزمة تعلّم الآلة

MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init];
options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode;
MLKBarcodeScanner *barcodeScanner =
    [MLKBarcodeScanner barcodeScannerWithOptions:options];

GMVDetector لديه واجهتَي برمجة تطبيقات مختلفتَين للكشف عن المحتوى. كلاهما عمليتان متزامنتان:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector بـ MLKBarcodeScanner. يمكن استدعاء واجهة برمجة التطبيقات للاستنتاج بشكل متزامن أو غير متزامن.

متزامن

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

غير متزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطرق والأسماء التالية:

GMV حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
‫NSDictionary من خيارات أداة رصد الرموز الشريطية MLKBarcodeScannerOptions
GMVDetectorBarcodeFormats MLKBarcodeScannerOptions.formats
GMVBarcodeFeature MLKBarcode
GMVBarcodeFeatureAddress MLKBarcodeAddress
GMVBarcodeFeatureCalendarEvent MLKBarcodeCalendarEvent
GMVBarcodeFeatureContactInfo MLKBarcodeContactInfo
GMVBarcodeFeatureDriverLicense MLKBarcodeDriverLicense
GMVBarcodeFeatureEmail MLKBarcodeEmail
GMVBarcodeFeatureGeoPoint MLKBarcodeGeoPoint
GMVBarcodeFeaturePersonName MLKBarcodePersonName
GMVBarcodeFeaturePhone MLKBarcodePhone
GMVBarcodeFeatureSMS MLKBarcodeSMS
GMVBarcodeFeatureURLBookmark MLKBarcodeURLBookmark
GMVBarcodeFeatureWiFi MLKBarcodeWiFi

TextRecognition

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

GMV

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];

حزمة تعلّم الآلة

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector لديه واجهتا برمجة تطبيقات مختلفتان للكشف. كلاهما عمليتان متزامنتان:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector بـ MLKTextRecognizer. يمكن استدعاء واجهة برمجة التطبيقات للاستنتاج بشكل متزامن أو غير متزامن.

متزامن

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

غير متزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطرق والأسماء التالية:

GMV حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

الحصول على المساعدة

إذا واجهت أي مشاكل، يمكنك الاطّلاع على صفحة المنتدى حيث نوضّح القنوات المتاحة للتواصل معنا.