Instalar Tesseract OCR en Linux

Tesseract: una solución gratuita de OCR

Introducción

Tesseract es considerada una de las mejores soluciones de OCR disponibles. Desde 2006 está patrocinado por Google, anteriormente fue desarrollado por Hewlett Packard en C y C ++ entre 1985 y 1998. El sistema es capaz de identificar incluso la escritura a mano, puede aprender a aumentar su precisión y se encuentra entre los más desarrollados y completos del mercado.

Fácilmente supera a competidores comerciales como ABBY, entre otros. Si está buscando una solución seria y confiable para OCR, Tesseract es la más precisa, pero no esperes soluciones masivas. Utiliza un núcleo por proceso, lo que significa un procesador de 8 núcleos (hyperthreading Aceptado) será capaz de procesar 8 o 16 imágenes simultáneamente.

Cuando utilicé Tesseract, gestionamos miles de clientes potenciales que subían contenido manuscrito, imágenes con texto, etc. Utilizamos 48 servidores centrales, con DatabaseByDesign y luego con AWS, nunca tuvimos un problema de recursos.

Teníamos un uploader que distinguía entre archivos de Microsoft Office u Open Office, imágenes o documentos escaneados. El uploader determinó si el script PHP procesaría una orden para reconocer el texto.

Tesseract es una gran solución OCR, pero antes de pensarlo, debes saber que las últimas versiones de Tesseract trajeron grandes mejoras, algunas de ellas significarían un trabajo duro llegar a los mismos resultados. Si bien la capacitación puede durar horas o días, las reciente versiones de Tesseract pueden implicar días, semanas o incluso meses. Si estás buscando una solución OCR multilingüe, vale la pena capacitarse.


Instalando Tesseract 4 en Ubuntu/Debian

apt update

apt upgrade

apt install tesseract-ocr

Nota: Si utilizas una distribución diferente, deberá incluir la última versión del repositorio github y copiar el archivo .traineddata en el archivo “tessdata” ubicado en el directorio

/usr/share/tesseract-ocr/tessdata o /usr/share/tessdata.

Por defecto, Tesseract instalará el paquete de idioma inglés, para instalar idiomas adicionales ejecutados

apt install tesseract-ocr-[LANG]

Donde [LANG] es la denominación del idioma a instalar.

Por ejemplo, para agregar hebreo:

apt install tesseract-ocr-heb

También puede incluir todos los lenguajes. Para eso ejecute:

apt install tesseract-ocr-all

Para que Tesseract funcione correctamente, necesitaremos usar el comando “convert” (convertir entre formatos de imagen, así como cambiar el tamaño de una imagen, difuminar, recortar, descascarar, tramar, dibujar, voltear, unir, volver a muestrear y mucho más) proporcionado por Imagemagick:

Instalaremos imagemagick con apt:

apt install imagemagick

Ahora probemos Tesseract. Busquemos una imagen que contenga texto y ejecute:

tesseract [image_name] [output file_name]

Donde [image_name] es el archivo a reconocer y [output file_name] es el nombre del archivo del texto reconocido. Si se instala correctamente, Tesseract extraerá el texto de la imagen.

Cuando trabajé con Tesseract, todo lo que necesitábamos era contar palabras de un  documentos. Al igual que con cualquier otro programa, puede (y debe) entrenarlo.

En Word podemos definir algunos símbolos que se pueden contar o no, si contamos o no números, etc. lo mismo con Tesseract.

También podemos entrenar su sensibilidad a imágenes específicas.


Optimización de Tesseract:

Optimización del tamaño: De acuerdo con las fuentes oficiales, el tamaño óptimo de píxeles para que una imagen sea procesada con éxito por Tesseract es 300DPI. Necesitaremos procesar cualquier imagen usando el parámetro -r para aplicar este DPI. Aumentar el DPI también aumentará el tiempo de procesamiento.

Rotación de la página: Si al escanear la página no se giró correctamente y permanece en 180 ° o 45 °, la precisión disminuirá, puede usar este script de Python para detectar y corregir automáticamente los problemas de rotación.

Eliminación de bordes: De acuerdo con el man de Tesseract, los bordes pueden ser elegidos erróneamente como personajes, especialmente los bordes oscuros y donde existe una variedad de gradación. Eliminar bordes puede ser un buen paso para lograr la máxima precisión.

