Instalar Tesseract-OCR en Visual Studio

Tesseract en una librería Open Source creada para el reconocimiento óptico de caracteres (OCR), tesseract-ocr puede escanear imágenes en distintos formatos y reconocer caracteres en más de 60 idiomas, ademas esta disponible para múltiples plataformas como Windows, Linux, Mac OSX, Android, IPhone.

Descargar e instalación de Tesseract-OCR


Para compilar la librería tesseract para Visual Studio 2013 primero debemos descargar las dependencias requeridas, hablamos de la librería leptonica para el procesamiento de imágenes en su versión para VS -13, la podemos obtener en este enlace: leptonica-tesseract-vs2012 una vez hayamos descargado el proyecto abrimos Símbolo del sistema para desarrolladores de VS2013 lo podemos encontrar en el menú de inicio o en la carpeta: C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts lo abrimos y usamos el comando cd C:\RutaCarpetaDescargada para ubicarnos en la carpeta descomprimida que descargamos, aplicamos el comando msbuild build.proj


Esta acción creara una carpeta en el directorio de trabajo actual llamada release que contiene los archivos de encabezado (carpeta include) y las librerías necesarias compiladas para las versiones de 32 (Win32) y 64 (x64) bits en la carpeta lib.

Ahora podemos descargar tesseract usaremos tortoise SVN lo descargamos e instalamos, creamos una carpeta la llamaremos Tesseract-OCR hacemos clic derecho sobre ella seleccionamos la opción SVN Checkout..., escribimos la URL http://tesseract-ocr.googlecode.com/svn/trunk/ luego hacemos clic sobre Choose Items...


Esta opción nos permite seleccionar que datos vamos a descargar, si tenemos buena velocidad de Internet podemos optar por descargar el proyecto completo, para los que tienen baja velocidad esto podría tardar algo de tiempo, marcamos todas las casillas disponibles excepto la carpeta tessdata esta contiene los archivo de entrenamiento para diversos lenguajes para hacer mas rápido el proceso de descarga solo bajaremos los datos para el idioma español por lo que el la carpeta tessdata marcamos solo las siguientes opciones:


Una vez hemos terminado hacemos clic derecho nuevamente sobre la carpeta que acabamos de crear para descargar tesseract, seleccionamos la opción TortoiseSVN > Apply patch..., se abre un cuadro de búsqueda localizamos el archivo vs2013+64bit_support.patch se encuentra en la carpeta que descargamos al principio, si aparece otro cuadro de dialogo seleccionamos la opción Use the Original Patch 

Damos clic a Patch all items y ya podemos cerrar las ventanas que es abrieron, esta acción generara la carpeta vs2013 que contiene la solución del proyecto.


Instalación Para Visual Studio


Para empezar localizamos la carpeta release que creamos al inicio la cual contiene las carpetas include y lib copiamos ambas carpetas y las pegamos junto con la carpeta Tesseract-OCR que creamos en el segundo paso.

Localizamos la carpeta vs2013 y abrimos tesseract.sln con visual studio 2013, este contiene dos proyectos libtesseract son las librerías que debemos compilar para usarlas y tesseract que es un ejemplo inicial.

Hacemos clic derecho sobre el proyecto libtesseract# opción Generar, esperamos a que termine la compilación.

Para ver si todo funciona abrimos el otro proyecto llamado tesseract este es un ejemplo que sirve para probar todas las características de tesseract por simplicidad no lo usaremos por lo que comentaremos el o quitaremos el contenido del archivo tesseractmain.cpp y colocaremos este:

#include <baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
 char *outText;

 tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();

 // Inicializar tesseract para el lenguaje español
 if (api->Init(NULL, "spa")) {
  fprintf(stderr, "Error al inicializar.\n");
  system("pause");
  exit(1);
 }

 // Abrir la imagen leptonica library
 Pix *image = pixRead("C:\\Users\\Carmelo\\Desktop\\Tesseract\\text.png");
 api->SetImage(image);

 // Obtener el texto de la imagen
 outText = api->GetUTF8Text();
 printf("Texto leido: %s", outText);

 // Liberar memoria
 api->End();
 delete[] outText;
 pixDestroy(&image);

 system("pause");
 return 0;
}

Para ejecutar este código hacemos clic derecho sobre el proyecto tesseract opción Depurar > Iniciar nueva instancia si vemos el siguiente error:


Para solucionar esto podemos hacer varias cosas, la mas simple es buscar el archivo libelpt170d.dll el cual se encuentra en la carpeta lib que creamos al principio, elegimos la versión Win32 o x64 según nos convenga, copiamos el archivo y lo pegamos el la carpeta de proyecto vs2013\bin\Win32\DLL_Debug para la versión Win32 cambiar si se requiere.

Para finalizar solo debemos indicar donde se encuentran los datos para reconocer el lenguaje español por lo que hacemos una modificación al código:

if (api->Init("C:\\Users\\Carmelo\\Desktop\\Tesseract\\tessdata", "spa")) {
 fprintf(stderr, "Error al inicializar.\n");
 system("pause");
 exit(1);
}

Recordemos que al inicio indicamos bajar solo los datos para español si lo descargaste completo todos los lenguajes disponibles, estos también pueden ser descargados por separado.

Otra opción es crear una variable de entorno llamada TESSDATA_PREFIX con la ruta a la carpeta tessdata, si hacemos esto la modificación en el código no sera necesaria.


