Tesseract traineddata no funciona en el proyecto Swift 3.0 con la versión 4.0


Estoy intentando usar Tesseract-OCR-iOS en un nuevo proyecto Swift 3.0. Estoy usando Xcode Versión 8.1 (8B62). CocoaPods es la versión 1.1.1.

Cuando intento usar tesseract.recognize(), mi aplicación se bloquea y obtengo la siguiente salida en la consola:

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

Encontré este post, que suena que estoy usando la versión incorrecta de traineddata. He descargado tessdata desde el repositorio tesseract-ocr/tessdata, así que estoy desconcertado en cuanto a por qué tendría un desajuste en la versión numero.

Cualquier sugerencia de cómo hacer que Tesseract funcione es muy apreciada. A continuación se muestra información adicional re: mi configuración.

Así es como se ve mi 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

He arrastrado una carpeta tessdata que contiene eng.traineddata en el directorio raíz de mi proyecto fuera de Xcode y arrastrado una referencia desde Finder al Navegador de proyectos de Xcode.

Todo funciona bien hasta este punto. No hay errores de compilador, lloriqueo del enlazador, etc. En un UIViewController estoy importando TesseratOCR y llamándolo así:

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

Actualización Encontré un enlace a un repositorio de archivos traineddata para la versión 4.0. Bombardeé a mi viejo eng.traineddata y lo reemplazó con el del repositorio 4.0. Obtengo el mismo error haciendo referencia a la misma línea.

Author: Adrian, 2016-12-14

2 answers

La versión actual de eng.traineddata enlazada anteriormente en GitHub no funcionará con la versión actual de Tesseract-OCR-iOS.

Las instrucciones de instalación publicadas en GitHub funcionan perfectamente si tienes el archivo <language>.traineddata correcto.

Descubrí esto después de arrastrar el eng.traineddata desde el brillante tutorial Tesseract de Lyndsey Scott sobre Ray Wenderlich.

Este repositorio contiene el archivo eng.traineddata que necesitaba para que Tesseract funcionara. No estoy seguro si eso aplica a todos los idiomas.

 34
Author: Adrian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 16:20:15

Tuve el mismo problema ayer, creo que el problema es con el diccionario, solo cambio el diccionario de github para el diccionario "Lyndsey Scott brillante Tesseract tutorial on Ray Wenderlich" (publicado líneas antes)y funciona muy bien. Tengo xcode 9.4.1 y reconoce el archivo lyndsey de una manera diferente que el archivo github

 -1
Author: user10415531,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-25 21:05:18