במסמך הזה מפורטים השלבים שצריך לבצע כדי להעביר את הפרויקטים מ: Google Mobile Vision (GMV) ל-ML Kit ב-iOS.
דרישות מוקדמות
לפני שתתחילו להעביר את הקוד, עליכם לוודא שאתם עומדים בדרישות הבאות:
- ערכת ML Kit תומכת ב-Xcode 13.2.1 ואילך.
- ML Kit תומך ב-iOS מגרסה 10 ואילך.
- ML Kit לא תומך בארכיטקטורות של 32 ביט (i386 ו- armv7). ערכת ML Kit תומכת בארכיטקטורות של 64 ביט (x86_64 ו-arm64).
עדכון Cocoapods
מעדכנים את יחסי התלות של ML Kit ב-iOS ב-Podfile של האפליקציה:
API | Pod של GMV | Pod של ערכת ML |
---|---|---|
סריקת ברקוד | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
איתור פנים | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
זיהוי טקסט | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
שינויים כוללים בממשק ה-API
השינויים האלה יחולו על כל ממשקי ה-API:
- ממשקי ה-API להסקת מסקנות ב-GMV נקלטים בקלט
UIImage
אוCMSampleBufferRef
. ערכת ML Kit כוללת אותם בתוךMLKVisionImage
ומקבלת את הקלט הזה כקלט. - GMV משתמשת ב-
NSDictionary
כדי להעביר אפשרויות שונות של מזהים. למטרה הזו, ערכת ML Kit משתמשת בסוגי אפשרויות ייעודיים. - GMV מעביר את סוג המזהה למחלקה
GMVDetector
היחידה כשהיא יוצרת מזהה. ב-ML Kit נעשה שימוש במחלקות ייעודיות כדי ליצור מכונות נפרדות של גלאי, סורק ומזהה. - ממשקי ה-API של GMV תומכים בזיהוי סינכרוני בלבד. אפשר לקרוא לממשקי ה-API להסקת מסקנות של ML Kit באופן סינכרוני ואסינכרוני.
- GMV להרחיב את
AVCaptureVideoDataOutput
ומספק מסגרת מרובת גלאים לביצוע מספר זיהויים בו-זמנית. ערכת ML Kit לא מספקת מנגנונים כאלה, אבל המפתח יכול ליישם את אותה פונקציונליות אם ירצה.
שינויים ספציפיים ל-API
בקטע הזה מתוארים המחלקות והשיטות המתאימות של GMV ו-ML Kit לכל אחד מה-Vision API, ומוסבר איך לאתחל את ה-API.
FaceDetector
מקודדים מחדש את האתחול כמו בדוגמה הזו:
GMV
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
ML Kit
MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init]; options.performanceMode = MLKFaceDetectorPerformanceModeAccurate; options.classificationMode = MLKFaceDetectorClassificationModeAll; options.landmarkMode = MLKFaceDetectorLandmarkModeAll; MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];
ב-GMVDetector
יש שני
ממשקי API שונים לזיהוי. שתי הפעולות הן פעולות סינכרוניות:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
מחליפים את הערך GMVDetector
ב-MLKFaceDetector
.
אפשר לקרוא ל-API להסקת מסקנות באופן סינכרוני או אסינכרוני.
סינכרוני
- (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];
ML Kit
MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init]; options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode; MLKBarcodeScanner *barcodeScanner = [MLKBarcodeScanner barcodeScannerWithOptions:options];
ב-GMVDetector
יש שני ממשקי API שונים לזיהוי. שתי הפעולות הן פעולות סינכרוניות:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
מחליפים את GMVDetector
ב-
MLKBarcodeScanner
אפשר לקרוא ל-API להסקת מסקנות באופן סינכרוני או אסינכרוני.
סינכרוני
- (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];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
ב-GMVDetector
יש שני
ממשקי API שונים לזיהוי. שתי הפעולות הן פעולות סינכרוניות:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
מחליפים את GMVDetector
ב-
MLKTextRecognizer
אפשר לקרוא ל-API להסקת מסקנות באופן סינכרוני או אסינכרוני.
סינכרוני
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
אסינכרוני
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
משנים את המחלקות, השיטות והשמות הבאים:
GMV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
קבלת עזרה
נתקלתם בבעיות? תוכלו לעיין בדף הקהילה שלנו שבו נפרט את הערוצים הזמינים ליצירת קשר איתנו.