In order to call a Google Cloud API from your app, you need to create an intermediate REST API that handles authorization and protects secret values such as API keys. তারপরে আপনাকে এই মধ্যবর্তী পরিষেবার সাথে প্রমাণীকরণ এবং যোগাযোগ করতে আপনার মোবাইল অ্যাপে কোড লিখতে হবে৷
One way to create this REST API is by using Firebase Authentication and Functions, which gives you a managed, serverless gateway to Google Cloud APIs that handles authentication and can be called from your mobile app with pre-built SDKs.
আপনার অ্যাপ থেকে ক্লাউড ভিশন API কল করতে এই কৌশলটি কীভাবে ব্যবহার করবেন তা এই নির্দেশিকাটি প্রদর্শন করে৷ This method will allow all authenticated users to access Cloud Vision billed services through your Cloud project, so consider whether this auth mechanism is sufficient for your use case before proceeding.
আপনি শুরু করার আগে
আপনার প্রকল্প কনফিগার করুন
আপনি যদি ইতিমধ্যে আপনার অ্যাপে Firebase যোগ না করে থাকেন, তাহলে শুরু করার নির্দেশিকাতে দেওয়া ধাপগুলি অনুসরণ করে তা করুন৷ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ, আপনার অ্যাপ প্রকল্প খোলার সাথে, ফাইল > প্যাকেজ যোগ করুন- এ নেভিগেট করুন।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK সংগ্রহস্থল যোগ করুন:
- Firebase ML লাইব্রেরি বেছে নিন।
- আপনার লক্ষ্যের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে
-ObjC
পতাকা যোগ করুন। - শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে পটভূমিতে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk.git
এরপরে, কিছু ইন-অ্যাপ সেটআপ সম্পাদন করুন:
- আপনার অ্যাপে, Firebase আমদানি করুন:
সুইফট
import FirebaseMLModelDownloader
উদ্দেশ্য-C
@import FirebaseMLModelDownloader;
আরও কয়েকটি কনফিগারেশন ধাপ, এবং আমরা যেতে প্রস্তুত:
আপনি যদি ইতিমধ্যে আপনার প্রকল্পের জন্য ক্লাউড-ভিত্তিক API সক্ষম না করে থাকেন তবে এখনই তা করুন:
- Firebase কনসোলের Firebase ML APIs পৃষ্ঠা খুলুন।
আপনি যদি ইতিমধ্যেই আপনার প্রোজেক্টকে ব্লেজ প্রাইসিং প্ল্যানে আপগ্রেড না করে থাকেন, তা করতে আপগ্রেড এ ক্লিক করুন। (যদি আপনার প্রকল্পটি ব্লেজ প্ল্যানে না থাকে তবেই আপনাকে আপগ্রেড করার জন্য অনুরোধ করা হবে।)
শুধুমাত্র ব্লেজ-স্তরের প্রকল্পগুলি ক্লাউড-ভিত্তিক API ব্যবহার করতে পারে।
- যদি ক্লাউড-ভিত্তিক APIগুলি ইতিমধ্যে সক্ষম না থাকে, তাহলে ক্লাউড-ভিত্তিক APIগুলি সক্ষম করুন ক্লিক করুন৷
- ক্লাউড ভিশন API-এ অ্যাক্সেসের অনুমতি না দেওয়ার জন্য আপনার বিদ্যমান Firebase API কীগুলি কনফিগার করুন:
- ক্লাউড কনসোলের শংসাপত্র পৃষ্ঠাটি খুলুন।
- তালিকার প্রতিটি API কী-এর জন্য, সম্পাদনা দৃশ্য খুলুন এবং কী বিধিনিষেধ বিভাগে, ক্লাউড ভিশন API ছাড়া সমস্ত উপলব্ধ API তালিকায় যোগ করুন।
কলযোগ্য ফাংশন স্থাপন করুন
এরপরে, ক্লাউড ফাংশনটি স্থাপন করুন যা আপনি আপনার অ্যাপ এবং ক্লাউড ভিশন API ব্রিজ করতে ব্যবহার করবেন। functions-samples
সংগ্রহস্থলে একটি উদাহরণ রয়েছে যা আপনি ব্যবহার করতে পারেন।
ডিফল্টরূপে, এই ফাংশনের মাধ্যমে ক্লাউড ভিশন API অ্যাক্সেস করা শুধুমাত্র আপনার অ্যাপের প্রমাণীকৃত ব্যবহারকারীদের ক্লাউড ভিশন API-এ অ্যাক্সেসের অনুমতি দেবে। আপনি বিভিন্ন প্রয়োজনীয়তার জন্য ফাংশন পরিবর্তন করতে পারেন.
ফাংশন স্থাপন করতে:
- ফাংশন-নমুনা রেপো ক্লোন করুন বা ডাউনলোড করুন এবং
Node-1st-gen/vision-annotate-image
ডিরেক্টরিতে পরিবর্তন করুন:git clone https://github.com/firebase/functions-samples
cd Node-1st-gen/vision-annotate-image
- নির্ভরতা ইনস্টল করুন:
cd functions
npm install
cd ..
- আপনার কাছে Firebase CLI না থাকলে, এটি ইনস্টল করুন ।
-
vision-annotate-image
ডিরেক্টরিতে একটি ফায়ারবেস প্রকল্প শুরু করুন। অনুরোধ করা হলে, তালিকায় আপনার প্রকল্প নির্বাচন করুন।firebase init
- ফাংশন স্থাপন করুন:
firebase deploy --only functions:annotateImage
আপনার অ্যাপে Firebase Auth যোগ করুন
উপরে স্থাপিত কলযোগ্য ফাংশনটি আপনার অ্যাপের অ-প্রমাণিত ব্যবহারকারীদের যেকোনো অনুরোধ প্রত্যাখ্যান করবে। আপনি যদি ইতিমধ্যে এটি না করে থাকেন, তাহলে আপনাকে আপনার অ্যাপে Firebase Auth যোগ করতে হবে।
আপনার অ্যাপে প্রয়োজনীয় নির্ভরতা যোগ করুন
ফায়ারবেস লাইব্রেরির জন্য ক্লাউড ফাংশন ইনস্টল করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
এখন আপনি ইমেজ লেবেল প্রস্তুত.
1. ইনপুট ইমেজ প্রস্তুত করুন
ক্লাউড ভিশন কল করার জন্য, ছবিটি একটি বেস 64-এনকোডেড স্ট্রিং হিসাবে ফর্ম্যাট করা আবশ্যক। একটিUIImage
প্রক্রিয়া করতে: সুইফট
guard let imageData = uiImage.jpegData(compressionQuality: 1.0) else { return } let base64encodedImage = imageData.base64EncodedString()
উদ্দেশ্য-C
NSData *imageData = UIImageJPEGRepresentation(uiImage, 1.0f); NSString *base64encodedImage = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
2. ইমেজ লেবেল করতে কলযোগ্য ফাংশন আহ্বান করুন
একটি ছবিতে অবজেক্ট লেবেল করতে, একটি JSON ক্লাউড ভিশন অনুরোধ পাস করে কলযোগ্য ফাংশনটি চালু করুন।প্রথমে, ক্লাউড ফাংশনগুলির একটি উদাহরণ শুরু করুন:
সুইফট
lazy var functions = Functions.functions()
উদ্দেশ্য-C
@property(strong, nonatomic) FIRFunctions *functions;
LABEL_DETECTION
এ টাইপ সেট করে একটি অনুরোধ তৈরি করুন :সুইফট
let requestData = [ "image": ["content": base64encodedImage], "features": ["maxResults": 5, "type": "LABEL_DETECTION"] ]
উদ্দেশ্য-C
NSDictionary *requestData = @{ @"image": @{@"content": base64encodedImage}, @"features": @{@"maxResults": @5, @"type": @"LABEL_DETECTION"} };
অবশেষে, ফাংশনটি আহ্বান করুন:
সুইফট
do { let result = try await functions.httpsCallable("annotateImage").call(requestData) print(result) } catch { if let error = error as NSError? { if error.domain == FunctionsErrorDomain { let code = FunctionsErrorCode(rawValue: error.code) let message = error.localizedDescription let details = error.userInfo[FunctionsErrorDetailsKey] } // ... } }
উদ্দেশ্য-C
[[_functions HTTPSCallableWithName:@"annotateImage"] callWithObject:requestData completion:^(FIRHTTPSCallableResult * _Nullable result, NSError * _Nullable error) { if (error) { if ([error.domain isEqualToString:@"com.firebase.functions"]) { FIRFunctionsErrorCode code = error.code; NSString *message = error.localizedDescription; NSObject *details = error.userInfo[@"details"]; } // ... } // Function completed succesfully // Get information about labeled objects }];
3. লেবেলযুক্ত বস্তু সম্পর্কে তথ্য পান
ইমেজ লেবেলিং অপারেশন সফল হলে, টাস্কের ফলাফলে BatchAnnotateImagesResponse- এর একটি JSON প্রতিক্রিয়া ফেরত দেওয়া হবে।labelAnnotations
অ্যারের প্রতিটি বস্তু এমন কিছু উপস্থাপন করে যা ছবিতে লেবেল করা হয়েছিল। প্রতিটি লেবেলের জন্য, আপনি লেবেলের পাঠ্য বিবরণ, এর নলেজ গ্রাফ সত্তা আইডি (যদি উপলব্ধ থাকে), এবং ম্যাচের আত্মবিশ্বাসের স্কোর পেতে পারেন। যেমন: সুইফট
if let labelArray = (result?.data as? [String: Any])?["labelAnnotations"] as? [[String:Any]] {
for labelObj in labelArray {
let text = labelObj["description"]
let entityId = labelObj["mid"]
let confidence = labelObj["score"]
}
}
উদ্দেশ্য-C
NSArray *labelArray = result.data[@"labelAnnotations"];
for (NSDictionary *labelObj in labelArray) {
NSString *text = labelObj[@"description"];
NSString *entityId = labelObj[@"mid"];
NSNumber *confidence = labelObj[@"score"];
}