Von Mobile Vision zu ML Kit für iOS migrieren

In diesem Dokument werden die Schritte beschrieben, die Sie ausführen müssen, um Ihre Projekte von Google Mobile Vision (GMV) zu ML Kit auf iOS zu migrieren.

Vorbereitung

Bevor Sie mit der Migration Ihres Codes beginnen, müssen Sie die folgenden Anforderungen erfüllen:

  • ML Kit unterstützt Xcode 13.2.1 oder höher.
  • ML Kit unterstützt iOS 15.5 oder höher.
  • ML Kit unterstützt keine 32-Bit-Architekturen (i386 und armv7). ML Kit unterstützt 64-Bit-Architekturen (x86_64 und arm64).

Cocoapods aktualisieren

Aktualisieren Sie die Abhängigkeiten für die ML Kit iOS-CocoaPods in der Podfile Ihrer App:

APIGMV-PodML Kit-Pod
Barcode-Scan GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
Gesichtserkennung GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
Texterkennung GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

Allgemeine API-Änderungen

Diese Änderungen gelten für alle APIs:

  • Die Inferenz-APIs von GMV nehmen UIImage oder CMSampleBufferRef als Eingabe an. ML Kit verpackt sie in einem MLKVisionImage und nimmt dies als Eingabe.
  • GMV verwendet NSDictionary, um verschiedene Detektoroptionen zu übergeben. In ML Kit werden zu diesem Zweck spezielle Optionsklassen verwendet.
  • GMV übergibt den Detektortyp an die einzelne GMVDetector-Klasse, wenn ein Detektor erstellt wird. In ML Kit werden spezielle Klassen verwendet, um separate Detektor-, Scanner- und Erkennungsinstanzen zu erstellen.
  • Die APIs von GMV unterstützen nur die synchrone Erkennung. Die Inferenz-APIs von ML Kit können synchron und asynchron aufgerufen werden.
  • GMV erweitert AVCaptureVideoDataOutput und bietet ein Multi-Detektor-Framework für die gleichzeitige Erkennung mehrerer Objekte. ML Kit bietet keine solchen Mechanismen, aber die Entwickler können dieselben Funktionen bei Bedarf implementieren.

API-spezifische Änderungen

In diesem Abschnitt werden die entsprechenden GMV- und ML Kit-Klassen und ‑Methoden für jede Vision API beschrieben. Außerdem wird gezeigt, wie die API initialisiert wird.

FaceDetector

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMVML Kit
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 hat zwei unterschiedliche Erkennungs-APIs. Beide sind synchrone Vorgänge:

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

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

Ersetzen Sie GMVDetector durch MLKFaceDetector. Die Inferenz-API kann synchron oder asynchron aufgerufen werden.

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Ändern Sie die folgenden Klassen, Methoden und Namen:

BarcodeDetector

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMVML Kit
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 bietet zwei verschiedene Erkennungs-APIs. Beide sind synchrone Vorgänge:

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

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

Ersetzen Sie GMVDetector durch MLKBarcodeScanner. Die Inferenz-API kann synchron oder asynchron aufgerufen werden.

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Ändern Sie die folgenden Klassen, Methoden und Namen:

TextRecognition

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMVML Kit
GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector hat zwei unterschiedliche Erkennungs-APIs. Beide sind synchrone Vorgänge:

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

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

Ersetzen Sie GMVDetector durch MLKTextRecognizer. Die Inferenz-API kann synchron oder asynchron aufgerufen werden.

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Ändern Sie die folgenden Klassen, Methoden und Namen:

Hilfe erhalten

Wenn Probleme auftreten, findest du auf unserer Community-Seite Informationen dazu, wie du dich mit uns in Verbindung setzen kannst.