Обнаружение текста в Google Cloud Vision на устройстве iOS - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь обнаружить текст на изображении, полученном с камеры устройства, а также изображение, полученное из галереи. (Для камеры я использую коды камеры Apple-AVFoundation -)

Я могу обнаружить текст на изображении, выбранном из галереи. Но, тем не менее, когда я делаю снимок с камеры, одни и те же коды не работают одинаково. Я предсказываю, что облачное зрение хорошо распознается на изображениях, которые редактируются (сохраняются). Или у меня нет другой идеи.

Когда я делаю снимок и пытаюсь определить этот код, он не работает. Но когда я сохраняю ту же картинку и выбираю ее из галереи, она работает отлично. Здесь я делюсь кодами, надеюсь, вы можете мне помочь.

Коды ImagePicker, которые работают отлично:

    @objc internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
        imageView.image = editedImage
        let vision = Vision.vision()
        let textRecognizer = vision.onDeviceTextRecognizer()
        let visionImage = VisionImage(image: editedImage)
            textRecognizer.process(visionImage) { (features, error) in
                features?.blocks.forEach({ (block) in
                    print(block.text)
                })
            }
        dismiss(animated: true, completion: {
        UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
    })
}

Съемка кодов кнопок изображения, которые не работают хорошо:

    @IBAction func takePicture(_ sender: Any)  {
    cameraController.captureImage {(image, error) in
        guard let image = image else {
            print(error ?? "Image capture error")
            return
        }
        self.imageView.image = image
        let vision = Vision.vision()
        let textRecognizer = vision.onDeviceTextRecognizer()
        let visionImage = VisionImage(image: image)
            textRecognizer.process(visionImage) { (features, error) in
                features?.blocks.forEach({ (block) in
                    print(block.text)
              })
          }
    }
}
...