1. परिचय
डेटा पर आधारित ऐप्लिकेशन के इस दौर में, कंप्यूटर विज़न जैसी बेहतर मशीन लर्निंग और आर्टिफ़िशियल इंटेलिजेंस सेवाओं का इस्तेमाल करना बेहद ज़रूरी हो गया है. ऐसी ही एक सेवा Vision API है. यह इमेज का बेहतर तरीके से विश्लेषण करने की सुविधाएं देता है. इस कोडलैब में, Spring Boot और Java का इस्तेमाल करके कंप्यूटर विज़न ऐप्लिकेशन बनाने का तरीका बताया गया है. इससे आपको अपने प्रोजेक्ट में, इमेज की पहचान करने और उनका विश्लेषण करने की सुविधा को अनलॉक करने में मदद मिलेगी. ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई), ऐसी इमेज के सार्वजनिक यूआरएल को इनपुट के तौर पर स्वीकार करेगा जिनमें लिखा या प्रिंट किया गया टेक्स्ट मौजूद हो. इसके बाद, वह टेक्स्ट को निकालेगा और भाषा का पता लगाएगा. अगर वह भाषा, इन सुविधाओं के साथ काम करने वाली भाषाओं में से एक है, तो वह उस टेक्स्ट का अंग्रेज़ी में अनुवाद जनरेट करेगा.
आपको क्या बनाना है
आपको एक
- Vision API और Google Cloud Translation API का इस्तेमाल करने के लिए, Java Spring Boot ऐप्लिकेशन
- Cloud Run पर डिप्लॉय किया गया
2. ज़रूरी शर्तें
यहां ज़रूरी शर्तें दी गई हैं:
अपना प्रोजेक्ट बनाना
- Google Cloud खाता. साथ ही, उसमें प्रोजेक्ट बनाया गया हो और बिलिंग की सुविधा चालू हो
- Vision API, Translation API, Cloud Run API, और Artifact Registry API चालू किए गए हों
- Cloud Shell चालू किया गया
- Cloud Storage API चालू होना चाहिए. साथ ही, एक बकेट बनाई गई हो और उसमें टेक्स्ट या लिखावट वाली इमेज अपलोड की गई हों. ये इमेज, स्थानीय भाषाओं में होनी चाहिए. इसके अलावा, इस ब्लॉग में दिए गए इमेज के सैंपल लिंक का भी इस्तेमाल किया जा सकता है
Google Cloud API चालू करने का तरीका जानने के लिए, दस्तावेज़ देखें.
Cloud Shell चालू करें
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है:
Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद 'Cloud Shell चालू करें' पर क्लिक करें

- Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list
- यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <PROJECT_ID>
gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
3. Spring Boot प्रोजेक्ट को बूटस्ट्रैप करना
शुरू करने के लिए, अपने पसंदीदा आईडीई या Spring Initializr का इस्तेमाल करके, नया Spring Boot प्रोजेक्ट बनाएं. अपने प्रोजेक्ट के कॉन्फ़िगरेशन में ज़रूरी डिपेंडेंसी शामिल करें. जैसे, Spring Web, Spring Cloud GCP, और Vision AI. इसके अलावा, Cloud Shell से Spring Initializr का इस्तेमाल करके, Spring Boot ऐप्लिकेशन को आसानी से बूटस्ट्रैप किया जा सकता है. इसके लिए, यह तरीका अपनाएं.
अपना Spring Boot प्रोजेक्ट बनाने के लिए, यह कमांड चलाएं:
curl https://start.spring.io/starter.tgz -d packaging=jar -d dependencies=cloud-gcp,web,lombok -d baseDir=spring-vision -d type=maven-project -d bootVersion=3.0.1.RELEASE | tar -xzvf -
spring-vision आपके प्रोजेक्ट का नाम है. इसे अपनी ज़रूरत के हिसाब से बदलें.
bootVersion, Spring Boot का वर्शन है. इसे लागू करते समय, ज़रूरत पड़ने पर इसे अपडेट करना न भूलें.
type, प्रोजेक्ट बिल्ड टूल टाइप का वर्शन है. अगर आपको gradle का इस्तेमाल करना है, तो इसे बदला जा सकता है.

