¿Qué opciones de OCR existen más allá de Tesseract? [cerrado]


He usado Tesseract un poco y sus resultados dejan mucho que desear. Actualmente estoy detectando imágenes muy pequeñas (35x15, sin borde, pero he intentado agregar una con imagemagick sin ventaja de ocr); van desde 2 caracteres hasta 5 y son una fuente bastante confiable, sin embargo, los caracteres son lo suficientemente variables como para que simplemente usar una suma de verificación de tamaño de imagen o tal no va a funcionar.

Qué opciones existen para OCR además de seguir con Tesseract o hacer un entrenamiento personalizado completo ¿de ella? Además, sería MUY útil si esto fuera compatible con el alojamiento de estilo Heroku (al menos donde puedo compilar los contenedores y empujarlos).

Author: Millie Smith, 2012-03-13

2 answers

He usado con éxito GOCR en el pasado para OCR de imágenes pequeñas. Yo diría que la precisión fue de alrededor del 85%, después de configurar las opciones de escala de grises correctamente, en fuentes bastante regulares. Falla miserablemente cuando las fuentes se complican y tiene problemas con los diseños multilínea.

También echa un vistazo a Ocropus, que es mantenido por Google. Está relacionado con Tesseract, pero por lo que entiendo, su motor OCR es diferente. Con solo los modelos predeterminados incluidos, logra cerca del 99% de precisión en imágenes de alta calidad, maneja el diseño bastante bien y proporciona salida HTML con información sobre el formato y las líneas. Sin embargo, en mi experiencia, su precisión es muy baja cuando la calidad de la imagen no es lo suficientemente buena. Dicho esto, el entrenamiento es relativamente simple y es posible que desee darle una oportunidad.

Ambos son fácilmente llamables desde la línea de comandos. El uso de GOCR es muy sencillo; simplemente escriba gocr -h y debería tener toda la información que necesita necesitar. Ocropus es un poco más complicado; aquí hay un ejemplo de uso, en Ruby:

require 'fileutils'
tmp = 'directory'
file = 'file.png'

`ocropus book2pages #{tmp}/out #{file}`
`ocropus pages2lines #{tmp}/out`
`ocropus lines2fsts #{tmp}/out`
`ocropus buildhtml #{tmp}/out > #{tmp}/output.html`

text = File.read("#{tmp}/output.html")
FileUtils.rm_rf(tmp)
 17
Author: user2398029,
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
2012-03-13 19:44:22

Usamos OCR XTR Lite de Vividata en mi oficina. Utiliza el motor ScanSoft y es muy preciso, pero no es una solución gratuita. Actualmente se está escribiendo desde bash y procesando de 75.000 a 150.000 páginas al día con él. La precisión es casi perfecta y gira automáticamente las imágenes para determinar la orientación del OCR.

 5
Author: Brian Snipes,
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
2012-03-14 14:13:37