質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1786閲覧

[swift] Thread 1: Fatal error: Initialization of SwiftyTesseract has failed. Check that the tessdata

Kaguya_4869

総合スコア117

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/03/01 07:49

#質問したいこと
SwiftyTesseractを使って、画像内の文字を読み取りたいのですが、

Thread 1: Fatal error: Initialization of SwiftyTesseract has failed. Check that the tessdata folder has been added to the project as a folder reference and contains the correct .traineddata files for the specified engine mode and language(s).

というエラーが出てきてしまいます。
どうすれば良いでしょうか?
#コード

import UIKit import Photos import SwiftyTesseract final class AddMemoViewController: UITableViewController { // MARK: IBOutlet @IBOutlet weak var titleTextField: UITextField! @IBOutlet weak var contentTextField: UITextField! @IBOutlet weak var imageView: UIImageView! // MARK: Properties private let model = UserDefaultsModel() //contentTextViewの文字列を取得 var textViewString = "" let swiftyTesseract = SwiftyTesseract(language: .japanese) // MARK: Lifecycle static func instance() -> AddMemoViewController { let vc = UIStoryboard(name: "AddMemoViewController", bundle: nil).instantiateInitialViewController() as! AddMemoViewController return vc } override func viewDidLoad() { super.viewDidLoad() let start = Date() guard let image = imageView.image else { return } textViewString = contentTextField.text! swiftyTesseract.performOCR(on: image) { recognizedString in guard let text = recognizedString else { return } self.contentTextField.text = "(self.textViewString)\n(text)" print(text) print("(-start.timeIntervalSinceNow)") } configureUI() } } // MARK: - Configure extension AddMemoViewController { private func configureUI() { tableView.delegate = self navigationItem.title = "メモを追加" } } // MARK: - Model extension AddMemoViewController { private func saveMemo() { guard let title = titleTextField.text, let content = contentTextField.text else { return } // Save memo let memo = Memo(id: UUID().uuidString, title: title, content: content) if let storedMemos = model.loadMemos() { var newMemos = storedMemos newMemos.append(memo) model.saveMemos(newMemos) } else { model.saveMemos([memo]) } // Save image if let image = imageView.image { model.saveImage(id: memo.id, image: image) } // Pop navigationController?.popViewController(animated: true) } } // MARK: - TableView delegate extension AddMemoViewController { override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) switch indexPath.section { case 2: presentImagePicker() case 3: saveMemo() default: break } } } // MARK: - ImagePicker delegate extension AddMemoViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { private func presentImagePicker() { let imagePicker = UIImagePickerController() imagePicker.delegate = self present(imagePicker, animated: true, completion: nil) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { defer { picker.dismiss(animated: true, completion: nil) } guard let image = info[.originalImage] as? UIImage else { return } imageView.image = image } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { picker.dismiss(animated: true, completion: nil) } }

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SwiftyTesseract は使ったことがないので、エラーメッセージからの判断になります。

エラーメッセージには、

Thread 1: Fatal error: Initialization of SwiftyTesseract has failed. Check that the tessdata folder has been added to the project as a folder reference and contains the correct .traineddata files for the specified engine mode and language(s).

とありますが、これは「tessdataを入れているフォルダがプロジェクトに追加されていること、また正しい .traineddata ファイルが含まれていることをチェックしなさい」という意味だと思います。

なので、Xcode で作ったプロジェクトに認識させるために必要なデータが含まれていないのではないでしょうか。

SwiftyTesseractをキーワードに検索すると、Qiitaのこのページがトップに出てきましたので、これで少しは解決に近くのではないでしょうか。
Xcode に必要なフォルダやデータを追加する方法が詳しく書いてあります。

【iOS】オープンソースのOCRライブラリ「SwiftyTesseract」を試してみる

投稿2020/03/02 00:28

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kaguya_4869

2020/03/02 04:18

ご回答ありがとうございます! 教えてくださったことを元に、確認してみたら、 ファイル名を私はtestdataとしてしまっていて、そこを直したらエラーがなくなりました! いつも、ありがとうございます????‍♀️
TsukubaDepot

2020/03/02 04:27

紛らわしいファイル名ですよね。
Kaguya_4869

2020/03/02 10:56

そうですよね。 教えてもらうまで全く気づきませんでした????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問