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

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

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

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

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

تحديث cocoapods

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

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

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

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

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

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

يصف هذا القسم فئات GMV و"حزمة تعلّم الآلة" والطرق المقابلة لكل واجهة برمجة تطبيقات Vision، ويوضّح كيفية تهيئة واجهة برمجة التطبيقات.

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

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

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