pgan
pgan

Reputation: 1

Vision image process returns nil ML Kit Firebase

I am trying to build a text recognizer app in iOS with the Firebase ML Kit. I have tried following some tutorials, but no luck. I keep getting the following error at the line indicated (return self.result):

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

I am still very new to Swift/xcode and firebase so any help would be greatly appreciated!

var result: VisionText!

    var textRecognizer: VisionTextRecognizer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let vision = Vision.vision()
        textRecognizer = vision.cloudTextRecognizer()
        
        imageResult.image = UIImage(named: "sampletext")
        
        print(textRecognition(image: imageResult.image!))
        
        textResult.text += scantext
    }
    
    
    func textRecognition(image: UIImage) -> VisionText{
        
        let visionImage = VisionImage(image: image)
        textRecognizer.process(visionImage) { (result, error) in guard error == nil, case self.result =  result else {
            print("oops")

            return
        }
        print("oops")
        }
        return self.result \\ ERROR

    }

EDIT

I made sure to implement a correct way to unwrap an optional. My problem is that the Firebase MLVision process does not return anything, the result is nil. Not sure if I am going about the method incorrectly. Here is my updated code with some small changes.

var scannedresult: VisionText!

    var textRecognizer: VisionTextRecognizer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let vision = Vision.vision()
        textRecognizer = vision.cloudTextRecognizer()
        
        imageResult.image = UIImage(named: "sampletext")
        print("oops")
        print(textRecognition(image: imageResult.image!))
        
//        textResult.text += scannedresult.text
    }
    
    
    func textRecognition(image: UIImage) {
        
        let visionImage = VisionImage(image: image)
        textRecognizer.process(visionImage) { (result, error) in guard error == nil, let result = result else { print("oops")
            return }
            
            self.scannedresult = result
        }
    }

Upvotes: 0

Views: 517

Answers (1)

TheMachoD
TheMachoD

Reputation: 21

"Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value"

^This error occurs when you are trying to access a value for an option variable, and the value is nil. You have to unwrap it safely. There are five ways to unwrap an optional. This is my preferred way:

guard let result = self.result else { return }
return result

the guard statement will cause your code to skip over the next lines in the block if there is no value, or NIL, in the result.

Here is a quick read on all the ways to unwwrap your optionals w/ examples

Upvotes: 1

Related Questions