Eliminación de ruido: según Tesseracts, el ruido “es una variación aleatoria del brillo o el color de una imagen”. Podemos eliminarlo en el paso de binarización, lo que significa polarizar sus colores.


Entrenando a Tesseract:

Si bien la mayoría de los tutoriales cubren solo la instalación de Tesseract, resumiré cómo entrenar su sistema OCR, aquí podemos encontrar un tutorial para todas las versiones.

En este artículo resumiré cómo entrenar a Tesseract 4, que incluye un nuevo “motor de reconocimiento basado en “redes neuronales” que ofrece una precisión significativamente mayor (en imágenes ) que las versiones anteriores, a cambio de un aumento significativo en la potencia de procesamiento requerida. Sin embargo, en lenguajes complejos, puede ser más rápido que el Tesseract base “.

Antes de continuar necesitaremos instalar librerías adicionales:

apt install libicu-dev

apt install libpango1.0-dev

apt install libcairo2-dev

Instalaremos las herramientas de entrenamiento ejecutando, dentro del directorio de Tesseract:

make

make training

make training-install

De acuerdo con la wiki oficial de Tesseract, tenemos 3 opciones actuales para entrenar nuestro sistema de OCR:

  • “Fine Tune. Comenzando con un lenguaje entrenado previamente, entrene en sus datos adicionales específicos. Esto puede funcionar para problemas que están cerca de los datos de entrenamiento existentes, pero diferentes de alguna manera sutil, como una fuente particularmente inusual. Puede trabajar incluso con una pequeña cantidad de datos de entrenamiento.
  • Corte la capa superior (o un número arbitrario de capas) de la red y vuelva a entrenar una nueva capa superior con los nuevos datos. Si el ajuste fino no funciona, esta es probablemente la mejor opción. Cortar la capa superior aún podría funcionar para entrenar un lenguaje o script completamente nuevo, si comienzas con el script de aspecto más similar.
  • Vuelva a entrenar desde cero. Esta es una tarea desalentadora, a menos que tenga un conjunto de capacitación muy representativo y suficientemente grande para su problema. De lo contrario, es probable que termine con una red sobrecargada que funciona muy bien con los datos de entrenamiento, pero no con los datos reales.

Mientras que las opciones anteriores pueden sonar diferentes, los pasos de entrenamiento son en realidad casi idénticos, aparte de la línea de comandos, por lo que es relativamente fácil intentarlo en todos los sentidos, dado el tiempo o el hardware para ejecutarlos en paralelo “.

En este tutorial, solo ejecutaremos el script tesstrain.sh que llamará a los programas necesarios para entrenar un idioma específico.

En primer lugar, clonaremos todos los archivos de nuestro /usr/share/tesseract-ocr:

git clone https://github.com/tesseract-ocr/tesseract

Vaya a /usr/share/tesseract-ocr/tesseract/training (directorio de instalación predeterminado de Tesseract) y ejecute:

$ ./tesstrain.sh –-lang heb –-langdata_dir /usr/share/tesseract-ocr/langdata –-tessdata_dir /usr/share/tesseract-ocr/tessdata
Cambie “heb” por el idioma que desea entrenar y también edite la ruta a sus datos.Dentro del directorio /usr/share/tesseract/training encontrará el archivo language-specific.sh útil para agregar reglas para idiomas específicos.

Solución de problemas
En mi opinión Tesseract es la mejor solución de OCR, pero recientemente realizó grandes cambios con respecto a las versiones anteriores y muchos usuarios se quejan de los cambios o cosas que ya no funcionan. No me preocuparía demasiado ya que los cambios parecen dar excelentes resultados.La comunidad de  Tesseract es muy activa, en caso de tener alguna duda, forme parte de la comunidad de Tesseract aquí.

Este artìculo es la traducción al español del original Install Tesseract OCR on Linux


Gracias por seguir LinuxHint. Continúe siguiéndonos para obtener actualizaciones y nuevos consejos sobre Linux. Si tiene alguna pregunta sobre este tutorial u otro problema de Linux, comuníquese con nosotros a través de https://support.linuxhint.com