ज़रूरी शर्तें
अपना कोड माइग्रेट करने से पहले, पक्का करें कि आपने ये ज़रूरी शर्तें पूरी कर ली हों:
- ML Kit, Xcode 13.2.1 या इसके बाद के वर्शन के साथ काम करता है.
- ML Kit, iOS 15.5 या इसके बाद के वर्शन पर काम करता है.
- ML Kit, 32-बिट आर्किटेक्चर (i386 और armv7) के साथ काम नहीं करता. ML Kit, 64-बिट आर्किटेक्चर (x86_64 और arm64) पर काम करता है.
- ML Kit लाइब्रेरी सिर्फ़ cocoapods के तौर पर उपलब्ध है. फ़्रेमवर्क और CocoaPods को एक साथ इस्तेमाल नहीं किया जा सकता. इसलिए, इस लाइब्रेरी का इस्तेमाल करने के लिए, आपको पहले CocoaPods का इस्तेमाल करने के लिए माइग्रेट करना होगा.
Cocoapods को अपडेट करना
अपने ऐप्लिकेशन की Podfile में, ML Kit iOS cocoapods की डिपेंडेंसी अपडेट करें:
एपीआई | पॉड का(के) पुराना नाम | पॉडकास्ट के नए नाम |
---|---|---|
बारकोड स्कैन करना | 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/MLNLSmartReply |
GoogleMLKit/SmartReply |
अनुवाद करें | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
क्लास, एनम, और टाइप के नाम अपडेट करना
आम तौर पर, क्लास , एनम, और टाइप का नाम इस तरह बदलना चाहिए:
- Swift: क्लास के नाम और एनम से
Vision
प्रीफ़िक्स हटाएं - Objective-C:
FIRVision
औरFIR
क्लास के नाम और enum प्रीफ़िक्स, दोनों को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
) अब मौजूद नहीं हैं. इन्हें, टास्क के हिसाब से बनाई गई क्लास से बदल दिया गया है. डिटेक्टर पाने के लिए, उनके अलग-अलग फ़ैक्ट्री तरीकों के कॉल को, हर डिटेक्टर के फ़ैक्ट्री तरीके के डायरेक्ट कॉल से बदलें.VisionImageMetadata
क्लास औरVisionDetectorImageOrientation
एनम को हटा दिया गया है. किसी इमेज के डिसप्ले ओरिएंटेशन की जानकारी देने के लिए,VisionImage
कीorientation
प्रॉपर्टी का इस्तेमाल करें.onDeviceTextRecognizer
का वह तरीका जिससे नयाTextRecognizer
इंस्टेंस मिलता है उसका नाम बदलकरtextRecognizer
कर दिया गया है.कॉन्फ़िडेंस प्रॉपर्टी को टेक्स्ट की पहचान करने की नतीजों की क्लास से हटा दिया गया है. इनमें
TextElement
,TextLine
, औरTextBlock
शामिल हैं.नया
ImageLabeler
इंस्टेंस पाने के लिए,onDeviceImageLabeler
औरonDeviceImageLabeler(options:)
तरीकों को मर्ज कर दिया गया है और उनका नाम बदलकरimageLabeler(options:)
कर दिया गया है.नया
ObjectDetector
इंस्टेंस पाने के लिए,objectDetector
तरीका हटा दिया गया है. इसके बजाय,objectDetector(options:)
का इस्तेमाल करें.type
प्रॉपर्टी कोImageLabeler
से हटा दिया गया है औरentityID
प्रॉपर्टी को इमेज लेबल करने के नतीजे की क्लास,ImageLabel
से हटा दिया गया है.बारकोड स्कैनिंग एपीआई
detect(in _:, completion:)
का नाम बदलकरprocess(_:, completion:)
कर दिया गया है, ताकि यह अन्य विज़न एपीआई के मुताबिक हो.नेचुरल लैंग्वेज एपीआई अब "भाषा कोड" के बजाय, "भाषा टैग" (जैसा कि बीसीपी-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
enum में, स्ट्रिंग की सभी संभावित कैटगरी शामिल होती हैं.
ध्यान दें कि .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 Kit, Firebase का एकमात्र ऐसा कॉम्पोनेंट है जिसका इस्तेमाल किया जाता है
- सिर्फ़ डिवाइस पर मौजूद एपीआई का इस्तेमाल किया जाता है
- मॉडल दिखाने की सुविधा का इस्तेमाल न किया जा रहा हो
अगर ऐसा है, तो माइग्रेशन के बाद Firebase की डिपेंडेंसी हटाई जा सकती हैं. यह तरीका अपनाएं:
- अपने ऐप्लिकेशन की डायरेक्ट्री और Xcode प्रोजेक्ट से GoogleService-Info.plist फ़ाइल मिटाकर, Firebase कॉन्फ़िगरेशन फ़ाइल हटाएं.
- अपनी Podfile से
pod 'Firebase/Analytics'
जैसे किसी भी Firebase cocoapod को हटाएं. - अपने कोड से
FirebaseApp.configure()
जैसे FirebaseApp को शुरू करने वाले किसी भी कोड को हटाएं. - Firebase सहायता साइट पर दिए गए निर्देशों के मुताबिक, Firebase कंसोल में जाकर अपना Firebase ऐप्लिकेशन मिटाएं.
मदद लेना
अगर आपको कोई समस्या आती है, तो कृपया हमारा कम्यूनिटी पेज देखें. यहां हमने उन चैनलों के बारे में बताया है जिन पर हमसे संपर्क किया जा सकता है.