使用 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.traineddata
的 tessdata
文件夹拖到 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。
如果您拥有正确的 <language>.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 文件)