iOS पर, मोबाइल विज़न से एमएल किट पर माइग्रेट करना

इस दस्तावेज़ में, iOS पर अपने प्रोजेक्ट को Google Mobile Vision (GMV) से ML Kit पर माइग्रेट करने का तरीका बताया गया है.

ज़रूरी शर्तें

अपना कोड माइग्रेट करने से पहले, पक्का करें कि आपने ये ज़रूरी शर्तें पूरी कर ली हों:

  • ML Kit, Xcode 13.2.1 या इसके बाद के वर्शन के साथ काम करता है.
  • ML Kit, iOS 15.5 या इसके बाद के वर्शन पर काम करता है.
  • ML Kit, 32-बिट आर्किटेक्चर (i386 और armv7) के साथ काम नहीं करता. ML Kit, 64-बिट आर्किटेक्चर (x86_64 और arm64) पर काम करता है.

cocoapods को अपडेट करना

अपने ऐप्लिकेशन की Podfile में, ML Kit iOS cocoapods के लिए डिपेंडेंसी अपडेट करें:

एपीआईGMV पॉडML Kit पॉड
बारकोड स्कैन करना GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
चेहरे की पहचान करने की सुविधा GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
टेक्स्ट की पहचान करने की सुविधा GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

एपीआई में हुए बदलाव

ये बदलाव सभी एपीआई पर लागू होते हैं:

  • GMV के अनुमान लगाने वाले एपीआई, इनपुट के तौर पर UIImage या CMSampleBufferRef लेते हैं. ML Kit, इन फ़ाइलों को MLKVisionImage में रैप करके, इन फ़ाइलों को इनपुट के तौर पर इस्तेमाल करती है.
  • GMV, डिटेक्टर के अलग-अलग विकल्पों को पास करने के लिए NSDictionary का इस्तेमाल करता है. ML Kit, इस काम के लिए खास विकल्प क्लास का इस्तेमाल करता है.
  • GMV, डिटेक्टर बनाते समय डिटेक्टर टाइप को सिंगल GMVDetector क्लास को पास करता है. ML Kit, अलग-अलग डिटेक्टर, स्कैनर, और पहचान करने वाले इंस्टेंस बनाने के लिए, खास क्लास का इस्तेमाल करता है.
  • GMV के एपीआई, सिंक्रोनस डिटेक्शन के साथ ही काम करते हैं. ML Kit के इनफ़रेंस एपीआई को सिंक्रोनस और असिंक्रोनस तरीके से कॉल किया जा सकता है.
  • GMV, AVCaptureVideoDataOutput को बढ़ाता है और एक ही समय में कई पहचान करने की सुविधा देने के लिए, मल्टी-डिटेक्टर फ़्रेमवर्क उपलब्ध कराता है. ML Kit में इस तरह के तरीके उपलब्ध नहीं हैं. हालांकि, डेवलपर चाहें, तो यह सुविधा लागू की जा सकती है.

एपीआई से जुड़े बदलाव

इस सेक्शन में, हर Vision API के लिए मिलते-जुलते GMV और ML Kit क्लास और तरीकों के बारे में बताया गया है. साथ ही, एपीआई को शुरू करने का तरीका भी बताया गया है.

FaceDetector

इस उदाहरण में दिखाए गए तरीके से, इनिशियलाइज़ेशन को फिर से कोड करें:

GMVML Kit
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 में, स्पैम की पहचान करने वाले दो अलग-अलग एपीआई हैं. दोनों सिंक्रोनस ऑपरेशन हैं:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector को MLKFaceDetector से बदलें. इंफ़रेंस एपीआई को सिंक्रोनस या असिंक्रोनस तरीके से कॉल किया जा सकता है.

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

यहां दी गई क्लास, तरीकों, और नामों को बदलें:

BarcodeDetector

इस उदाहरण में दिखाए गए तरीके से, इनिशियलाइज़ेशन को फिर से कोड करें:

GMVML Kit
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 में, स्पैम की पहचान करने वाले दो अलग-अलग एपीआई हैं. दोनों सिंक्रोनस ऑपरेशन हैं:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector को MLKBarcodeScanner से बदलें. इंफ़रेंस एपीआई को सिंक्रोनस या असिंक्रोनस तरीके से कॉल किया जा सकता है.

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

यहां दी गई क्लास, तरीकों, और नामों को बदलें:

TextRecognition

इस उदाहरण में दिखाए गए तरीके से, इनिशियलाइज़ेशन को फिर से कोड करें:

GMVML Kit
GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector में, स्पैम की पहचान करने वाले दो अलग-अलग एपीआई हैं. दोनों सिंक्रोनस ऑपरेशन हैं:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector को MLKTextRecognizer से बदलें. इंफ़रेंस एपीआई को सिंक्रोनस या असिंक्रोनस तरीके से कॉल किया जा सकता है.

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

यहां दी गई क्लास, तरीकों, और नामों को बदलें:

सहायता पाना

अगर आपको कोई समस्या आती है, तो हमारे कम्यूनिटी पेज पर जाएं. यहां हमने उन चैनलों के बारे में बताया है जिनसे हमसे संपर्क किया जा सकता है.