Este documento aborda as etapas necessárias para migrar seus projetos do Google Mobile Vision (GMV) para o ML Kit no iOS.
Pré-requisitos
Antes de começar a migrar o código, verifique se você atende a estes requisitos:
- O Kit de ML é compatível com o Xcode 13.2.1 ou mais recente.
- O Kit de ML é compatível com o iOS 15.5 ou versões mais recentes.
- O ML Kit não oferece suporte a arquiteturas de 32 bits (i386 e armv7). O ML Kit oferece suporte a arquiteturas de 64 bits (x86_64 e arm64).
Atualizar o Cocoapods
Atualize as dependências do ML Kit iOS cocoapods no Podfile do app:
API | Equipe do GMV | Kit de ML |
---|---|---|
Leitura de código de barras | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Detecção facial | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Reconhecimento de texto | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Mudanças gerais na API
Essas mudanças se aplicam a todas as APIs:
- As APIs de inferência do GMV usam
UIImage
ouCMSampleBufferRef
como entrada. O Kit de ML os agrupa em umMLKVisionImage
e os usa como entrada. - O GMV usa
NSDictionary
para transmitir várias opções de detector. O Kit de ML usa classes de opções dedicadas para essa finalidade. - O GMV transmite o tipo de detector para a única classe
GMVDetector
ao criar um detector. O Kit de ML usa classes dedicadas para criar instâncias separadas de detector, scanner e reconhecedor. - As APIs do GMV só oferecem suporte à detecção síncrona. As APIs de inferência do Kit de ML podem ser chamadas de forma síncrona e assíncrona.
- O GMV estende o
AVCaptureVideoDataOutput
e fornece um framework de vários detectores para realizar várias detecções ao mesmo tempo. O ML Kit não oferece esses mecanismos, mas a mesma funcionalidade pode ser implementada pelo desenvolvedor, se necessário.
Mudanças específicas da API
Esta seção descreve as classes e os métodos correspondentes do GMV e do ML Kit para cada API Vision e mostra como inicializar a API.
FaceDetector
Recode a inicialização, conforme mostrado neste exemplo:
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];
O GMVDetector
tem duas
APIs de detecção diferentes. Ambas são operações síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Substitua GMVDetector
por MLKFaceDetector
.
A API de inferência pode ser chamada de forma síncrona ou assíncrona.
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Mude as seguintes classes, métodos e nomes:
BarcodeDetector
Recode a inicialização, conforme mostrado neste exemplo:
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];
O GMVDetector
tem duas APIs de detecção diferentes. Ambas são operações síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Substitua GMVDetector
por
MLKBarcodeScanner
.
A API de inferência pode ser chamada de forma síncrona ou assíncrona.
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Mude as seguintes classes, métodos e nomes:
TextRecognition
Recode a inicialização, conforme mostrado neste exemplo:
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
O GMVDetector
tem duas
APIs de detecção diferentes. Ambas são operações síncronas:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Substitua GMVDetector
por
MLKTextRecognizer
.
A API de inferência pode ser chamada de forma síncrona ou assíncrona.
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Mude as seguintes classes, métodos e nomes:
GMV | Kit de ML |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Receber ajuda
Se você tiver algum problema, confira nossa página da comunidade, onde descrevemos os canais disponíveis para entrar em contato com nossa equipe.