Google 致力于为黑人社区推动种族平等。查看具体举措
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

आईओएस पर एमएल किट के साथ छवियों में पाठ को पहचानें

आप छवियों में पाठ को पहचानने के लिए एमएल किट का उपयोग कर सकते हैं। एमएल किट में एक सामान्य-उद्देश्य एपीआई दोनों है जो छवियों में पाठ को पहचानने के लिए उपयुक्त है, जैसे सड़क पर हस्ताक्षर का पाठ और दस्तावेजों के पाठ को पहचानने के लिए एक एपीआई अनुकूलित। सामान्य प्रयोजन के एपीआई में डिवाइस और क्लाउड-आधारित मॉडल दोनों हैं। दस्तावेज़ पाठ मान्यता केवल क्लाउड-आधारित मॉडल के रूप में उपलब्ध है। क्लाउड और ऑन-डिवाइस मॉडल की तुलना के लिए अवलोकन देखें।

शुरू करने से पहले

  1. यदि आपने पहले से ही अपने ऐप में फायरबेस को नहीं जोड़ा है, तो आरंभ किए गए गाइड में दिए गए चरणों का पालन करके ऐसा करें।
  2. अपने पॉडफाइल में एमएल किट लाइब्रेरी को शामिल करें:
    pod 'Firebase/MLVision', '6.25.0'
    # If using an on-device API:
    pod 'Firebase/MLVisionTextModel', '6.25.0'
    
    अपने प्रोजेक्ट के पॉड्स को स्थापित या अपडेट करने के बाद, अपने .xcworkspace का उपयोग करके अपने Xcode प्रोजेक्ट को खोलना सुनिश्चित करें।
  3. आपके एप्लिकेशन में, Firebase आयात करें:

    तीव्र

    import Firebase

    उद्देश्य सी

    @import Firebase;
  4. यदि आप क्लाउड-आधारित मॉडल का उपयोग करना चाहते हैं, और आपने अपने प्रोजेक्ट के लिए क्लाउड-आधारित API को पहले से सक्षम नहीं किया है, तो अभी करें:

    1. फायरबेस कंसोल के एमएल किट एपीआई पेज खोलें।
    2. यदि आपने पहले से ही अपने प्रोजेक्ट को ब्लेज़ प्लान में अपग्रेड नहीं किया है, तो ऐसा करने के लिए अपग्रेड पर क्लिक करें। (आपको केवल तभी अपग्रेड करने के लिए प्रेरित किया जाएगा जब आपका प्रोजेक्ट ब्लेज़ प्लान में न हो।)

      केवल ब्लेज़ स्तर की परियोजनाएँ क्लाउड-आधारित API का उपयोग कर सकती हैं।

    3. यदि क्लाउड-आधारित API पहले से सक्षम नहीं हैं, तो क्लाउड-आधारित API सक्षम करें पर क्लिक करें

    यदि आप केवल ऑन-डिवाइस मॉडल का उपयोग करना चाहते हैं, तो आप इस चरण को छोड़ सकते हैं।

अब आप छवियों में पाठ को पहचानना शुरू करने के लिए तैयार हैं।

इनपुट छवि दिशानिर्देश

  • एमएल किट के लिए पाठ को सही ढंग से पहचानने के लिए, इनपुट छवियों में वह पाठ होना चाहिए जो पर्याप्त पिक्सेल डेटा द्वारा दर्शाया गया हो। आदर्श रूप से, लैटिन पाठ के लिए, प्रत्येक वर्ण कम से कम 16x16 पिक्सेल होना चाहिए। चीनी, जापानी और कोरियाई पाठ (केवल क्लाउड-आधारित API द्वारा समर्थित) के लिए, प्रत्येक वर्ण 24x24 पिक्सेल होना चाहिए। सभी भाषाओं के लिए, आमतौर पर वर्णों के 24x24 पिक्सेल से बड़े होने का कोई सटीकता लाभ नहीं है।

    इसलिए, उदाहरण के लिए, एक 640x480 छवि एक व्यवसाय कार्ड को स्कैन करने के लिए अच्छी तरह से काम कर सकती है जो छवि की पूरी चौड़ाई पर कब्जा कर लेती है। पत्र के आकार के कागज पर मुद्रित दस्तावेज़ को स्कैन करने के लिए, 720x1280 पिक्सेल छवि की आवश्यकता हो सकती है।

  • खराब छवि फोकस पाठ पहचान सटीकता को नुकसान पहुंचा सकता है। यदि आपको स्वीकार्य परिणाम नहीं मिल रहे हैं, तो उपयोगकर्ता को छवि को पुनः प्राप्त करने के लिए कहें।

  • यदि आप एक वास्तविक समय के अनुप्रयोग में पाठ को पहचान रहे हैं, तो आप इनपुट छवियों के समग्र आयामों पर भी विचार कर सकते हैं। छोटी छवियों को तेज़ी से संसाधित किया जा सकता है, इसलिए विलंबता को कम करने के लिए, कम रिज़ॉल्यूशन पर छवियों को कैप्चर करें (उपरोक्त सटीकता की आवश्यकताओं को ध्यान में रखते हुए) और सुनिश्चित करें कि पाठ यथासंभव छवि पर कब्जा कर लेता है। वास्तविक समय के प्रदर्शन को बेहतर बनाने के लिए टिप्स भी देखें।


छवियों में पाठ को पहचानें

किसी उपकरण या क्लाउड-आधारित मॉडल का उपयोग करके छवि में पाठ को पहचानने के लिए, नीचे दिए गए पाठ पहचानकर्ता को चलाएं।

1. पाठ पहचानकर्ता चलाएँ