Comentarios

  1. Buena Noche
    Tenia un par de problemas al seguir al pie de letra con la descripción anterior.
    Al dar los siguientes pasos, logre nivelarme con el tutorial, comparto para futuro creación de conocimiento:

    Configuración inicial: Visual Studio Enterprice (activado); y con OS windows 10(activado):

    1. En tecla inicio windows, le di CMD
    2. salen varias opciones
    3. Escogí MSBuil Command Pro for VS2015 - MSBuild build.proj
    4. sale consola modo MSBuild Command Pro
    5. voy a la ruta de descarga del archivo en mención:
    leptonica-tesseract-vs2012
    6. Se debe descomprimir este archivo con anticipación
    7. en el modo consola MSBUild ingresamos a esa dirección mi caso:
    cd c:\users\miguelangel\documents\dowloads\tesseract-vs2012-master
    8. ejecutar el comando de compilación MSBuild build.proj
    9. Compila!!
    Si tengo más problemas compartire y si llego a soluciones igual

    ResponderEliminar
  2. 2. Segundo problema

    Buenas Noches al llegar a la dirección (creó que es la de repositorios)

    http://tesseract-ocr.googlecode.com/svn/trunk/

    Aparece a esta fecha y hora que no esta en servicio, investigue un poco, y al dar esta en google, parece que esta activa esta

    https://github.com/svn2github/Tesseract

    El Repository Browser - TortoiseSVN la carga.

    Creo que esta dirección de repositorio a futuro puede estar cambiando, por eso para futuras consultas se debe investigar de la dirección en funcionamiento de estos repositorios

    sale al final Checkoutfinished
    Completed at revision 883
    6,60 MBytes transferred at revision: 883
    added:911

    OK

    ResponderEliminar
  3. III. Actualización


    1. Sale el siguiente pantallazo en visual, creo que es de actualización de los proyectos a Visual Studio 2015 Enterprice:

    Pantallazo:

    Actualizar el compilador y las bibliotecas de VC++
    Los siguientes proyectos usan una versión anterior del compilador y de las bibliotecas de Visual C+ +. Los proyectos se actualizarán para usar el compilador y las bibliotecas de Microsoft Visual Studio 2015. Los proyectos de código administrado o nativo que usan las extensiones de C++/ CLI se actualizarán automáticamente para adaptarlos a .NET Framework 4.5.2. Nota: Si no actualiza los proyectos, para compilarlos será necesario instalar la versión correspondiente de Visual Studio.
    0 ,.\l i btesseractM i btesseract.vcxproj 0 ..\tesseract\tesseract.vcxproj



    2. Le di Aceptar


    3. Al parecer ya abre visual, en la
    Solución ´tesseract´

    con dos proyectos
    1. libtesseract304
    2. tesseract

    ResponderEliminar
  4. III. Actualización


    1. Sale el siguiente pantallazo en visual, creo que es de actualización de los proyectos a Visual Studio 2015 Enterprice:

    Pantallazo:

    Actualizar el compilador y las bibliotecas de VC++
    Los siguientes proyectos usan una versión anterior del compilador y de las bibliotecas de Visual C+ +. Los proyectos se actualizarán para usar el compilador y las bibliotecas de Microsoft Visual Studio 2015. Los proyectos de código administrado o nativo que usan las extensiones de C++/ CLI se actualizarán automáticamente para adaptarlos a .NET Framework 4.5.2. Nota: Si no actualiza los proyectos, para compilarlos será necesario instalar la versión correspondiente de Visual Studio.
    0 ,.\l i btesseractM i btesseract.vcxproj 0 ..\tesseract\tesseract.vcxproj



    2. Le di Aceptar


    3. Al parecer ya abre visual, en la
    Solución ´tesseract´

    con dos proyectos
    1. libtesseract304
    2. tesseract

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. III. Actualización

    1. Se debe actualizar Visual 2015 con los proyectos, sale el siguiente pantallazo:

    Actualizar el compilador y las bibliotecas de VC++
    Los siguientes proyectos usan una versión anterior del compilador y de las bibliotecas de Visual C+ +. Los proyectos se actualizarán para usar el compilador y las bibliotecas de Microsoft Visual Studio 2015. Los proyectos de código administrado o nativo que usan las extensiones de C++/ CLI se actualizarán automáticamente para adaptarlos a .NET Framework 4.5.2. Nota: Si no actualiza los proyectos, para compilarlos será necesario instalar la versión correspondiente de Visual Studio.
    0 ,.\l i btesseractM i btesseract.vcxproj 0 ..\tesseract\tesseract.vcxproj


    2. Le doy aceptar

    3. Arranca visual 2015 con la solución ´tesesract´ que contiene dos proyectos
    a. libtesseract304
    b. tesseract


    ResponderEliminar
  7. Por curiosidad, cual es tu versión de Windows?, llevo días intentando ejecutar el ejemplo, pero aparece un mensaje de que no puede abrir el archivo libtesseract304d.dll, ya estoy cansado, utilizo windows 10 y vs2013.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Conectar SQL Server con Java

Entrenar OpenCV en Detección de Objetos

Procesamiento de imágenes en OpenCV

Acceso a la webcam con OpenCV

Conociendo la clase cv::Mat de OpenCV