يتناول هذا المستند الخطوات التي يجب اتّباعها لنقل مشاريعك من 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:));
غيِّر الفئات والطرق والأسماء التالية:
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:));
غيِّر الفئات والطرق والأسماء التالية:
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
|
الحصول على المساعدة
إذا واجهت أي مشاكل، يمكنك الاطّلاع على صفحة المنتدى حيث نوضّح القنوات المتاحة للتواصل معنا.