使用 4.0 版的 Swift 3.0 项目中的 Tesseract 训练数据不工作

Posted

技术标签:

【中文标题】使用 4.0 版的 Swift 3.0 项目中的 Tesseract 训练数据不工作【英文标题】:Tesseract traineddata not working in Swift 3.0 project using version 4.0 【发布时间】:2017-04-29 02:28:51 【问题描述】:

我正在尝试在新的 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,听起来我使用了错误版本的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.traineddatatessdata 文件夹拖到 Xcode 外部项目的根目录中,并将 reference 从 Finder 拖到 Xcode 的 Project Navigator。

到目前为止一切正常。没有编译器错误、链接器抱怨等。在 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
    

更新 我找到了一个指向repo of traineddata files for version 4.0 的链接。我对旧的 eng.traineddata 文件进行了核对,并将其替换为 4.0 存储库中的文件。引用同一行时出现相同的错误。

【问题讨论】:

您好,您能找到正确的 .traineddata 文件吗? 使用了 4.0 版,但在同一行仍然出现同样的错误 【参考方案1】:

上面链接在 GitHub 上的当前版本的 eng.traineddata 不适用于当前版本的 Tesseract-OCR-iOS。

如果您拥有正确的 &lt;language&gt;.traineddata 文件,则发布在 GitHub 上的安装说明可以完美运行。

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

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

【讨论】:

也适用于克罗地亚语,所以我认为它也适用于其他语言。谢谢阿德里安! 我们可以从 pod 安装 tessdata 吗? 这太棒了! 感谢您节省了我大约 2 小时 27 分钟的生命。【参考方案2】:

我昨天遇到了同样的问题,我认为问题出在字典上,我只是将 github 的字典更改为“Lyndsey Scott 的 Ray Wenderlich 上的精彩 Tesseract 教程”字典(之前发布的行)并且效果很好。 我有 xcode 9.4.1,它以不同于 github 文件的方式识别 lyndsey 文件

【讨论】:

以上是关于使用 4.0 版的 Swift 3.0 项目中的 Tesseract 训练数据不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?

在 Swift 3.0 (Alamofire 4.4.0) 中的一些请求后,Alamofire 停止工作

Swift 3.0 Alamofire 4.0 - Domain=NSURLErrorDomain Code=-999 “取消”

Alamofire 4.0 / Swift 3.0 - 附加多部分表单数据(CSV 文件)

Swift 3.0 迁移后的 Alamofire 错误:“调用中的额外参数”(请求方法)

vue-cli3.0/4.0搭建项目