• 締切済み

swiftでOCRを利用したサンプルコードを書いて

http://blog.isana.net/2014/08/ios.html 上記サイトを参考にobjective-Cをswiftに書き換えているのですが、どうしてもエラーが取れない場所があり、困っています。以下に記述するので、回答をお願いします。 import UIKit class ViewController: UIViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var Textview: UITextView! @IBOutlet weak var Imageview: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func Camera(sender: AnyObject) { var imagePickerController: UIImagePickerController = UIImagePickerController() //デリゲート指定 imagePickerController.delegate = self //トリミング指定 imagePickerController.allowsEditing = true //カメラの有無確認 if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Rear){ //カメラ指定 imagePickerController.sourceType = .Camera } else { //アルバム指定 imagePickerController.sourceType = .SavedPhotosAlbum } //コントローラ起動 self.presentViewController(imagePickerController, animated: true, completion: nil) } func ImagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { /*ここから //イメージをメモリに保存 var selectedImage:UIImage self.selectedImage = info objectForKey:UIImagePickerControllerEditedImage //イメージビューに画像をセット self.Imageview.image = self.selectedImage ここ*/ //親ビューに戻る self.dismissViewControllerAnimated(true, completion: nil) //テキストを空に self.Textview.text = nil //インジケータ開始 var spinner: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) spinner.center = CGPointMake(160, 240) spinner.hidesWhenStopped = true view.addSubview(spinner) spinner.startAnimating() //OCR実行 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { var tesseract: Tesseract = Tesseract(language: "eng") tesseract.image = selectedImage tesseract.recognize() dispatch_async(dispatch_get_main_queue(), { self.Textview.text = tesseract.recognizedText spinner.stopAnimating() }) }) } } コメントアウトで示した部分の書き換えがどうしてもわからないです。 また、エラーが出てないだけでうまく動作がしないと思われる部分があれば、教えていただけると助かります。 回答宜しくお願いします。

みんなの回答

回答No.3

No.1の補足の質問について回答します。 > すみません、selectedImageのあるところすべてエラーを吐くのですが、何が間違っているのでしょうか…? 各エラーがどの行で出力されているのか正確な場所を書いてもらわないと わかりませんが、とりあえず(1)については、No.1で指摘した通り selectedImageをメソッドの外でプロパティとして定義してないからだと 思います。 プロパティの意味がわからなければ、購入した参考書を読み直すか、 http://blogios.stack3.net/swift/classproperty とかを参考にしてください。 また、このプロパティを定義する際に、オプショナル型についての 知識もおそらく必要になってくると思います。 というか、swiftを使うなら一番重要な必須知識です。 これも参考書を読み直すか、 http://qiita.com/cotrpepe/items/518c4476ca957a42f5f1 を読んで「!」や「?」の意味を理解してください。

回答No.2

No.1です。 誤記訂正します。 info[UIImagePickerControllerOriginalImage] ↓ info[UIImagePickerControllerEditedImage] です。

回答No.1

気づいた部分をコメントします。 > var selectedImage:UIImage 元のソースでは、selectedImageは、プロパティとして定義されていますから、 この変数の定義はメソッドの外に書く必要があります。 > self.selectedImage = info objectForKey:UIImagePickerControllerEditedImage objectForKeyは、NSDictionaryの要素を取得するメソッドですから、 info[UIImagePickerControllerOriginalImage] と書きます。 (参考) http://qiita.com/kitanoow/items/9ee68463755c5b59c377

shinrin4
質問者

補足

すみません、selectedImageのあるところすべてエラーを吐くのですが、何が間違っているのでしょうか…? (1)value of type 'view controller' has no member 'selectedImage' (2)Invalid use of '()' to call a value of non-fiction type 'String' (3)Cannot assign value of type 'String' to type 'UIImage!' 以上のエラーメッセージがでてきます

関連するQ&A