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