Tesseract traineddata 在使用 4.0 版的 Swift 3.0 项目中不起作用

Tesseract traineddata not working in Swift 3.0 project using version 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

我找到了 this post, which sounds I'm using the wrong version of traineddata. I downloaded tessdata from the tesseract-ocr/tessdata repo,所以我很困惑为什么我的版本号不匹配。

非常感谢任何有关如何使 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.traineddatatessdata 文件夹拖到 Xcode 之外的项目根目录中,并拖了一个 reference从 Finder 到 Xcode 的项目导航器。

到目前为止一切正常。没有编译器错误,linker 抱怨等等。在 UIViewController 中,我正在导入 TesseratOCR 并这样调用它:

// 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
    }
}

更新 我找到了一个 link 到一个 repo of traineddata files for version 4.0。我核对了我的旧 eng.traineddata 文件并将其替换为 4.0 存储库中的文件。我在引用同一行时遇到相同的错误。

上面 GitHub 上链接的 eng.traineddata 的当前版本不能与 Tesseract-OCR-iOS 的当前版本一起使用。

如果您有正确的 <language>.traineddata 文件,GitHub 上发布的安装说明将完美运行。

我从 Lyndsey Scott's brilliant Tesseract tutorial on Ray Wenderlich 拖动 eng.traineddata 后发现了这个。

This repo 包含让 Tesseract 工作所需的 eng.traineddata 文件。我不确定这是否适用于所有语言。

我昨天遇到了同样的问题,我认为问题出在字典上,我只是将 github 的字典更改为 "Lyndsey Scott's brilliant Tesseract tutorial on Ray Wenderlich" 字典(之前发布的行)并且它工作得很好。 我有 xcode 9.4.1,它以不同于 github 文件

的方式识别 lyndsey 文件