2016-08-22 9 views
0

私のアプリでTesseract OCRを使用しています。私は、このようなこの1 5 text imageTesseract OCR 4.0の致命的なエラーを処理する方法iOS Swift

として非常に鮮明な画像を使用する場合は、ギャラリーの画像についてはそれが正常に働いています。しかし、いくつかのイメージのため、それは私にエラーと私のiPhoneでのアプリのクラッシュを与えます。私はカメラの画像を使用すると、ほとんど常にアプリケーションがクラッシュします。今、私はSwift 2.2の致命的なエラーをどのように処理するかを知りたいと思います。アプリをクラッシュさせる代わりに、イメージが読めないというアラートを表示するにはどうすればよいですか。私は{}をキャッチしようとしましたが、動作しません。 recognizedText: 致命的なエラー:HERE

func checkWithOCR() throws{ 

    let ocrSample = myImageView.image //image picker from gallery 

    //FATAL ERROR ON THIS LINE. 
    tesseract.image = ocrSample!.fixOrientation().g8_blackAndWhite() 
     if(tesseract.recognize()){ 
      let recognizedText = tesseract.recognizedText 
      if recognizedText != nil{ 
       print("recognizedText: \(recognizedText)") 

       let trimmedText = String(recognizedText.characters.filter { !" \n\t\r,".characters.contains($0) }) 
       myImageView.image = tesseract.image 
       convertCurrency(Float(trimmedText)!) //convert the tesseract text 
      } 
     } 

    SwiftSpinner.hide() 
} 

はERRORされるオプションの値

私は上記の行には何の価値がなかったとして、このエラーが発生した理由を私は知っているのアンラップしながら、予想外にnilを発見しました。このエラーがクラッシュの代わりに発生した場合、アラートボックスを表示するにはどうすればよいですか。それはUIImageView

答えて

0

image動作しない

P.S: I tried if (ocrSample!.fixOrientation().g8_blackAndWhite() != nil) {} 

は、それが価値を持つことができます(画像が含まれている)、または、それはnilことができることを意味し、オプションUIImageです。だから、

、あなたが言っている:

let ocrSample = myImageView.image 

あなたocrSampleは今UIImageオプションである、あなたは、あなたがそれを使用する前にアンラップするために持っています。

あなたが言う:

tesseract.image = ocrSample!.fixOrientation().g8_blackAndWhite() 

あなたはちょうどかかわらず、それがnilかどうかというのは、オプションのラップを解除し、使用するコンパイラを語っていることを意味し、!を使用してocrSampleをアンラップ力です。これは、nilが含まれている場合、アンラップされたオプションを使用しようとするとクラッシュします。あなたは何ができるか

はそうのようなif letを使用してocrSampleアンラップです:

ここ
func checkWithOCR() throws{ 

    if let ocrSample = myImageView.image { 
     tesseract.image = ocrSample.fixOrientation().g8_blackAndWhite() 
     if(tesseract.recognize()){ 
      let recognizedText = tesseract.recognizedText 
      if recognizedText != nil{ 
       print("recognizedText: \(recognizedText)") 

       let trimmedText = String(recognizedText.characters.filter { !" \n\t\r,".characters.contains($0) }) 
       myImageView.image = tesseract.image 
       convertCurrency(Float(trimmedText)!) //convert the tesseract text 
      } 
     } 
     SwiftSpinner.hide() 
    } else { 
     //No value could be found, do your error handling here 
    } 
} 

if let ocrSample = myImageView.image 

あなたは、それが成功した場合、ocrSamplemyImageView.imageの値をアンラップしようとしていますocrSamplenilではないことがわかっていて、それ以降使用することができます。失敗した場合は、エラー処理を行い、アラートビューを表示し、必要な処理を実行できます。

希望はあなたを助けます。

関連する問題