Сбой распознавания текста Firebase MLKit с фронтальной камерой iOS - PullRequest
0 голосов
/ 21 сентября 2018

Я добавил Firebase MLKit SDK в соответствии с документом, тексты распознаются правильно с фотографией back camera.Когда я использую захваченную фотографию с фронтальной камеры, тексты обнаруживаются неправильно, и появляются плохие результаты.

 @IBAction func findTextDidTouch(_ sender: UIButton) {
    runTextRecognition(with:imageView.image!)
  }

func runCloudTextRecognition(with image: UIImage) {
    let visionImage = VisionImage(image: image)
    cloudTextDetector.detect(in: visionImage) { features, error in
      if let error = error {
        print("Received error: \(error)")
        return
      }
      self.processCloudResult(from: features, error: error)
    }
  }


  for text in features {
      if let block = text as? VisionTextBlock {
        print(block.text)
      }
    }

Я не могу понять.Нужно ли мне менять камеру или комплект Firebase ml?

1 Ответ

0 голосов
/ 26 сентября 2018

Вам также необходимо указать ориентацию изображения.Добавление фрагмента кода может вам помочь.

let visionImage = VisionImage(image: image)

   let metadata = VisionImageMetadata()
        metadata.orientation = self.detectorOrientation(in: image)
        visionImage.metadata = metadata
 textDetector.process(visionImage) { (features, error) in
            if features != nil
            {
                self.processResult(from: [features!], error: error)
            }
        }
//Detects orientation of the selected or captured image
    func detectorOrientation(in image: UIImage) -> VisionDetectorImageOrientation {
        switch image.imageOrientation {
        case .up:
            return .topLeft
        case .down:
            return .bottomRight
        case .left:
            return .leftBottom
        case .right:
            return .rightTop
        case .upMirrored:
            return .topRight
        case .downMirrored:
            return .bottomLeft
        case .leftMirrored:
            return .leftTop
        case .rightMirrored:
            return .rightBottom
        }
    }
...