iOS के लिए माइग्रेट करना

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

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

  • ML Kit, Xcode 13.2.1 या इसके बाद के वर्शन के साथ काम करता है.
  • ML Kit, iOS के 10 या उसके बाद वाले वर्शन पर काम करता है.
  • ML Kit, 32-बिट आर्किटेक्चर (i386 और armv7) पर काम नहीं करता. ML Kit, 64-बिट आर्किटेक्चर (x86_64 और arm64) पर काम करता है.
  • ML Kit लाइब्रेरी को सिर्फ़ cocoapods के तौर पर उपलब्ध कराया जाता है. फ़्रेमवर्क और कोकोपॉड का इस्तेमाल नहीं किया जा सकता. इसलिए, इस लाइब्रेरी का इस्तेमाल करने के लिए, आपको सबसे पहले cocoapods का इस्तेमाल करना होगा.

Cocoapods को अपडेट करें

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

APIपॉड के पुराने नामनए पॉड नाम
बारकोड स्कैन करना Firebase/MLVision
Firebase/MLVisionBarcodeModel
GoogleMLKit/BarcodeScanning
चेहरे की पहचान Firebase/MLVision
Firebase/MLVisionFaceModel
GoogleMLKit/FaceDetection
इमेज को लेबल करना Firebase/MLVision
Firebase/MLVisionLabelModel
GoogleMLKit/ImageLabeling
ऑब्जेक्ट का पता लगाना और उसे ट्रैक करना Firebase/MLVisionObjectDetection GoogleMLKit/ObjectDetection
टेक्स्ट की पहचान Firebase/MLVision
Firebase/MLVisionTextModel
GoogleMLKit/TextRecognition
AutoML इमेज लेबलिंग (बंडल किया गया मॉडल) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
AutoML इमेज लेबलिंग (Firebase से मॉडल डाउनलोड) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase
भाषा आईडी Firebase/MLNaturalLanguage
Firebase/MLNLLanguageID
GoogleMLKit/LanguageID
स्मार्ट जवाब Firebase/MLNaturalLanguage
Firebase/MLNLSmart जवाब
GoogleMLKit/Smart रिप्लाई
अनुवाद करें Firebase/MLNaturalLanguage
Firebase/MLNLTranslate
GoogleMLKit/Translate

क्लास के नाम, ईनम, और टाइप अपडेट करें

आम तौर पर, क्लास , ईनम, और टाइप के नाम इस तरह बदले जाने चाहिए:

  • स्विफ़्ट: क्लास के नामों और ईनम से Vision प्रीफ़िक्स हटाएं
  • Objective-C: FIRVision और FIR क्लास के नाम और ईनम प्रीफ़िक्स, दोनों को MLK से बदलें

कुछ क्लास के नामों और टाइप के लिए, यह सामान्य नियम लागू नहीं होता है:

Swift

पुरानी क्लास या टाइपनई क्लास या टाइप
AutoMLLocalModel LocalModel
AutoMLRemoteModel CustomRemoteModel
VisionBarcodeDetectionCallback BarcodeScanningCallback
VisionBarcodeDetector BarcodeScanner
VisionBarcodeDetectorOptions BarcodeScannerOptions
VisionImage VisionImage (कोई बदलाव नहीं)
VisionPoint VisionPoint (कोई बदलाव नहीं)
VisionOnDeviceAutoMLImageLabelerOptions CustomImageLabelerOptions
VisionOnDeviceImageLabelerOptions ImageLabelerOptions

Objective-C

पुरानी क्लास या टाइपनई क्लास या टाइप
FIRAutoMLLocalModel MLKLocalModel
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionCallback MLKBarcodeScanningCallback
FIRVisionBarcodeDetector MLKBarcodeScanner
FIRVisionBarcodeDetectorOptions MLKBarcodeScannerOptions
FIRVisionImage MLKVisionImage
FIRVisionOnDeviceAutoMLImageLabelerOptions MLKCustomImageLabelerOptions
FIRVisionOnDeviceImageLabelerOptions MLKImageLabelerOptions
FIRVisionPoint MLKVisionPoint

