आप छवियों में टेक्स्ट को पहचानने के लिए एमएल किट का उपयोग कर सकते हैं। एमएल किट में छवियों में पाठ को पहचानने के लिए उपयुक्त एक सामान्य प्रयोजन एपीआई है, जैसे सड़क चिह्न का पाठ, और दस्तावेजों के पाठ को पहचानने के लिए अनुकूलित एपीआई। सामान्य प्रयोजन एपीआई में ऑन-डिवाइस और क्लाउड-आधारित दोनों मॉडल हैं। दस्तावेज़ पाठ पहचान केवल क्लाउड-आधारित मॉडल के रूप में उपलब्ध है। क्लाउड और ऑन-डिवाइस मॉडल की तुलना के लिए अवलोकन देखें।
शुरू करने से पहले
- यदि आपने पहले से ही अपने ऐप में फायरबेस नहीं जोड़ा है, तो आरंभ करने की मार्गदर्शिका में दिए गए चरणों का पालन करके ऐसा करें।
- अपने पॉडफाइल में एमएल किट लाइब्रेरी शामिल करें:
pod 'Firebase/MLVision', '6.25.0' # If using an on-device API: pod 'Firebase/MLVisionTextModel', '6.25.0'
अपने प्रोजेक्ट के पॉड इंस्टॉल या अपडेट करने के बाद, अपने Xcode प्रोजेक्ट को इसके.xcworkspace
का उपयोग करके खोलना सुनिश्चित करें। - अपने ऐप में, फ़ायरबेस आयात करें:
तीव्र
import Firebase
उद्देश्य सी
@import Firebase;
यदि आप क्लाउड-आधारित मॉडल का उपयोग करना चाहते हैं, और आपने पहले से ही अपने प्रोजेक्ट के लिए क्लाउड-आधारित एपीआई सक्षम नहीं किया है, तो अभी ऐसा करें:
- फायरबेस कंसोल का एमएल किट एपीआई पेज खोलें।
यदि आपने पहले से ही अपने प्रोजेक्ट को ब्लेज़ मूल्य निर्धारण योजना में अपग्रेड नहीं किया है, तो ऐसा करने के लिए अपग्रेड पर क्लिक करें। (आपको केवल तभी अपग्रेड करने के लिए प्रेरित किया जाएगा यदि आपका प्रोजेक्ट ब्लेज़ योजना पर नहीं है।)
केवल ब्लेज़-स्तरीय प्रोजेक्ट ही क्लाउड-आधारित एपीआई का उपयोग कर सकते हैं।
- यदि क्लाउड-आधारित एपीआई पहले से सक्षम नहीं हैं, तो क्लाउड-आधारित एपीआई सक्षम करें पर क्लिक करें।
यदि आप केवल ऑन-डिवाइस मॉडल का उपयोग करना चाहते हैं, तो आप इस चरण को छोड़ सकते हैं।
अब आप छवियों में टेक्स्ट को पहचानना शुरू करने के लिए तैयार हैं।
इनपुट छवि दिशानिर्देश
एमएल किट में टेक्स्ट को सटीक रूप से पहचानने के लिए, इनपुट छवियों में वह टेक्स्ट होना चाहिए जो पर्याप्त पिक्सेल डेटा द्वारा दर्शाया गया हो। आदर्श रूप से, लैटिन पाठ के लिए, प्रत्येक अक्षर कम से कम 16x16 पिक्सेल का होना चाहिए। चीनी, जापानी और कोरियाई पाठ (केवल क्लाउड-आधारित एपीआई द्वारा समर्थित) के लिए, प्रत्येक वर्ण 24x24 पिक्सेल होना चाहिए। सभी भाषाओं के लिए, 24x24 पिक्सेल से बड़े वर्णों के लिए आमतौर पर कोई सटीकता लाभ नहीं होता है।
इसलिए, उदाहरण के लिए, एक 640x480 छवि एक व्यवसाय कार्ड को स्कैन करने के लिए अच्छी तरह से काम कर सकती है जो छवि की पूरी चौड़ाई घेरती है। अक्षर के आकार के कागज़ पर मुद्रित दस्तावेज़ को स्कैन करने के लिए, 720x1280 पिक्सेल छवि की आवश्यकता हो सकती है।
खराब छवि फोकस पाठ पहचान सटीकता को नुकसान पहुंचा सकता है। यदि आपको स्वीकार्य परिणाम नहीं मिल रहे हैं, तो उपयोगकर्ता से छवि पुनः प्राप्त करने के लिए कहें।
यदि आप वास्तविक समय एप्लिकेशन में टेक्स्ट को पहचान रहे हैं, तो आप इनपुट छवियों के समग्र आयामों पर भी विचार करना चाहेंगे। छोटी छवियों को तेजी से संसाधित किया जा सकता है, इसलिए विलंबता को कम करने के लिए, कम रिज़ॉल्यूशन पर छवियों को कैप्चर करें (उपरोक्त सटीकता आवश्यकताओं को ध्यान में रखते हुए) और सुनिश्चित करें कि पाठ जितना संभव हो उतना छवि पर कब्जा कर ले। वास्तविक समय के प्रदर्शन को बेहतर बनाने के लिए युक्तियाँ भी देखें।
छवियों में पाठ को पहचानें
ऑन-डिवाइस या क्लाउड-आधारित मॉडल का उपयोग करके किसी छवि में टेक्स्ट को पहचानने के लिए, नीचे बताए अनुसार टेक्स्ट पहचानकर्ता चलाएँ।
1. पाठ पहचानकर्ता चलाएँ
छवि को `UIImage` या `CMSampleBufferRef` के रूप में `VisionTextRecognizer` की `process(_:completion:)` विधि में पास करें:-
onDeviceTextRecognizer
याcloudTextRecognizer
पर कॉल करकेVisionTextRecognizer
का उदाहरण प्राप्त करें:तीव्र
ऑन-डिवाइस मॉडल का उपयोग करने के लिए:
let vision = Vision.vision() let textRecognizer = vision.onDeviceTextRecognizer()
क्लाउड मॉडल का उपयोग करने के लिए:
let vision = Vision.vision() let textRecognizer = vision.cloudTextRecognizer() // Or, to provide language hints to assist with language detection: // See https://cloud.google.com/vision/docs/languages for supported languages let options = VisionCloudTextRecognizerOptions() options.languageHints = ["en", "hi"] let textRecognizer = vision.cloudTextRecognizer(options: options)
उद्देश्य सी
ऑन-डिवाइस मॉडल का उपयोग करने के लिए:
FIRVision *vision = [FIRVision vision]; FIRVisionTextRecognizer *textRecognizer = [vision onDeviceTextRecognizer];
क्लाउड मॉडल का उपयोग करने के लिए:
FIRVision *vision = [FIRVision vision]; FIRVisionTextRecognizer *textRecognizer = [vision cloudTextRecognizer]; // Or, to provide language hints to assist with language detection: // See https://cloud.google.com/vision/docs/languages for supported languages FIRVisionCloudTextRecognizerOptions *options = [[FIRVisionCloudTextRecognizerOptions alloc] init]; options.languageHints = @[@"en", @"hi"]; FIRVisionTextRecognizer *textRecognizer = [vision cloudTextRecognizerWithOptions:options];
UIImage
याCMSampleBufferRef
उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं।UIImage
उपयोग करने के लिए:- यदि आवश्यक हो, तो छवि को घुमाएँ ताकि उसकी
imageOrientation
गुण.up
हो। - सही ढंग से घुमाए गए
UIImage
उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं। कोई रोटेशन मेटाडेटा निर्दिष्ट न करें—डिफ़ॉल्ट मान,.topLeft
, का उपयोग किया जाना चाहिए।तीव्र
let image = VisionImage(image: uiImage)
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];
CMSampleBufferRef
का उपयोग करने के लिए:एक
VisionImageMetadata
ऑब्जेक्ट बनाएं जोCMSampleBufferRef
बफर में मौजूद छवि डेटा के ओरिएंटेशन को निर्दिष्ट करता है।छवि अभिविन्यास प्राप्त करने के लिए:
तीव्र
func imageOrientation( deviceOrientation: UIDeviceOrientation, cameraPosition: AVCaptureDevice.Position ) -> VisionDetectorImageOrientation { switch deviceOrientation { case .portrait: return cameraPosition == .front ? .leftTop : .rightTop case .landscapeLeft: return cameraPosition == .front ? .bottomLeft : .topLeft case .portraitUpsideDown: return cameraPosition == .front ? .rightBottom : .leftBottom case .landscapeRight: return cameraPosition == .front ? .topRight : .bottomRight case .faceDown, .faceUp, .unknown: return .leftTop } }
उद्देश्य सी
- (FIRVisionDetectorImageOrientation) imageOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation cameraPosition:(AVCaptureDevicePosition)cameraPosition { switch (deviceOrientation) { case UIDeviceOrientationPortrait: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationLeftTop; } else { return FIRVisionDetectorImageOrientationRightTop; } case UIDeviceOrientationLandscapeLeft: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationBottomLeft; } else { return FIRVisionDetectorImageOrientationTopLeft; } case UIDeviceOrientationPortraitUpsideDown: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationRightBottom; } else { return FIRVisionDetectorImageOrientationLeftBottom; } case UIDeviceOrientationLandscapeRight: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationTopRight; } else { return FIRVisionDetectorImageOrientationBottomRight; } default: return FIRVisionDetectorImageOrientationTopLeft; } }
फिर, मेटाडेटा ऑब्जेक्ट बनाएं:
तीव्र
let cameraPosition = AVCaptureDevice.Position.back // Set to the capture device you used. let metadata = VisionImageMetadata() metadata.orientation = imageOrientation( deviceOrientation: UIDevice.current.orientation, cameraPosition: cameraPosition )
उद्देश्य सी
FIRVisionImageMetadata *metadata = [[FIRVisionImageMetadata alloc] init]; AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionBack; // Set to the capture device you used. metadata.orientation = [self imageOrientationFromDeviceOrientation:UIDevice.currentDevice.orientation cameraPosition:cameraPosition];
-
CMSampleBufferRef
ऑब्जेक्ट और रोटेशन मेटाडेटा का उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं:तीव्र
let image = VisionImage(buffer: sampleBuffer) image.metadata = metadata
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer]; image.metadata = metadata;
- यदि आवश्यक हो, तो छवि को घुमाएँ ताकि उसकी
- फिर, छवि को
process(_:completion:)
विधि में पास करें:तीव्र
textRecognizer.process(visionImage) { result, error in guard error == nil, let result = result else { // ... return } // Recognized text }
उद्देश्य सी
[textRecognizer processImage:image completion:^(FIRVisionText *_Nullable result, NSError *_Nullable error) { if (error != nil || result == nil) { // ... return; } // Recognized text }];
2. मान्यता प्राप्त पाठ के ब्लॉक से पाठ निकालें
यदि टेक्स्ट पहचान ऑपरेशन सफल होता है, तो यह एक [`VisionText`][VisionText] ऑब्जेक्ट लौटाएगा। एक `VisionText` ऑब्जेक्ट में छवि में पहचाना गया पूरा टेक्स्ट और शून्य या अधिक [`VisionTextBlock`][VisionTextBlock] ऑब्जेक्ट होते हैं। प्रत्येक `VisionTextBlock` पाठ के एक आयताकार ब्लॉक का प्रतिनिधित्व करता है, जिसमें शून्य या अधिक [`VisionTextLine`][VisionTextLine] ऑब्जेक्ट होते हैं। प्रत्येक `VisionTextLine` ऑब्जेक्ट में शून्य या अधिक [`VisionTextElement`][VisionTextElement] ऑब्जेक्ट होते हैं, जो शब्दों और शब्द-जैसी संस्थाओं (तिथियों, संख्याओं और इसी तरह) का प्रतिनिधित्व करते हैं। प्रत्येक `VisionTextBlock`, `VisionTextLine`, और `VisionTextElement` ऑब्जेक्ट के लिए, आप क्षेत्र में पहचाने गए टेक्स्ट और क्षेत्र के बाउंडिंग निर्देशांक प्राप्त कर सकते हैं। उदाहरण के लिए:तीव्र
let resultText = result.text for block in result.blocks { let blockText = block.text let blockConfidence = block.confidence let blockLanguages = block.recognizedLanguages let blockCornerPoints = block.cornerPoints let blockFrame = block.frame for line in block.lines { let lineText = line.text let lineConfidence = line.confidence let lineLanguages = line.recognizedLanguages let lineCornerPoints = line.cornerPoints let lineFrame = line.frame for element in line.elements { let elementText = element.text let elementConfidence = element.confidence let elementLanguages = element.recognizedLanguages let elementCornerPoints = element.cornerPoints let elementFrame = element.frame } } }
उद्देश्य सी
NSString *resultText = result.text; for (FIRVisionTextBlock *block in result.blocks) { NSString *blockText = block.text; NSNumber *blockConfidence = block.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *blockLanguages = block.recognizedLanguages; NSArray<NSValue *> *blockCornerPoints = block.cornerPoints; CGRect blockFrame = block.frame; for (FIRVisionTextLine *line in block.lines) { NSString *lineText = line.text; NSNumber *lineConfidence = line.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *lineLanguages = line.recognizedLanguages; NSArray<NSValue *> *lineCornerPoints = line.cornerPoints; CGRect lineFrame = line.frame; for (FIRVisionTextElement *element in line.elements) { NSString *elementText = element.text; NSNumber *elementConfidence = element.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *elementLanguages = element.recognizedLanguages; NSArray<NSValue *> *elementCornerPoints = element.cornerPoints; CGRect elementFrame = element.frame; } } }
वास्तविक समय के प्रदर्शन को बेहतर बनाने के लिए युक्तियाँ
यदि आप रीयल-टाइम एप्लिकेशन में टेक्स्ट को पहचानने के लिए ऑन-डिवाइस मॉडल का उपयोग करना चाहते हैं, तो सर्वोत्तम फ़्रेमरेट प्राप्त करने के लिए इन दिशानिर्देशों का पालन करें:
- टेक्स्ट पहचानकर्ता को थ्रॉटल कॉल। यदि टेक्स्ट पहचानकर्ता के चलने के दौरान कोई नया वीडियो फ़्रेम उपलब्ध हो जाता है, तो फ़्रेम को छोड़ दें।
- यदि आप इनपुट छवि पर ग्राफिक्स को ओवरले करने के लिए टेक्स्ट पहचानकर्ता के आउटपुट का उपयोग कर रहे हैं, तो पहले एमएल किट से परिणाम प्राप्त करें, फिर छवि को प्रस्तुत करें और एक ही चरण में ओवरले करें। ऐसा करने से, आप प्रत्येक इनपुट फ़्रेम के लिए केवल एक बार डिस्प्ले सतह पर रेंडर करते हैं। उदाहरण के लिए शोकेस नमूना ऐप में पूर्वावलोकनओवरलेव्यू और एफआईआरडिटेक्शनओवरलेव्यू कक्षाएं देखें।
- कम रिज़ॉल्यूशन पर छवियाँ कैप्चर करने पर विचार करें। हालाँकि, इस एपीआई की छवि आयाम आवश्यकताओं को भी ध्यान में रखें।
अगले कदम
- इससे पहले कि आप क्लाउड एपीआई का उपयोग करने वाले किसी ऐप का उत्पादन शुरू करें, आपको अनधिकृत एपीआई एक्सेस के प्रभाव को रोकने और कम करने के लिए कुछ अतिरिक्त कदम उठाने चाहिए।
दस्तावेज़ों की छवियों में टेक्स्ट को पहचानें
किसी दस्तावेज़ के टेक्स्ट को पहचानने के लिए, नीचे बताए अनुसार क्लाउड-आधारित दस्तावेज़ टेक्स्ट पहचानकर्ता को कॉन्फ़िगर करें और चलाएं।
नीचे वर्णित दस्तावेज़ पाठ पहचान एपीआई, एक इंटरफ़ेस प्रदान करता है जिसका उद्देश्य दस्तावेज़ों की छवियों के साथ काम करने के लिए अधिक सुविधाजनक होना है। हालाँकि, यदि आप विरल पाठ एपीआई द्वारा प्रदान किए गए इंटरफ़ेस को पसंद करते हैं, तो आप घने पाठ मॉडल का उपयोग करने के लिए क्लाउड पाठ पहचानकर्ता को कॉन्फ़िगर करके दस्तावेज़ों को स्कैन करने के लिए इसका उपयोग कर सकते हैं।
दस्तावेज़ टेक्स्ट पहचान एपीआई का उपयोग करने के लिए:
1. पाठ पहचानकर्ता चलाएँ
छवि कोUIImage
या CMSampleBufferRef
के रूप में VisionDocumentTextRecognizer
की process(_:completion:)
विधि में पास करें:-
cloudDocumentTextRecognizer
कॉल करकेVisionDocumentTextRecognizer
का एक उदाहरण प्राप्त करें:तीव्र
let vision = Vision.vision() let textRecognizer = vision.cloudDocumentTextRecognizer() // Or, to provide language hints to assist with language detection: // See https://cloud.google.com/vision/docs/languages for supported languages let options = VisionCloudDocumentTextRecognizerOptions() options.languageHints = ["en", "hi"] let textRecognizer = vision.cloudDocumentTextRecognizer(options: options)
उद्देश्य सी
FIRVision *vision = [FIRVision vision]; FIRVisionDocumentTextRecognizer *textRecognizer = [vision cloudDocumentTextRecognizer]; // Or, to provide language hints to assist with language detection: // See https://cloud.google.com/vision/docs/languages for supported languages FIRVisionCloudDocumentTextRecognizerOptions *options = [[FIRVisionCloudDocumentTextRecognizerOptions alloc] init]; options.languageHints = @[@"en", @"hi"]; FIRVisionDocumentTextRecognizer *textRecognizer = [vision cloudDocumentTextRecognizerWithOptions:options];
UIImage
याCMSampleBufferRef
उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं।UIImage
उपयोग करने के लिए:- यदि आवश्यक हो, तो छवि को घुमाएँ ताकि उसकी
imageOrientation
गुण.up
हो। - सही ढंग से घुमाए गए
UIImage
उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं। कोई रोटेशन मेटाडेटा निर्दिष्ट न करें—डिफ़ॉल्ट मान,.topLeft
, का उपयोग किया जाना चाहिए।तीव्र
let image = VisionImage(image: uiImage)
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];
CMSampleBufferRef
का उपयोग करने के लिए:एक
VisionImageMetadata
ऑब्जेक्ट बनाएं जोCMSampleBufferRef
बफर में मौजूद छवि डेटा के ओरिएंटेशन को निर्दिष्ट करता है।छवि अभिविन्यास प्राप्त करने के लिए:
तीव्र
func imageOrientation( deviceOrientation: UIDeviceOrientation, cameraPosition: AVCaptureDevice.Position ) -> VisionDetectorImageOrientation { switch deviceOrientation { case .portrait: return cameraPosition == .front ? .leftTop : .rightTop case .landscapeLeft: return cameraPosition == .front ? .bottomLeft : .topLeft case .portraitUpsideDown: return cameraPosition == .front ? .rightBottom : .leftBottom case .landscapeRight: return cameraPosition == .front ? .topRight : .bottomRight case .faceDown, .faceUp, .unknown: return .leftTop } }
उद्देश्य सी
- (FIRVisionDetectorImageOrientation) imageOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation cameraPosition:(AVCaptureDevicePosition)cameraPosition { switch (deviceOrientation) { case UIDeviceOrientationPortrait: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationLeftTop; } else { return FIRVisionDetectorImageOrientationRightTop; } case UIDeviceOrientationLandscapeLeft: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationBottomLeft; } else { return FIRVisionDetectorImageOrientationTopLeft; } case UIDeviceOrientationPortraitUpsideDown: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationRightBottom; } else { return FIRVisionDetectorImageOrientationLeftBottom; } case UIDeviceOrientationLandscapeRight: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationTopRight; } else { return FIRVisionDetectorImageOrientationBottomRight; } default: return FIRVisionDetectorImageOrientationTopLeft; } }
फिर, मेटाडेटा ऑब्जेक्ट बनाएं:
तीव्र
let cameraPosition = AVCaptureDevice.Position.back // Set to the capture device you used. let metadata = VisionImageMetadata() metadata.orientation = imageOrientation( deviceOrientation: UIDevice.current.orientation, cameraPosition: cameraPosition )
उद्देश्य सी
FIRVisionImageMetadata *metadata = [[FIRVisionImageMetadata alloc] init]; AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionBack; // Set to the capture device you used. metadata.orientation = [self imageOrientationFromDeviceOrientation:UIDevice.currentDevice.orientation cameraPosition:cameraPosition];
-
CMSampleBufferRef
ऑब्जेक्ट और रोटेशन मेटाडेटा का उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं:तीव्र
let image = VisionImage(buffer: sampleBuffer) image.metadata = metadata
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer]; image.metadata = metadata;
- यदि आवश्यक हो, तो छवि को घुमाएँ ताकि उसकी
- फिर, छवि को
process(_:completion:)
विधि में पास करें:तीव्र
textRecognizer.process(visionImage) { result, error in guard error == nil, let result = result else { // ... return } // Recognized text }
उद्देश्य सी
[textRecognizer processImage:image completion:^(FIRVisionDocumentText *_Nullable result, NSError *_Nullable error) { if (error != nil || result == nil) { // ... return; } // Recognized text }];
2. मान्यता प्राप्त पाठ के ब्लॉक से पाठ निकालें
यदि टेक्स्ट पहचान ऑपरेशन सफल होता है, तो यह एकVisionDocumentText
ऑब्जेक्ट लौटाएगा। एक VisionDocumentText
ऑब्जेक्ट में छवि में पहचाना गया पूरा पाठ और ऑब्जेक्ट का एक पदानुक्रम होता है जो मान्यता प्राप्त दस्तावेज़ की संरचना को दर्शाता है: प्रत्येक VisionDocumentTextBlock
, VisionDocumentTextParagraph
, VisionDocumentTextWord
, और VisionDocumentTextSymbol
ऑब्जेक्ट के लिए, आप क्षेत्र में पहचाने गए टेक्स्ट और क्षेत्र के बाउंडिंग निर्देशांक प्राप्त कर सकते हैं।
उदाहरण के लिए:
तीव्र
let resultText = result.text for block in result.blocks { let blockText = block.text let blockConfidence = block.confidence let blockRecognizedLanguages = block.recognizedLanguages let blockBreak = block.recognizedBreak let blockCornerPoints = block.cornerPoints let blockFrame = block.frame for paragraph in block.paragraphs { let paragraphText = paragraph.text let paragraphConfidence = paragraph.confidence let paragraphRecognizedLanguages = paragraph.recognizedLanguages let paragraphBreak = paragraph.recognizedBreak let paragraphCornerPoints = paragraph.cornerPoints let paragraphFrame = paragraph.frame for word in paragraph.words { let wordText = word.text let wordConfidence = word.confidence let wordRecognizedLanguages = word.recognizedLanguages let wordBreak = word.recognizedBreak let wordCornerPoints = word.cornerPoints let wordFrame = word.frame for symbol in word.symbols { let symbolText = symbol.text let symbolConfidence = symbol.confidence let symbolRecognizedLanguages = symbol.recognizedLanguages let symbolBreak = symbol.recognizedBreak let symbolCornerPoints = symbol.cornerPoints let symbolFrame = symbol.frame } } } }
उद्देश्य सी
NSString *resultText = result.text; for (FIRVisionDocumentTextBlock *block in result.blocks) { NSString *blockText = block.text; NSNumber *blockConfidence = block.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *blockRecognizedLanguages = block.recognizedLanguages; FIRVisionTextRecognizedBreak *blockBreak = block.recognizedBreak; CGRect blockFrame = block.frame; for (FIRVisionDocumentTextParagraph *paragraph in block.paragraphs) { NSString *paragraphText = paragraph.text; NSNumber *paragraphConfidence = paragraph.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *paragraphRecognizedLanguages = paragraph.recognizedLanguages; FIRVisionTextRecognizedBreak *paragraphBreak = paragraph.recognizedBreak; CGRect paragraphFrame = paragraph.frame; for (FIRVisionDocumentTextWord *word in paragraph.words) { NSString *wordText = word.text; NSNumber *wordConfidence = word.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *wordRecognizedLanguages = word.recognizedLanguages; FIRVisionTextRecognizedBreak *wordBreak = word.recognizedBreak; CGRect wordFrame = word.frame; for (FIRVisionDocumentTextSymbol *symbol in word.symbols) { NSString *symbolText = symbol.text; NSNumber *symbolConfidence = symbol.confidence; NSArray<FIRVisionTextRecognizedLanguage *> *symbolRecognizedLanguages = symbol.recognizedLanguages; FIRVisionTextRecognizedBreak *symbolBreak = symbol.recognizedBreak; CGRect symbolFrame = symbol.frame; } } } }
अगले कदम
- इससे पहले कि आप क्लाउड एपीआई का उपयोग करने वाले किसी ऐप का उत्पादन शुरू करें, आपको अनधिकृत एपीआई एक्सेस के प्रभाव को रोकने और कम करने के लिए कुछ अतिरिक्त कदम उठाने चाहिए।