Ver Mensaje Individual
  #1  
Antiguo 01-09-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Tesseract OCR (Optical Character Recognition) desde Delphi

Hola a todos,

No sé si conocéis el proyecto Tesseract OCR (Optical Character Recognition). Si es así, probablemente, sabéis que no parece sencillo encontrar una forma de trabajar con Tesseract desde Delphi, aparte de cierto componente de WinSoft. Pues bien, es el caso que, por razones que no vienen al caso, he dado unas cuentas vueltas a este asunto, hasta que, por fin, he llevado a cabo una clase para Delphi que permite utilizar Tesseract OCR.

No existen DLL's de Tesseract desde la versión 2.0. Hasta donde yo llego, sólo es posible conseguir un archivo ejecutable que funciona a través de la línea de comandos. Ahora bien, he pensado que podría utilizar este ejecutable, pero, de la forma más transparente posible. Hacer esto, aunque acaso no muy elegante, aporta alguna ventaja, como, en principio, poder utilizar siempre la última versión de Tesseract. Además el asunto parece funcionar razonablemente bien, y, yo no pretendo esconder de ninguna manera este "diseño", pues lo considero hasta "legítimo".

Pues bien, el caso es que he conseguido mi objetivo, aunque, centrándome en el proyecto en que tenía pensado incorporar la clase de que hablo. ¿Qué quiere esto decir? Está documentado en la propia clase, pero, básicamente, significa que el proceso de Tesseract es ejecutado de forma secuencial, esto es, no he sido capaz de utilizar hilos, aunque lo he hecho así al principio, lo cierto es que el proyecto al que la clase va destinada es un poco tiquismiquis: se trata de una DLL que se ejecuta en un programa "host", y, esto causa algunas veces (como en este caso) problemas raros, incomprensibles y de complicada depuración.

Sin embargo, aunque el proceso de Tesseract no se ejecuta en su propio hilo, sí que se hace de forma que la aplicación "responda" al usuario, y, de hecho, la clase permite cancelar la tarea que estemos llevando a cabo. En fin, no me quiero enrrollar más, simplemente, me ha apetecido compartir esto con vosotros. En el archivo que a continuación enlazaré podréis encontrar la clase "TTesseract" (con comentarios en mi pobre inglés), así como todos los archivos necesarios y el código fuente de un ejemplo de uso, así como su correspondiente archivo binario.

Cualquier comentario o sugerencia será bienvenida. Para descargar "TTesseract", por favor, sigue este enlace. Huelga decir que, si lo estimáis oportuno, podéis hacer uso de esta clase de la forma en que queráis, aunque, bajo la licencia Apache 2.0, la misma en que está licenciado Tesseract ORC.

Última edición por dec fecha: 01-09-2012 a las 20:34:48.
Responder Con Cita