Ce document décrit la procédure à suivre pour migrer vos projets de Google Mobile Vision (GMV) vers ML Kit sur iOS.
Prérequis
Avant de commencer la migration de votre code, assurez-vous de remplir les conditions suivantes:
- ML Kit est compatible avec Xcode 13.2.1 ou version ultérieure.
- ML Kit est compatible avec iOS 10 ou version ultérieure.
- ML Kit n'est pas compatible avec les architectures 32 bits (i386 et armv7). ML Kit est compatible avec les architectures 64 bits (x86_64 et arm64).
Mettre à jour CocoaPods
Mettez à jour les dépendances pour les CocoaPods iOS ML Kit dans le Podfile de votre application:
API | Pod VMB | Pod ML Kit |
---|---|---|
Lecture de codes-barres | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Détection de visages | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Reconnaissance de texte | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Modifications globales de l'API
Ces modifications s'appliquent à toutes les API:
- Les API d'inférence de GMV utilisent
UIImage
ouCMSampleBufferRef
en entrée. ML Kit les encapsule dans un élémentMLKVisionImage
et utilise cet élément comme entrée. - VMB utilise
NSDictionary
pour transmettre différentes options de détection. ML Kit utilise des classes d'options dédiées à cette fin. - VMB transmet le type de détecteur à la classe unique
GMVDetector
lors de la création d'un détecteur. ML Kit utilise des classes dédiées pour créer des instances distinctes de détecteur, d'analyse et de reconnaissance. - Les API de VMB n'acceptent que la détection synchrone. Les API d'inférence de ML Kit peuvent être appelées de manière synchrone et asynchrone.
- GMV étend
AVCaptureVideoDataOutput
et fournit un framework multi-détecteur permettant d'effectuer plusieurs détections en même temps. ML Kit ne fournit pas de tels mécanismes, mais la même fonctionnalité peut être mise en œuvre par le développeur s'il le souhaite.
Modifications spécifiques aux API
Cette section décrit les classes et les méthodes GMV et ML Kit correspondantes pour chaque API Vision, et explique comment initialiser l'API.
FaceDetector
Recodez l'initialisation comme indiqué dans cet exemple:
VMB
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
dispose de deux API de détection différentes. Les deux opérations sont synchrones:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Remplacez GMVDetector
par MLKFaceDetector
.
L'API d'inférence peut être appelée de manière synchrone ou asynchrone.
Synchrone
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asynchrone
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifiez les classes, les méthodes et les noms suivants:
BarcodeDetector
Recodez l'initialisation comme indiqué dans cet exemple:
VMB
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
dispose de deux API de détection différentes. Les deux opérations sont synchrones:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Remplacez GMVDetector
par MLKBarcodeScanner
.
L'API d'inférence peut être appelée de manière synchrone ou asynchrone.
Synchrone
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asynchrone
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifiez les classes, les méthodes et les noms suivants:
TextRecognition
Recodez l'initialisation comme indiqué dans cet exemple:
VMB
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
dispose de deux API de détection différentes. Les deux opérations sont synchrones:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Remplacez GMVDetector
par MLKTextRecognizer
.
L'API d'inférence peut être appelée de manière synchrone ou asynchrone.
Synchrone
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asynchrone
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifiez les classes, les méthodes et les noms suivants:
VMB | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Obtenir de l'aide
Si vous rencontrez des problèmes, consultez la page de la communauté sur laquelle vous trouverez une liste des chaînes disponibles pour nous contacter.