Objective-C

तरीकों के नाम अपडेट करें

इन नियमों के मुताबिक तरीकों के नाम अपडेट करें:

  • डोमेन एंट्री पॉइंट क्लास (Vision, NaturalLanguage) अब मौजूद नहीं हैं. इनकी जगह, टास्क के लिए तय की गई क्लास ने ले ली है. कॉल की जगह डिटेक्टर के तौर पर इस्तेमाल होने वाले अलग-अलग फ़ैक्ट्री तरीकों का इस्तेमाल करें, ताकि डिटेक्टर के तौर पर चुने गए हर डिटेक्टर के फ़ैक्ट्री तरीके से डायरेक्ट कॉल किया जा सके.

  • VisionDetectorImageOrientation वाली सूची के साथ, VisionImageMetadata क्लास को हटा दिया गया है. किसी इमेज के डिसप्ले ओरिएंटेशन की जानकारी देने के लिए, VisionImage की orientation प्रॉपर्टी का इस्तेमाल करें.

  • नया TextRecognizer इंस्टेंस पाने वाले onDeviceTextRecognizer तरीके का नाम बदलकर, textRecognizer कर दिया गया है.

  • टेक्स्ट की पहचान वाली नतीजों की क्लास से कॉन्फ़िडेंस प्रॉपर्टी को हटा दिया गया है. इन क्लास में TextElement, TextLine, और TextBlock शामिल हैं.

  • नया ImageLabeler इंस्टेंस पाने के लिए, onDeviceImageLabeler और onDeviceImageLabeler(options:) तरीकों को मर्ज करके, उनका नाम बदलकर imageLabeler(options:) कर दिया गया है.

  • नया ObjectDetector इंस्टेंस पाने का objectDetector तरीका हटा दिया गया है. इसके बजाय, objectDetector(options:) का इस्तेमाल करें.

  • type प्रॉपर्टी को ImageLabeler से हटा दिया गया है. साथ ही, entityID प्रॉपर्टी को इमेज लेबल वाले नतीजे की क्लास, ImageLabel से हटा दिया गया है.

  • बारकोड स्कैनिंग एपीआई detect(in _:, completion:) का नाम बदलकर process(_:, completion:) कर दिया गया है, ताकि वह अन्य विज़न एपीआई से मेल खाए.

  • Natural Language API अब "भाषा कोड" के बजाय, "भाषा टैग" शब्द का इस्तेमाल करता है. BCP-47 स्टैंडर्ड में बताया गया है.

  • TranslateLanguage अब भाषा के टैग (जैसे कि .en) के बजाय, अपने कॉन्सटेंट के लिए आसानी से पढ़े जा सकने वाले नाम ( जैसे .english) का इस्तेमाल करता है.

यहां Swift के पुराने और नए तरीकों के कुछ उदाहरण दिए गए हैं:

ओल्ड

let options = VisionOnDeviceImageLabelerOptions()
options.confidenceThreshold = 0.75
let labeler = Vision.vision().onDeviceImageLabeler(options: options)

let detector = Vision.vision().faceDetector(options: options)

let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json")
let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = 0.75
let labeler = vision.onDeviceAutoMLImageLabeler(options: options)

let detector = Vision.vision().objectDetector()
    

नए दर्शक

let options = ImageLabelerOptions()
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = FaceDetector.faceDetector(options: options)

let localModel = LocalModel(manifestPath: "automl/manifest.json")
let options = CustomImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
    

यहां Objective-C के पुराने और नए तरीकों के कुछ उदाहरण दिए गए हैं:

ओल्ड

FIRVisionOnDeviceImageLabelerOptions *options = 
    [[FIRVisionOnDeviceImageLabelerOptions alloc] init];
options.confidenceThreshold = 0.75;
FIRVisionImageLabeler *labeler = 
    [[FIRVision vision] onDeviceImageLabelerWithOptions:options];