इससे "spring-vision" के तहत, यहां दिया गया प्रोजेक्ट स्ट्रक्चर बन जाता है:

pom.xml में प्रोजेक्ट की सभी डिपेंडेंसी होती हैं. इस कमांड का इस्तेमाल करके कॉन्फ़िगर की गई डिपेंडेंसी, पहले से ही आपकी pom.xml फ़ाइल में जोड़ दी जाती हैं.
src/main/java/com/example/demo में सोर्स क्लास वाली .java फ़ाइलें होती हैं.
resources में इमेज, XML, टेक्स्ट फ़ाइलें, और प्रोजेक्ट में इस्तेमाल किया गया स्टैटिक कॉन्टेंट होता है. इन्हें अलग से मैनेज किया जाता है.
application.properties की मदद से, एडमिन की सुविधाओं को बनाए रखा जा सकता है. इससे ऐप्लिकेशन की प्रोफ़ाइल के हिसाब से प्रॉपर्टी तय की जा सकती हैं.
4. Vision API को कॉन्फ़िगर करना
Vision API चालू करने के बाद, आपके पास अपने ऐप्लिकेशन में एपीआई के क्रेडेंशियल कॉन्फ़िगर करने का विकल्प होता है. पुष्टि करने की सुविधा सेट अप करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल किया जा सकता है. हालांकि, इस डेमो में क्रेडेंशियल का इस्तेमाल नहीं किया गया है.
देखने और अनुवाद करने की सेवाएं लागू करना
एक ऐसी सेवा क्लास बनाएं जो Vision API के साथ इंटरैक्ट करती है. ज़रूरी डिपेंडेंसी इंजेक्ट करें और इमेज विश्लेषण के अनुरोध भेजने के लिए, Vision API क्लाइंट का इस्तेमाल करें. अपने ऐप्लिकेशन की ज़रूरतों के हिसाब से, इमेज लेबल करने, चेहरे की पहचान करने, और चेहरे को पहचानने जैसे टास्क करने के लिए, तरीकों को लागू किया जा सकता है. इस डेमो में, हम हाथ से लिखे गए टेक्स्ट को निकालने और उसका अनुवाद करने के तरीकों का इस्तेमाल करेंगे.
इसके लिए, पक्का करें कि आपने pom.xml में ये डिपेंडेंसी शामिल की हों.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-vision</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-translate</artifactId>
</dependency>
repo से यहां दी गई फ़ाइलों को क्लोन करें / बदलें और उन्हें प्रोजेक्ट स्ट्रक्चर में मौजूद फ़ोल्डर / पाथ में जोड़ें:
- Application.java (/src/main/java/com/example/demo)
- TranslateText.java (/src/main/java/com/example/demo)
- VisionController.java (/src/main/java/com/example/demo)
- index.html (/src/main/resources/static)
- result.html (/src/main/resources/templates)
- pom.xml
org.springframework.cloud.gcp.vision.CloudVisionTemplate सेवा में मौजूद extractTextFromImage तरीके की मदद से, इमेज के तौर पर दिए गए इनपुट से टेक्स्ट निकाला जा सकता है. सेवा com.google.cloud.translate.v3 का getTranslatedText तरीका, आपको अपनी इमेज से निकाले गए टेक्स्ट को पास करने की सुविधा देता है. साथ ही, इससे आपको जवाब के तौर पर, चुनी गई भाषा में अनुवाद किया गया टेक्स्ट मिलता है. ऐसा तब होता है, जब सोर्स टेक्स्ट, स्वीकार की गई भाषाओं की सूची में शामिल हो.
REST API बनाना
ऐसे REST एंडपॉइंट डिज़ाइन और लागू करें जो Vision API की सुविधाओं को दिखाएंगे. ऐसे कंट्रोलर बनाएं जो आने वाले अनुरोधों को मैनेज करें. साथ ही, इमेज को प्रोसेस करने और विश्लेषण के नतीजे दिखाने के लिए, Vision API सेवा का इस्तेमाल करें. इस डेमो में, हमारी VisionController क्लास, एंडपॉइंट लागू करती है, आने वाले अनुरोध को हैंडल करती है, Vision API और Cloud Translation सेवाओं को चालू करती है, और व्यू लेयर को नतीजा दिखाती है. REST एंडपॉइंट के लिए, GET तरीके को लागू करने का तरीका यहां दिया गया है:
@GetMapping("/extractText")
public String extractText(String imageUrl) throws IOException {
String textFromImage =
this.cloudVisionTemplate.extractTextFromImage(this.resourceLoader.getResource(imageUrl));
TranslateText translateText = new TranslateText();
String result = translateText.translateText(textFromImage);
return "Text from image translated: " + result;
}
ऊपर दिए गए इंप्लिमेंटेशन में मौजूद TranslateText क्लास में, Cloud Translation सेवा को चालू करने वाला तरीका है:
String targetLanguage = "en";
TranslateTextRequest request =
TranslateTextRequest.newBuilder()
.setParent(parent.toString())
.setMimeType("text/plain")
.setTargetLanguageCode(targetLanguage)
.addContents(text)
.build();
TranslateTextResponse response = client.translateText(request);
// Display the translation for each input text provided
for (Translation translation : response.getTranslationsList()) {
res = res + " ::: " + translation.getTranslatedText();
System.out.printf("Translated text : %s\n", res);
}
VisionController क्लास की मदद से, हमने REST के लिए GET तरीके को लागू किया है.
फ़्रंटएंड डेवलपमेंट के लिए Thymeleaf को इंटिग्रेट करना
Spring Boot की मदद से ऐप्लिकेशन बनाते समय, फ़्रंटएंड डेवलपमेंट के लिए Thymeleaf का इस्तेमाल करना एक लोकप्रिय विकल्प है. Thymeleaf, सर्वर-साइड Java टेंप्लेट इंजन है. इसकी मदद से, डाइनैमिक कॉन्टेंट को अपने एचटीएमएल पेजों में आसानी से इंटिग्रेट किया जा सकता है. Thymeleaf, डेवलपमेंट का बेहतर अनुभव देता है. इसकी मदद से, सर्वर साइड एक्सप्रेशन एम्बेड करके एचटीएमएल टेंप्लेट बनाए जा सकते हैं. इन एक्सप्रेशन का इस्तेमाल, Spring Boot बैकएंड से डेटा को डाइनैमिक तरीके से रेंडर करने के लिए किया जा सकता है. इससे, Vision API सेवा की मदद से की गई इमेज के विश्लेषण के नतीजों को दिखाना आसान हो जाता है.
शुरू करने के लिए, पक्का करें कि आपके Spring Boot प्रोजेक्ट में Thymeleaf के लिए ज़रूरी डिपेंडेंसी मौजूद हों. pom.xml में Thymeleaf Starter डिपेंडेंसी शामिल की जा सकती है:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
अपने कंट्रोलर के तरीके में, Vision API सेवा से विश्लेषण के नतीजे को वापस पाएं और उसे मॉडल में जोड़ें. मॉडल, उस डेटा को दिखाता है जिसका इस्तेमाल Thymeleaf, एचटीएमएल टेंप्लेट को रेंडर करने के लिए करेगा. मॉडल के पॉप्युलेट होने के बाद, उस Thymeleaf टेंप्लेट का नाम दिखाएं जिसे रेंडर करना है. Thymeleaf, टेंप्लेट को प्रोसेस करने, सर्वर-साइड एक्सप्रेशन को असली डेटा से बदलने, और क्लाइंट के ब्राउज़र को भेजे जाने वाले फ़ाइनल एचटीएमएल को जनरेट करने का काम करेगा.
VisionController में extractText तरीके का इस्तेमाल करने पर, हमने नतीजे को String के तौर पर दिखाया है. हालांकि, इसे मॉडल में नहीं जोड़ा गया है. हालांकि, हमने पेज सबमिट करने पर index.html पर GET तरीके extractText का इस्तेमाल किया है. Thymeleaf की मदद से, उपयोगकर्ता को बेहतर अनुभव दिया जा सकता है. इससे उपयोगकर्ता इमेज अपलोड कर सकते हैं, Vision API के विश्लेषण को ट्रिगर कर सकते हैं, और रीयल-टाइम में नतीजे देख सकते हैं. फ़्रंटएंड डेवलपमेंट के लिए Thymeleaf का इस्तेमाल करके, Vision AI ऐप्लिकेशन की सभी सुविधाओं का फ़ायदा पाएं.
<form action="/extractText">
Web URL of image to analyze:
<input type="text"
name="imageUrl"
value=""
<input type="submit" value="Read and Translate" />
</form>
5. Cloud Run पर कंप्यूटर विज़न ऐप्लिकेशन डिप्लॉय करना
अपनी सेवा और कंट्रोलर क्लास के लिए यूनिट टेस्ट लिखें, ताकि यह पक्का किया जा सके कि /src/test/java/com/example फ़ोल्डर में सही तरीके से काम हो रहा है. जब आपको लगे कि यह स्टेबल है, तब इसे डिप्लॉय किए जा सकने वाले आर्टफ़ैक्ट, जैसे कि JAR फ़ाइल में पैकेज करें. इसके बाद, इसे Google Cloud पर मौजूद सर्वरलेस कंप्यूट प्लैटफ़ॉर्म, Cloud Run पर डिप्लॉय करें. इस चरण में, हम Cloud Run का इस्तेमाल करके, कोड बंडल किए गए Spring Boot ऐप्लिकेशन को डिप्लॉय करने पर फ़ोकस करेंगे.
- Cloud Shell में जाकर, यहां दिया गया तरीका अपनाकर अपने ऐप्लिकेशन को पैकेज करें. पक्का करें कि टर्मिनल, प्रोजेक्ट के रूट फ़ोल्डर पर प्रॉम्प्ट कर रहा हो
बिल्ड:
./mvnw package
बिल्ड तैयार होने के बाद, जांच करने के लिए इसे स्थानीय तौर पर चलाएं:
./mvnw spring-boot:run
- Jib की मदद से, अपने Spring Boot ऐप्लिकेशन का कोड बंडल करें:
मैन्युअल तरीके से Dockerfile बनाने और कंटेनर इमेज बनाने के बजाय, कंटेनर बनाने की प्रोसेस को आसान बनाने के लिए Jib यूटिलिटी का इस्तेमाल किया जा सकता है. Jib एक प्लगिन है, जो सीधे तौर पर आपके बिल्ड टूल (जैसे कि Maven या Gradle) के साथ इंटिग्रेट होता है. इसकी मदद से, Dockerfile लिखे बिना ऑप्टिमाइज़ की गई कंटेनर इमेज बनाई जा सकती हैं. आगे बढ़ने से पहले, आपको Artifact Registry API चालू करना होगा. हमारा सुझाव है कि कंटेनर रजिस्ट्री के बजाय Artifact Registry का इस्तेमाल करें. इसके बाद, Docker इमेज बनाने और उसे रजिस्ट्री में पब्लिश करने के लिए, Jib चलाएं:
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/vision-jib
ध्यान दें: इस एक्सपेरिमेंट में, हमने pom.xml में Jib Maven प्लगिन को कॉन्फ़िगर नहीं किया है. हालांकि, ज़्यादा बेहतर तरीके से इस्तेमाल करने के लिए, इसे pom.xml में ज़्यादा कॉन्फ़िगरेशन विकल्पों के साथ जोड़ा जा सकता है
- पिछले चरण में, हमने जिस कंटेनर को Artifact Registry में पुश किया था उसे Cloud Run पर डिप्लॉय करें. यह भी एक निर्देश से पूरा होने वाला चरण है:
gcloud run deploy vision-app --image gcr.io/$GOOGLE_CLOUD_PROJECT/vision-jib --platform managed --region us-central1 --allow-unauthenticated --update-env-vars
इसके अलावा, यूज़र इंटरफ़ेस (यूआई) से भी ऐसा किया जा सकता है. Google Cloud Console पर जाएं और Cloud Run सेवा ढूंढें. "सेवा बनाएं" पर क्लिक करें और स्क्रीन पर दिए गए निर्देशों का पालन करें. उस कंटेनर इमेज के बारे में बताएं जिसे आपने पहले रजिस्ट्री में पुश किया था. इसके बाद, डिप्लॉयमेंट की ज़रूरी सेटिंग कॉन्फ़िगर करें. जैसे, सीपीयू का बंटवारा और अपने-आप स्केल होना. साथ ही, डिप्लॉयमेंट के लिए सही क्षेत्र चुनें. अपने ऐप्लिकेशन के लिए, एनवायरमेंट वैरिएबल सेट किए जा सकते हैं. इन वैरिएबल में पुष्टि करने के क्रेडेंशियल (एपीआई कुंजियां वगैरह), डेटाबेस कनेक्शन स्ट्रिंग या आपके Vision AI ऐप्लिकेशन के सही तरीके से काम करने के लिए ज़रूरी कोई अन्य कॉन्फ़िगरेशन शामिल हो सकता है. डप्लॉयमेंट पूरा होने के बाद, आपको अपने ऐप्लिकेशन का एंडपॉइंट मिल जाएगा.
Vision AI ऐप्लिकेशन का इस्तेमाल करना
डेमो के लिए, अपने ऐप्लिकेशन में इस इमेज यूआरएल का इस्तेमाल किया जा सकता है, ताकि वह इसे पढ़ सके और इसका अनुवाद कर सके: https://storage.googleapis.com/img_public_test/tamilwriting1.jfif

