web-dev-qa-db-fra.com

Tesseract traineddata ne fonctionne pas dans le projet Swift 3.0 utilisant la version 4.0

J'essaie d'utiliser Tesseract-OCR-iOS dans un nouveau projet Swift 3.0. J'utilise Xcode version 8.1 (8B62). CocoaPods est la version 1.1. 1.

Lorsque j'essaie d'utiliser tesseract.recognize(), mon application se bloque et j'obtiens la sortie suivante dans la console:

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

J'ai trouvé cet article , ce qui semble que j'utilise la mauvaise version de traineddata. J'ai téléchargé tessdata à partir de le repo tesseract-ocr/tessdata , donc je suis perplexe quant à la raison pour laquelle j'aurais un décalage sur les numéros de version.

Toutes les suggestions sur la façon de faire fonctionner Tesseract sont grandement appréciées. Vous trouverez ci-dessous des informations supplémentaires sur ma configuration.

Voici à quoi ressemble mon 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

J'ai fait glisser un dossier tessdata contenant eng.traineddata dans le répertoire racine de mon projet en dehors de Xcode et j'ai fait glisser une référence du Finder vers le navigateur de projet de Xcode.

Tout fonctionne bien jusqu'à ce point. Pas d'erreurs de compilation, gémissement de l'éditeur de liens, etc. Dans un UIViewController j'importe TesseratOCR et je l'appelle comme ceci:

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

Mise à jour J'ai trouvé un lien vers un dépôt de fichiers traineddata pour version 4.0 . J'ai supprimé mon ancien fichier eng.traineddata et l'ai remplacé par celui du repo 4.0. J'obtiens la même erreur référençant la même ligne.

25
Adrian

La version actuelle de eng.traineddata lié ci-dessus sur GitHub ne fonctionnera pas avec la version actuelle du Tesseract-OCR-iOS .

Les instructions d'installation publiées sur GitHub fonctionnent parfaitement si vous avez le bon <language>.traineddata fichier.

J'ai découvert cela après avoir fait glisser le eng.traineddata de le brillant tutoriel de Lyndsey Scott sur Tesseract sur Ray Wenderlich .

Ce dépôt contient le eng.traineddata fichier dont j'avais besoin pour faire fonctionner Tesseract. Je ne sais pas si cela s'applique à toutes les langues.

38
Adrian