En este documento, se describen los pasos que debes seguir para migrar tus proyectos de Google Mobile Vision (GMV) a ML Kit en iOS.
Requisitos previos
Antes de comenzar a migrar tu código, asegúrate de cumplir con estos requisitos:
- El Kit de AA es compatible con Xcode 13.2.1 o versiones posteriores.
- ML Kit es compatible con iOS 15.5 o versiones posteriores.
- El Kit de AA no es compatible con arquitecturas de 32 bits (i386 y armv7). ML Kit admite arquitecturas de 64 bits (x86_64 y arm64).
Actualiza CocoaPods
Actualiza las dependencias de los CocoaPods de iOS de ML Kit en el Podfile de tu app:
API | Pod de GMV | Grupo de ML Kit |
---|---|---|
Escaneo de códigos de barras | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Detección de rostro | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Reconocimiento de texto | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Cambios generales en la API
Estos cambios se aplican a todas las APIs:
- Las APIs de inferencia de GMV toman
UIImage
oCMSampleBufferRef
como entrada. ML Kit los une en unMLKVisionImage
y lo toma como entrada. - GMV usa
NSDictionary
para pasar varias opciones de detector. ML Kit usa clases de opciones dedicadas para ese propósito. - GMV pasa el tipo de detector a la única clase
GMVDetector
cuando crea un detector. ML Kit usa clases dedicadas para crear instancias independientes de detector, escáner y reconocedor. - Las APIs de GMV solo admiten la detección síncrona. Se puede llamar a las APIs de inferencia de ML Kit de forma síncrona y asíncrona.
- GMV extiende
AVCaptureVideoDataOutput
y proporciona un framework de varios detectores para realizar varias detecciones al mismo tiempo. ML Kit no proporciona esos mecanismos, pero el desarrollador puede implementar la misma funcionalidad si lo desea.
Cambios específicos de la API
En esta sección, se describen las clases y los métodos de GMV y ML Kit correspondientes para cada API de Vision, y se muestra cómo inicializar la API.
FaceDetector
Vuelve a codificar la inicialización como se muestra en este ejemplo:
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
tiene dos APIs de detección diferentes. Ambas son operaciones síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Reemplaza GMVDetector
por MLKFaceDetector
.
Se puede llamar a la API de inferencia de forma síncrona o asíncrona.
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Cambia las siguientes clases, métodos y nombres:
BarcodeDetector
Vuelve a codificar la inicialización como se muestra en este ejemplo:
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
tiene dos APIs de detección diferentes. Ambas son operaciones síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Reemplaza GMVDetector
por MLKBarcodeScanner
.
Se puede llamar a la API de inferencia de forma síncrona o asíncrona.
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Cambia las siguientes clases, métodos y nombres:
TextRecognition
Vuelve a codificar la inicialización como se muestra en este ejemplo:
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
tiene dos APIs de detección diferentes. Ambas son operaciones síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Reemplaza GMVDetector
por MLKTextRecognizer
.
Se puede llamar a la API de inferencia de forma síncrona o asíncrona.
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Cambia las siguientes clases, métodos y nombres:
GMV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Cómo obtener ayuda
Si tienes algún problema, visita nuestra página de Comunidad, en la que se describen los canales disponibles para comunicarte con nosotros.