6. व्यवस्थित करें
इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:
- Google Cloud Console में, 'संसाधन मैनेज करें' पेज पर जाएं
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी डालें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें
7. बधाई हो
बधाई हो! आपने Spring Boot और Java का इस्तेमाल करके, Vision AI ऐप्लिकेशन बना लिया है. Vision AI की मदद से, आपका ऐप्लिकेशन अब इमेज का बेहतर तरीके से विश्लेषण कर सकता है. जैसे, इमेज को लेबल करना, चेहरे की पहचान करना वगैरह. Spring Boot को इंटिग्रेट करने से, Google Cloud Native ऐप्लिकेशन बनाने के लिए एक मज़बूत आधार मिलता है. इससे ज़्यादा उपयोगकर्ताओं को हैंडल करने वाले और भरोसेमंद ऐप्लिकेशन बनाए जा सकते हैं. Vision AI, Cloud Run, Cloud Translation वगैरह की सुविधाओं के बारे में ज़्यादा जानें. इससे आपको अपने ऐप्लिकेशन को बेहतर बनाने में मदद मिलेगी. ज़्यादा जानने के लिए, Vision API, Cloud Translation, और GCP Spring के दस्तावेज़ देखें. Spring Native विकल्प के साथ, उसी एक्सपेरिमेंट को आज़माएं!! साथ ही, जनरेटिव एआई की दुनिया की एक झलक पाने के लिए, देखें कि यह एपीआई Model Garden में कैसा दिखता है.