ज़रूरी शर्तें
अपने कोड को माइग्रेट करने से पहले, पक्का करें कि आपने इन शर्तों को पूरा किया हो:
- 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 ऐप्लिकेशन मिटाएं.
मदद लेना
अगर आपको कोई समस्या होती है, तो कृपया हमारे कम्यूनिटी पेज पर जाएं. यहां हमने उन चैनलों के बारे में बताया है जो हमसे संपर्क करने के लिए उपलब्ध हैं.