iOS এর জন্য স্থানান্তর করা হচ্ছে

পূর্বশর্ত

আপনার কোড মাইগ্রেট করা শুরু করার আগে, নিশ্চিত করুন যে আপনি এই প্রয়োজনীয়তাগুলি পূরণ করছেন:

  • এমএল কিট এক্সকোড ১৩.২.১ বা তার বেশি সংস্করণ সমর্থন করে।
  • এমএল কিট আইওএস ১৫.৫ বা তার বেশি সংস্করণ সমর্থন করে।
  • ML Kit 32-বিট আর্কিটেকচার (i386 এবং armv7) সমর্থন করে না। ML Kit 64-বিট আর্কিটেকচার (x86_64 এবং arm64) সমর্থন করে।
  • ML Kit লাইব্রেরিটি শুধুমাত্র cocoapods হিসেবে প্রদান করা হয়। আপনি ফ্রেমওয়ার্ক এবং cocoapods মিশ্রিত করতে পারবেন না, তাই এই লাইব্রেরিটি ব্যবহার করার জন্য আপনাকে প্রথমে cocoapods ব্যবহারে স্থানান্তর করতে হবে।

কোকোপডস আপডেট করুন

আপনার অ্যাপের পডফাইলে ML Kit iOS cocoapods এর জন্য নির্ভরতা আপডেট করুন:

এপিআই পুরাতন পড নাম(গুলি) নতুন পড নাম(গুলি)
বারকোড স্ক্যানিং ফায়ারবেস/এমএলভিশন
ফায়ারবেস/এমএলভিশনবারকোডমডেল
গুগলএমএলকিট/বারকোডস্ক্যানিং
মুখ সনাক্তকরণ ফায়ারবেস/এমএলভিশন
ফায়ারবেস/এমএলভিশনফেসমডেল
গুগলএমএলকিট/ফেসডিটেকশন
চিত্র লেবেলিং ফায়ারবেস/এমএলভিশন
ফায়ারবেস/এমএলভিশনলেবেলমডেল
গুগলএমএলকিট/ইমেজলেবেলিং
বস্তু সনাক্তকরণ এবং ট্র্যাকিং ফায়ারবেস/এমএলভিশনঅবজেক্ট সনাক্তকরণ গুগলএমএলকিট/অবজেক্ট ডিটেকশন
টেক্সট স্বীকৃতি ফায়ারবেস/এমএলভিশন
ফায়ারবেস/এমএলভিশনটেক্সটমডেল
গুগলএমএলকিট/টেক্সটরিকগনিশন
অটোএমএল ইমেজ লেবেলিং (বান্ডেল মডেল) ফায়ারবেস/এমএলভিশনঅটোএমএল গুগলএমএলকিট/ইমেজলেবেলিংকাস্টম
অটোএমএল ইমেজ লেবেলিং (ফায়ারবেস থেকে মডেল ডাউনলোড) ফায়ারবেস/এমএলভিশনঅটোএমএল গুগলএমএলকিট/ইমেজলেবেলিংকাস্টম
গুগলএমএলকিট/লিংকফায়ারবেস
ভাষা আইডি ফায়ারবেস/এমএলপ্রাকৃতিক ভাষা
ফায়ারবেস/এমএলএনএলভাষা আইডি
গুগলএমএলকিট/ভাষা আইডি
স্মার্ট উত্তর ফায়ারবেস/এমএলপ্রাকৃতিক ভাষা
ফায়ারবেস/এমএলএনএলস্মার্টরিপ্লাই
গুগলএমএলকিট/স্মার্টরিপ্লাই
অনুবাদ করুন ফায়ারবেস/এমএলপ্রাকৃতিক ভাষা
ফায়ারবেস/এমএলএনএল অনুবাদ
গুগলএমএলকিট/অনুবাদ

ক্লাস, এনাম এবং প্রকারের নাম আপডেট করুন

সাধারণভাবে, ক্লাস, এনাম এবং প্রকারের নামকরণ নিম্নরূপ করা প্রয়োজন:

  • সুইফট: ক্লাসের নাম এবং এনাম থেকে Vision প্রিফিক্স সরান
  • অবজেক্টিভ-সি: FIRVision এবং FIR ক্লাসের নাম এবং enum উপসর্গ উভয়কেই MLK দিয়ে প্রতিস্থাপন করুন।

