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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

قبل البدء في ترحيل شفرتك، تأكد من تلبية المتطلبات التالية:

  • يتوافق ML Kit مع Xcode 13.2.1 أو الإصدارات الأحدث.
  • تتوافق مجموعة أدوات تعلّم الآلة مع الإصدار 10 من نظام التشغيل iOS أو الإصدارات الأحدث.
  • لا تدعم ML Kit بنيات 32 بت (i386 وarv7). تدعم ML Kit بنيات 64 بت (x86_64 وar64).

تحديث cocoapods

عدِّل تبعيات حزمة ML Kit iOS في ملف Podfile لتطبيقك:

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

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

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

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

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

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

مكتشف الوجه

أعد ترميز التهيئة كما هو موضح في المثال التالي:

قيمة المتاجرة الإجمالية

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:));

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

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
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

أداة رصد الرمز الشريطي

أعد ترميز التهيئة كما هو موضح في المثال التالي:

قيمة المتاجرة الإجمالية

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:));

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

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
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

التعرّف على النص

أعد ترميز التهيئة كما هو موضح في المثال التالي:

قيمة المتاجرة الإجمالية

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:));

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

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

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

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