FIRVisionFaceDetector *detector =
    [[FIRVision vision] faceDetectorWithOptions: options];

FIRAutoMLLocalModel *localModel =
    [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"];
FIRVisionOnDeviceAutoMLImageLabelerOptions *options =
    [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc]
        initWithLocalModel: localModel];
options.confidenceThreshold = 0.75
FIRVisionImageLabeler *labeler =
    [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options];

FIRVisionObjectDetector *detector =
    [[FIRVision vision] objectDetector];
    

नए दर्शक

MLKImageLabelerOptions *options =
    [[MLKImageLabelerOptions alloc] init];
options.confidenceThreshold = @(0.75);
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKFaceDetector *detector =
    [MLKFaceDetector faceDetectorWithOptions:options];

MLKLocalModel *localModel =
    [[MLKLocalModel alloc]
        initWithManifestPath:@"automl/manifest.json"];
MLKCustomImageLabelerOptions *options =
    [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel];
options.confidenceThreshold = @(0.75)
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init];
MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
    

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

ऑब्जेक्ट का पता लगाना और उसे ट्रैक करना

अगर आपका ऐप्लिकेशन ऑब्जेक्ट क्लासिफ़िकेशन का इस्तेमाल करता है, तो ध्यान रखें कि नए SDK टूल ने पता लगाए गए ऑब्जेक्ट के लिए, कैटगरी तय करने का तरीका बदल दिया है.

VisionObject में VisionObjectCategory, पूर्णांक के बजाय ObjectLabel ऑब्जेक्ट में text के तौर पर दिखता है. DetectedObjectLabel ईनम में, स्ट्रिंग की सभी संभावित कैटगरी शामिल होती हैं.

ध्यान दें कि .unknown कैटगरी हटा दी गई है. जब किसी ऑब्जेक्ट को कैटगरी में बांटने का भरोसा कम होता है, तो क्लासिफ़ायर कोई लेबल नहीं दिखाता है.

यहां पुराने और नए Swift कोड का एक उदाहरण दिया गया है:

ओल्ड

if (object.classificationCategory == .food) {
    ...
}

नए दर्शक

if let label = object.labels.first {
  if (label.text == DetectedObjectLabel.food.rawValue) {
    ...
  }
}
// or
if let label = object.labels.first {
  if (label.index == DetectedObjectLabelIndex.food.rawValue) {
    ...
  }
}

यहां पुराने और नए Objective-C कोड का उदाहरण दिया गया है:

ओल्ड

if (object.classificationCategory == FIRVisionObjectCategoryFood) {
    ...
}

नए दर्शक

if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
  ...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
  ...
}

Firebase डिपेंडेंसी हटाएं (ज़रूरी नहीं)

यह चरण सिर्फ़ तब लागू होता है, जब ये शर्तें पूरी होती हैं:

  • Firebase ML किट ही वह Firebase कॉम्पोनेंट है जिसका आप इस्तेमाल करते हैं
  • सिर्फ़ डिवाइस पर मौजूद एपीआई का इस्तेमाल किया जाता है
  • मॉडल सर्विंग का इस्तेमाल नहीं किया जाता

अगर ऐसा है, तो माइग्रेशन के बाद Firebase डिपेंडेंसी हटाएं. यह तरीका अपनाएं:

  • Firebase कॉन्फ़िगरेशन फ़ाइल को हटाने के लिए, अपने ऐप्लिकेशन की डायरेक्ट्री और Xcode प्रोजेक्ट से GoogleService-Info.plist फ़ाइल को मिटाएं.
  • अपनी Podfile से, pod 'Firebase/Analytics' जैसे किसी भी Firebase कोकोपॉड को हटाएं.
  • अपने कोड से, Firebaseऐप्लिकेशन शुरू करने की कोई भी सुविधा हटाएं, जैसे कि FirebaseApp.configure().
  • Firebase सहायता साइट पर दिए गए instructions के हिसाब से अपना Firebase ऐप्लिकेशन मिटाएं.

मदद लेना

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