छवि को 'UIImage' या `CMSampleBufferRef 'के रूप में` VisionTextRecognizer` की `प्रक्रिया (_: पूर्णता:)` विधि के रूप में पास करें:
  1. या तो 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];
    
  2. UIImage या CMSampleBufferRef का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएँ।

    UIImage उपयोग करने के लिए:

    1. यदि आवश्यक हो, तो छवि को घुमाएं ताकि उसकी छवि का imageOrientation गुण .up
    2. सही ढंग से घुमाए गए UIImage का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएं। किसी भी रोटेशन मेटाडेटा को निर्दिष्ट न करें - डिफ़ॉल्ट मान, .topLeft , का उपयोग किया जाना चाहिए।

      तीव्र

      let image = VisionImage(image: uiImage)

      उद्देश्य सी

      FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];

    CMSampleBufferRef उपयोग करने के लिए:

    1. CMSampleBufferRef बफर में निहित छवि डेटा के उन्मुखीकरण को निर्दिष्ट करने वाली एक VisionImageMetadata ऑब्जेक्ट बनाएँ।

      छवि अभिविन्यास प्राप्त करने के लिए:

      तीव्र

      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];
    2. CMSampleBufferRef ऑब्जेक्ट और रोटेशन मेटाडेटा का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएँ:

      तीव्र

      let image = VisionImage(buffer: sampleBuffer)
      image.metadata = metadata

      उद्देश्य सी

      FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer];
      image.metadata = metadata;
  3. फिर, process(_:completion:) लिए छवि को पास करें 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;
    }
  }
}

वास्तविक समय के प्रदर्शन को बेहतर बनाने के लिए टिप्स

यदि आप वास्तविक समय में एप्लिकेशन को पहचानने के लिए ऑन-डिवाइस मॉडल का उपयोग करना चाहते हैं, तो सर्वोत्तम फ्रैमरेट्स प्राप्त करने के लिए इन दिशानिर्देशों का पालन करें:

  • थ्रॉटल पाठ पहचानकर्ता को कॉल करता है। यदि एक नया वीडियो फ्रेम उपलब्ध हो जाता है जबकि पाठ पहचानकर्ता चल रहा है, तो फ्रेम को छोड़ दें।
  • यदि आप इनपुट इमेज पर ग्राफिक्स को ओवरले करने के लिए टेक्स्ट पहचानकर्ता के आउटपुट का उपयोग कर रहे हैं, तो पहले एमएल किट से परिणाम प्राप्त करें, फिर एक ही चरण में छवि और ओवरले को रेंडर करें। ऐसा करने से, आप प्रत्येक इनपुट फ्रेम के लिए केवल एक बार प्रदर्शन सतह को प्रस्तुत करते हैं। एक उदाहरण के लिए शोकेस नमूना ऐप में प्रीव्यूऑवरलेव्यू और FIRDetectionOverlayView कक्षाएं देखें।
  • कम रिज़ॉल्यूशन पर छवियों को कैप्चर करने पर विचार करें। हालांकि, इस एपीआई की छवि आयाम आवश्यकताओं को भी ध्यान में रखें।

अगला कदम


दस्तावेजों की छवियों में पाठ को पहचानें

दस्तावेज़ के पाठ को पहचानने के लिए, क्लाउड-आधारित दस्तावेज़ पाठ पहचानकर्ता को कॉन्फ़िगर करें और चलाएं जैसा कि नीचे वर्णित है।

नीचे वर्णित दस्तावेज़ पाठ पहचान एपीआई, एक इंटरफ़ेस प्रदान करता है जो दस्तावेजों की छवियों के साथ काम करने के लिए अधिक सुविधाजनक है। हालांकि, यदि आप विरल पाठ एपीआई द्वारा दिए गए इंटरफ़ेस को पसंद करते हैं, तो आप घने पाठ मॉडल का उपयोग करने के लिए क्लाउड पाठ पहचानकर्ता को कॉन्फ़िगर करके दस्तावेजों को स्कैन करने के बजाय इसका उपयोग कर सकते हैं।

दस्तावेज़ पाठ मान्यता API का उपयोग करने के लिए:

1. पाठ पहचानकर्ता चलाएँ

छवि को UIImage या CMSampleBufferRef के रूप में VisionDocumentTextRecognizer की process(_:completion:) विधि से पास करें:

  1. VisionDocumentTextRecognizer कहकर cloudDocumentTextRecognizer का एक उदाहरण प्राप्त करें:

    तीव्र

    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];
    
  2. UIImage या CMSampleBufferRef का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएँ।

    UIImage उपयोग करने के लिए:

    1. यदि आवश्यक हो, तो छवि को घुमाएं ताकि उसकी छवि का imageOrientation गुण .up
    2. सही ढंग से घुमाए गए UIImage का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएं। किसी भी रोटेशन मेटाडेटा को निर्दिष्ट न करें - डिफ़ॉल्ट मान, .topLeft , का उपयोग किया जाना चाहिए।

      तीव्र

      let image = VisionImage(image: uiImage)

      उद्देश्य सी

      FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];

    CMSampleBufferRef उपयोग करने के लिए:

    1. CMSampleBufferRef बफर में निहित छवि डेटा के अभिविन्यास को निर्दिष्ट करने वाली एक VisionImageMetadata ऑब्जेक्ट बनाएँ।

      छवि अभिविन्यास प्राप्त करने के लिए:

      तीव्र

      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];
    2. CMSampleBufferRef ऑब्जेक्ट और रोटेशन मेटाडेटा का उपयोग करके एक VisionImage ऑब्जेक्ट बनाएँ:

      तीव्र

      let image = VisionImage(buffer: sampleBuffer)
      image.metadata = metadata

      उद्देश्य सी

      FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer];
      image.metadata = metadata;
  3. फिर, इस process(_:completion:) को छवि पास करें 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 । एक 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;
      }
    }
  }
}

अगला कदम