Tesseract trainingdata не работает в проекте Swift 3.0 с использованием версии 4.0

Я пытаюсь использовать Tesseract-OCR-iOS в новом проекте Swift 3.0. Я использую Xcode Version 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. Я загрузил tessdata из tessdata -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

Я перетащил папку tessdata содержащую eng.traineddata в корневую директорию моего проекта за пределами Xcode и перетащил ссылку из Finder в Xcode Project Navigator.

До сих пор все работает нормально. Никаких ошибок компилятора, нытье в линкере и т.д. В UIViewController я импортирую TesseratOCR и 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
    }
}

Обновление. Я нашел ссылку на репо обучаемых файлов данных для версии 4.0. Я обнародовал свой старый файл eng.traineddata и заменил его на репозиторий 4.0. Я получаю ту же ошибку, ссылаясь на одну и ту же строку.

Ответ 1

Текущая версия eng.traineddata связанная выше на GitHub, не будет работать с текущей версией Tesseract-OCR-iOS.

Инструкции по установке, размещенные на GitHub, отлично работают, если у вас есть правильный файл <language>.traineddata.

Я обнаружил это после перетаскивания eng.traineddata из eng.traineddata Scott блестящего учебника Tesseract на Ray Wenderlich.

Это репо содержит файл eng.traineddata который мне нужен, чтобы заставить Tesseract работать. Я не уверен, что это относится ко всем языкам.

Ответ 2

У меня была такая же проблема вчера, я понимаю, что проблема связана со словарем, я просто изменяю словарь github для "Lyndsey Scott" блестящего учебника Tesseract в словаре Ray Wenderlich (ранее размещал строки), и он работает очень хорошо. У меня есть xcode 9.4.1, и он распознает файл lyndsey иначе, чем файл github