কিছু শ্রেণীর নাম এবং প্রকারের জন্য এই সাধারণ নিয়ম প্রযোজ্য নয়:

সুইফট

পুরাতন শ্রেণী বা ধরণ নতুন ক্লাস বা ধরণ
অটোএমএললোকালমডেল লোকালমডেল
অটোএমএল রিমোটমডেল কাস্টম রিমোটমডেল
ভিশনবারকোডডিটেকশনকলব্যাক বারকোডস্ক্যানিংকলব্যাক
ভিশনবারকোডডিটেক্টর বারকোডস্ক্যানার
ভিশনবারকোডডিটেক্টরঅপশন বারকোডস্ক্যানারবিকল্প
ভিশন ইমেজ ভিশন ইমেজ (কোনও পরিবর্তন নেই)
ভিশনপয়েন্ট ভিশনপয়েন্ট (কোনও পরিবর্তন নেই)
ভিশনঅনডিভাইসঅটোএমআইমেজলেবেলারবিকল্প কাস্টম ইমেজ লেবেলারবিকল্প
ভিশনঅনডিভাইসইমেজলেবেলারবিকল্প ইমেজলেবেলারবিকল্প

অবজেক্টিভ-সি

পুরাতন শ্রেণী বা ধরণ নতুন ক্লাস বা ধরণ
FIRAutoMLLocalModel সম্পর্কে MLKLocalModel সম্পর্কে
FIRAutoMLRemoteModel সম্পর্কে MLKCustomRemoteModel সম্পর্কে
FIRVisionBarcodeDetectionকলব্যাক MLKBarcodeScanningCallback সম্পর্কে
FIRVisionBarcodeDetector সম্পর্কে MLKBarcodeScanner সম্পর্কে
FIRVisionBarcodeDetectorOptions সম্পর্কে MLKBarcodeScannerবিকল্প
FIRVisionImage সম্পর্কে এমএলকেভিশন ইমেজ
FIRVisionOnDeviceAutoMLImageLabelerবিকল্প MLKCustomImageLabelerবিকল্প
FIRVisionOnDeviceImageLabelerবিকল্প MLKImageLabelerবিকল্প
FIRVisionPoint সম্পর্কে MLKVisionPoint সম্পর্কে

অবজেক্টিভ-সি

পদ্ধতির নাম আপডেট করুন

এই নিয়ম অনুসারে পদ্ধতির নাম আপডেট করুন:

  • ডোমেন এন্ট্রি পয়েন্ট ক্লাস ( Vision , NaturalLanguage ) আর বিদ্যমান নেই। এগুলো টাস্ক স্পেসিফিক ক্লাস দ্বারা প্রতিস্থাপিত হয়েছে। ডিটেক্টর পাওয়ার জন্য তাদের বিভিন্ন ফ্যাক্টরি পদ্ধতিতে কল প্রতিস্থাপন করে প্রতিটি ডিটেক্টরের ফ্যাক্টরি পদ্ধতিতে সরাসরি কল করুন।

  • VisionImageMetadata ক্লাসটি VisionDetectorImageOrientation enum সহ সরানো হয়েছে। একটি ছবির ডিসপ্লে ওরিয়েন্টেশন নির্দিষ্ট করতে VisionImage এর orientation প্রোপার্টি ব্যবহার করুন।

  • onDeviceTextRecognizer পদ্ধতি যা একটি নতুন TextRecognizer ইনস্ট্যান্স পায় তার নাম পরিবর্তন করে textRecognizer রাখা হয়েছে।

  • টেক্সট স্বীকৃতি ফলাফল ক্লাস থেকে আত্মবিশ্বাসের বৈশিষ্ট্যটি সরানো হয়েছে, যার মধ্যে রয়েছে TextElement , TextLine , এবং TextBlock

  • নতুন ImageLabeler ইনস্ট্যান্স পাওয়ার জন্য onDeviceImageLabeler এবং onDeviceImageLabeler(options:) পদ্ধতিগুলিকে একত্রিত করে imageLabeler(options:) নামকরণ করা হয়েছে।

  • নতুন ObjectDetector ইনস্ট্যান্স পাওয়ার জন্য objectDetector পদ্ধতিটি সরানো হয়েছে। পরিবর্তে objectDetector(options:) ব্যবহার করুন।

  • ImageLabeler থেকে type প্রপার্টিটি সরানো হয়েছে এবং ইমেজ লেবেলিং রেজাল্ট ক্লাস, ImageLabel থেকে entityID প্রপার্টিটি সরানো হয়েছে।

  • অন্যান্য ভিশন এপিআই-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য বারকোড স্ক্যানিং এপিআই detect(in _:, completion:) নাম পরিবর্তন করে process(_:, completion:) রাখা হয়েছে।

  • ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই এখন "ভাষা কোড" এর পরিবর্তে "ভাষা ট্যাগ" ( BCP-47 স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) শব্দটি ব্যবহার করে।

  • TranslateLanguage এখন ভাষা ট্যাগ (যেমন .en) এর পরিবর্তে তার ধ্রুবকের জন্য পঠনযোগ্য নাম (যেমন .english) ব্যবহার করে।

