web-dev-qa-db-ja.com

Tesseract traineddataが動作しないSwift 3.0バージョン4.0を使用するプロジェクト

新しいSwift 3.0プロジェクトで Tesseract-OCR-iOS を使用しようとしています。Xcodeバージョン8.1(8B62)を使用しています。CocoaPodsはバージョン1.1です。 1。

tesseract.recognize()を使用しようとすると、アプリがクラッシュし、コンソールに次の出力が表示されます。

actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file tessdatamanager.cpp, line 53

この投稿 が見つかりました。これは、間違ったバージョンのtraineddataを使用しているように聞こえます。 the tesseract-ocr/tessdata repo からtessdataをダウンロードしたので、バージョン番号が一致しない理由について困惑しています。

Tesseractを機能させるための提案は大歓迎です。以下は追加情報です:私のセットアップ。

私のPodfileは次のようになります。

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'TesseractDemo' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for TesseractDemo
pod 'TesseractOCRiOS', '4.0.0'

end

eng.traineddataを含むtessdataフォルダーをXcodeの外部のプロジェクトのルートディレクトリにドラッグし、referenceをFinderからXcodeのProject Navigatorにドラッグしました。

ここまではすべて正常に機能します。コンパイラエラー、リンカの鳴き声などはありません。UIViewControllerTesseratOCRをインポートし、次のように呼び出しています。

// MARK: - OCR Methods
func scanImage(image: UIImage) {
    if let tesseract = G8Tesseract(language: "eng") {
        tesseract.delegate = self
        tesseract.image = imageToScan?.g8_blackAndWhite()
        tesseract.recognize()

        textView.text = tesseract.recognizedText
    }
}

Updateversion 4.0 のトレーニング済みデータファイルのリポジトリへのリンクが見つかりました。古いeng.traineddataファイルを削除し、4.0リポジトリのファイルに置き換えました。同じ行を参照すると同じエラーが発生します。

25
Adrian

上記のGitHubにリンクされているeng.traineddataの現在のバージョンは、現在のバージョンの Tesseract-OCR-iOS では機能しません。

適切な<language>.traineddataファイルがあれば、GitHubに掲載されているインストール手順は完璧に機能します。

eng.traineddataLyndsey Scottのレイウェンダリッヒに関するすばらしいTesseractチュートリアル からドラッグした後、これを発見しました。

このレポ には、Tesseractを機能させるために必要なeng.traineddataファイルが含まれています。それがすべての言語に当てはまるかどうかはわかりません。

38
Adrian