В этом документе описываются шаги, которые необходимо предпринять для переноса проектов из Google Mobile Vision (GMV) в ML Kit на iOS.
Предпосылки
Прежде чем начать перенос кода, убедитесь, что вы соответствуете следующим требованиям:
- ML Kit поддерживает Xcode 13.2.1 и более поздние версии.
- ML Kit поддерживает iOS версии 15.5 и выше.
- ML Kit не поддерживает 32-битные архитектуры (i386 и armv7). ML Kit поддерживает 64-битные архитектуры (x86_64 и arm64).
Обновление Cocoapods
Обновите зависимости для Cocoapods ML Kit iOS в Podfile вашего приложения:
API | GMV Pod | Комплект ML Pod |
---|---|---|
Сканирование штрих-кода | GoogleMobileVision/BarcodeDetector | GoogleMLKit/BarcodeScanning |
Распознавание лиц | GoogleMobileVision/FaceDetector | GoogleMLKit/FaceDetection |
Распознавание текста | GoogleMobileVision/TextDetector | GoogleMLKit/TextRecognition |
Общие изменения API
Эти изменения применяются ко всем API:
- API вывода GMV принимают в качестве входных данных
UIImage
илиCMSampleBufferRef
. ML Kit оборачивает их вMLKVisionImage
и принимает его в качестве входных данных. - GMV использует
NSDictionary
для передачи различных параметров детектора. ML Kit использует для этой цели специальные классы параметров. - При создании детектора GMV передаёт тип детектора в единый класс
GMVDetector
. ML Kit использует специальные классы для создания отдельных экземпляров детектора, сканера и распознавателя. - API GMV поддерживают только синхронное обнаружение. API вывода ML Kit могут вызываться синхронно и асинхронно.
- GMV расширяет
AVCaptureVideoDataOutput
и предоставляет многодетекторную платформу для одновременного выполнения нескольких детектирований. ML Kit не предоставляет подобных механизмов, но разработчик может реализовать ту же функциональность при желании.
Изменения, специфичные для API
В этом разделе описываются соответствующие классы и методы GMV и ML Kit для каждого API Vision, а также показано, как инициализировать API.
FaceDetector
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
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
имеет два различных API обнаружения. Оба являются синхронными операциями:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Замените GMVDetector
на MLKFaceDetector
. API вывода может вызываться синхронно или асинхронно.
Синхронный
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Асинхронный
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Измените следующие классы, методы и имена:
BarcodeDetector
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
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
имеет два различных API обнаружения. Оба являются синхронными операциями:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Замените GMVDetector
на MLKBarcodeScanner
. API вывода может вызываться синхронно или асинхронно.
Синхронный
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Асинхронный
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Измените следующие классы, методы и имена:
Распознавание текста
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
Комплект МЛ
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
имеет два различных API обнаружения. Оба являются синхронными операциями:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Замените GMVDetector
на MLKTextRecognizer
. API вывода может вызываться синхронно или асинхронно.
Синхронный
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Асинхронный
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Измените следующие классы, методы и имена:
ГМВ | Комплект МЛ |
---|---|
GMVDetectorImageOrientation | MLKVisionImage.orientation |
GMVTextBlockFeature | MLKTextBlock |
GMVTextElementFeature | MLKTextElement |
GMVTextLineFeature | MLKTextLine |
Получение помощи
Если у вас возникнут какие-либо проблемы, посетите страницу нашего сообщества , где мы описываем доступные каналы связи с нами.