এখানে পুরাতন এবং নতুন সুইফট পদ্ধতির কিছু উদাহরণ দেওয়া হল:

পুরাতন

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())
    

এখানে পুরাতন এবং নতুন অবজেক্টিভ-সি পদ্ধতির কিছু উদাহরণ দেওয়া হল:

পুরাতন

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];
    

API-নির্দিষ্ট পরিবর্তনগুলি

বস্তু সনাক্তকরণ এবং ট্র্যাকিং

যদি আপনার অ্যাপটি অবজেক্ট ক্লাসিফিকেশন ব্যবহার করে, তাহলে জেনে রাখুন যে নতুন SDK সনাক্ত করা অবজেক্টের জন্য ক্লাসিফিকেশন ক্যাটাগরি ফেরত দেওয়ার পদ্ধতি পরিবর্তন করেছে।

VisionObjectVisionObjectCategory একটি পূর্ণসংখ্যার পরিবর্তে একটি ObjectLabel অবজেক্টে text হিসেবে ফেরত পাঠানো হয়। সমস্ত সম্ভাব্য স্ট্রিং বিভাগ DetectedObjectLabel enum-এ অন্তর্ভুক্ত করা হয়।

মনে রাখবেন যে .unknown বিভাগটি সরানো হয়েছে। যখন কোনও বস্তুর শ্রেণীবদ্ধকরণের আস্থা কম থাকে, তখন শ্রেণিবদ্ধকারী কোনও লেবেল ফেরত দেয় না।

এখানে পুরাতন এবং নতুন সুইফট কোডের একটি উদাহরণ দেওয়া হল:

পুরাতন

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) {
    ...
  }
}

এখানে পুরাতন এবং নতুন অবজেক্টিভ-সি কোডের একটি উদাহরণ দেওয়া হল:

পুরাতন

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

নতুন

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

ফায়ারবেস নির্ভরতা অপসারণ করুন (ঐচ্ছিক)

এই ধাপটি শুধুমাত্র তখনই প্রযোজ্য যখন এই শর্তগুলি পূরণ করা হয়:

  • Firebase ML Kit হল একমাত্র Firebase উপাদান যা আপনি ব্যবহার করেন
  • আপনি কেবল অন-ডিভাইস API ব্যবহার করেন
  • আপনি মডেল সার্ভিং ব্যবহার করেন না

যদি এমন হয়, তাহলে মাইগ্রেশনের পরে আপনি Firebase নির্ভরতা অপসারণ করতে পারেন। এই পদক্ষেপগুলি অনুসরণ করুন:

  • আপনার অ্যাপের ডিরেক্টরি এবং আপনার Xcode প্রকল্প থেকে GoogleService-Info.plist ফাইলটি মুছে Firebase কনফিগারেশন ফাইলটি সরান।
  • আপনার পডফাইল থেকে যেকোনো ফায়ারবেস কোকোপড, যেমন pod 'Firebase/Analytics' , সরিয়ে ফেলুন।
  • আপনার কোড থেকে যেকোনো FirebaseApp ইনিশিয়ালাইজেশন, যেমন FirebaseApp.configure() মুছে ফেলুন।
  • Firebase সাপোর্ট সাইটের নির্দেশাবলী অনুসরণ করে Firebase কনসোল থেকে আপনার Firebase অ্যাপটি মুছে ফেলুন।

সাহায্য পাওয়া

যদি আপনার কোনও সমস্যা হয়, তাহলে অনুগ্রহ করে আমাদের কমিউনিটি পৃষ্ঠাটি দেখুন যেখানে আমরা আমাদের সাথে যোগাযোগের জন্য উপলব্ধ চ্যানেলগুলির রূপরেখা দিই।