Migracja z Mobile Vision do ML Kit na iOS

Ten dokument zawiera opis czynności, które musisz wykonać, aby przenieść swoje projekty z Google Mobile Vision (GMV) do ML Kit na iOS.

Wymagania wstępne

Zanim rozpoczniesz migrację kodu, upewnij się, że spełniasz te wymagania:

  • ML Kit obsługuje Xcode 13.2.1 lub nowsze.
  • ML Kit obsługuje system iOS w wersji 10 lub nowszej.
  • ML Kit nie obsługuje architektur 32-bitowych (i386 i arv7). ML Kit obsługuje 64-bitowe architektury (x86_64 i Arm64).

Zaktualizuj cocoapods

Zaktualizuj zależności cocoapodów ML Kit na iOS w podpliku:

APIPod GMVML Kit pod
Skanowanie kodów kreskowych GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
Wykrywanie twarzy GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
Rozpoznawanie tekstu GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

Ogólne zmiany w interfejsie API

Te zmiany dotyczą wszystkich interfejsów API:

  • Interfejsy API do wnioskowania z GMV pobierają dane UIImage lub CMSampleBufferRef. ML Kit umieszcza je w MLKVisionImage i używa jako danych wejściowych.
  • GMV używa NSDictionary do przekazywania różnych opcji wykrywania. ML Kit używa do tego celu specjalnych klas opcji.
  • GMV przekazuje typ wzorca do pojedynczej klasy GMVDetector po utworzeniu wzorca do wykrywania treści. ML Kit używa dedykowanych klas do tworzenia oddzielnych wzorców do wykrywania treści, skanerów i rozpoznawania.
  • Interfejsy API GMV obsługują tylko wykrywanie synchroniczne. Interfejsy API do wnioskowania z ML Kit mogą być wywoływane synchronicznie i asynchronicznie.
  • GMV obejmuje rozszerzenie AVCaptureVideoDataOutput i oferuje platformę z kilkoma wzorcami do wykrywania treści, która umożliwia przeprowadzanie wielu analiz jednocześnie. ML Kit nie udostępnia takich mechanizmów, ale deweloper może w razie potrzeby wdrożyć te same funkcje.

Zmiany dotyczące interfejsu API

W tej sekcji opisano odpowiednie klasy i metody GMV oraz ML Kit dla każdego interfejsu Vision API, a także dowiesz się, jak zainicjować interfejs API.

Wykrywanie twarzy

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość 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 ma 2 różne interfejsy API do wykrywania. Oba działania są synchroniczne:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Zastąp GMVDetector tekstem MLKFaceDetector. Interfejs API wnioskowania można wywoływać synchronicznie lub asynchronicznie.

Synchroniczna

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Asynchroniczna

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Zmień te klasy, metody i nazwy:

Wartość GMV ML Kit
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary opcji wykrywania twarzy 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

Wzorzec do wykrywania kodu kreskowego

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość 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 ma 2 różne interfejsy API do wykrywania. Oba działania są synchroniczne:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Zastąp GMVDetector wartością MLKBarcodeScanner. Interfejs API wnioskowania można wywoływać synchronicznie lub asynchronicznie.

Synchroniczna

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Asynchroniczna

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Zmień te klasy, metody i nazwy:

Wartość GMV ML Kit
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary detektora kodów kreskowych 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

Rozpoznawanie tekstu

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość GMV

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];

ML Kit

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector ma 2 różne interfejsy API do wykrywania. Oba działania są synchroniczne:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Zastąp GMVDetector wartością MLKTextRecognizer. Interfejs API wnioskowania można wywoływać synchronicznie lub asynchronicznie.

Synchroniczna

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Asynchroniczna

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Zmień te klasy, metody i nazwy:

Wartość GMV ML Kit
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

Uzyskiwanie pomocy

W razie problemów zajrzyj na stronę Społeczność, aby przedstawić kanały, w których można się z nami skontaktować.