В этом документе описаны шаги, которые необходимо предпринять для переноса ваших проектов из 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).
Обновление какаоподов
Обновите зависимости для какаопод iOS ML Kit в подфайле вашего приложения:
API | Модуль GMV | Модуль комплекта ML |
---|---|---|
Сканирование штрих-кода | 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 для каждого Vision API, а также показано, как инициализировать API.
Детектор лица
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
ML-комплект
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:));
Измените следующие классы, методы и имена:
Детектор штрих-кода
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
ML-комплект
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];
ML-комплект
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:));
Измените следующие классы, методы и имена:
ГМВ | ML-комплект |
---|---|
GMVDetectorImageOrientation | MLKVisionImage.orientation |
GMVTextBlockFeature | MLKTextBlock |
GMVTextElementFeature | MLKTextElement |
GMVTextLineFeature | MLKTextLine |
Получение помощи
Если у вас возникнут какие-либо проблемы, посетите нашу страницу сообщества , где мы перечисляем каналы, доступные для связи с нами.