Tesseract: una solución de OCR gratuita
Introducción
Tessereact se considera una de las mejores soluciones de OCR disponibles. Desde 2006 cuenta con el patrocinio de 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 aumentando su precisión y se encuentra entre los más desarrollados y completos del mercado.
Supera fácilmente a competidores comerciales como ABBY, si está buscando una solución seria para OCR, Tesseract es la más precisa, pero no espere soluciones masivas: utiliza un núcleo por proceso, lo que significa un procesador de 8 núcleos (hyperthreading aceptado) podrá procesar 8 o 16 imágenes simultáneamente.
Cuando usé Tesseract gestionamos miles de clientes potenciales subiendo contenido escrito a mano, imágenes con texto, etc. Usamos 48 servidores centrales, con DatabaseByDesign y luego con AWS, nunca tuvimos un problema de recursos.
Teníamos un cargador que discriminaba entre archivos de texto como Microsoft Office o archivos e imágenes de Open Office o documentos escaneados. La persona que subió el video determinó lo que los scripts de OCR o PHP procesarían un pedido, en el campo del reconocimiento de texto.
Tesseact es una gran solución, pero antes de pensarlo debes saber, las últimas versiones de Tesseract trajeron grandes mejoras, algunas de ellas significan trabajo duro. Si bien la capacitación puede durar horas o días, la capacitación de las versiones recientes de Tesserct puede ser de días, semanas o incluso meses si está buscando una solución de OCR multilingüe.
Instalación de Tesseract 4 en Debian / Ubuntu:
apt-get install tesseract-ocrSi está utilizando una distribución de Linux diferente, deberá copiar la última versión del repositorio de github y copiar el .archivo de datos entrenados en 'tessdata' (/ usr / share / tesseract-ocr / tessdata o / usr / share / tessdata).
De forma predeterminada, Tesseract instalará el paquete de idioma inglés, para instalar idiomas adicionales, ejecute
apt-get install tesseract-ocr-LANGpor ejemplo, para agregar hebreo:
apt-get install tesseract-ocr-hebPuede incluir todos los idiomas ejecutando:
apt-get install tesseract-ocr-all
Para que Tesseract funcione correctamente, necesitaremos usar el comando "convertir" (convertir entre formatos de imagen, así como cambiar el tamaño de una imagen, desenfocar, recortar, eliminar, difuminar, dibujar, voltear, unir, volver a muestrear y mucho más) proporcionado por Imagemagick:
Instalemos imagemagick con apt-get:
apt-get install imagemagickAhora probemos Tesseract, busquemos una imagen que contenga texto y ejecutemos:
tesseract [nombre_imagen] [nombre_archivo de salida]Si se instala correctamente, Tesseract extraerá el texto de la imagen.
Cuando trabajé con Tesseract, todo lo que necesitábamos era contar los documentos. Como con cualquier otro programa puedes y debes entrenarlo, en Word podemos definir algunos símbolos que se pueden contar o no, si contar 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 de tamaño: Según fuentes oficiales, el tamaño de píxeles óptimo para que una imagen sea procesada con éxito por Tesseract es 300DPI. Necesitaremos procesar cualquier imagen usando el parámetro -r para hacer cumplir este DPI. Aumentar el DPI también aumentará el tiempo de procesamiento.
Rotación de página: Si cuando se escaneó la página no se giró correctamente y permanece en 180 ° o 45 °, la precisión de Tesseract disminuirá, puede usar este script de Python para detectar y corregir automáticamente problemas de rotación.
Eliminación de bordes: Según el hombre oficial de Tesseract, los bordes se pueden elegir erróneamente como personajes, especialmente los bordes oscuros y donde hay variedad de gradaciones. Eliminar los bordes puede ser un buen paso para lograr la máxima precisión con Tesseract.
Eliminación de ruido: Según Tesseracts, el ruido "es una variación aleatoria de brillo o color en una imagen". Podemos eliminarlo en el binarización paso, lo que significa polarizar sus colores.
Entrenamiento 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 Tesseract 4 que incluye un nuevo “Motor de reconocimiento basado en redes neuronales que ofrece una precisión significativamente mayor (en imágenes de documentos) que las versiones anteriores, a cambio de un aumento significativo en la potencia de cálculo requerida. Sin embargo, en lenguajes complejos, en realidad puede ser más rápido que el Tesseract base."
Antes de continuar, necesitaremos instalar bibliotecas adicionales:
sudo apt-get install libicu-devsudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
E instalaremos las herramientas de entrenamiento ejecutando, dentro del directorio Tesseract:
fabricarhacer entrenamiento
sudo make training-install
Según la wiki oficial de Tesseract, tenemos 3 opciones actuales para entrenar nuestro sistema OCR:
- "Afinar. Comenzando con un idioma entrenado existente, entrene en sus datos adicionales específicos. Esto puede funcionar para problemas cercanos a los datos de entrenamiento existentes, pero diferentes de alguna manera sutil, como una fuente particularmente inusual. Puede funcionar 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 siguiente mejor opción. Cortar la capa superior aún podría funcionar para entrenar un idioma o guión completamente nuevo, si comienza con el guión de apariencia 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 sobreajustada que funcione muy bien con los datos de entrenamiento, pero no con los datos reales.
Si bien las opciones anteriores pueden parecer diferentes, los pasos de entrenamiento son en realidad casi idénticos, aparte de la línea de comando, por lo que es relativamente fácil probarlo de todas las formas, dado el tiempo o el hardware para ejecutarlos en paralelo."
En este tutorial, solo ejecutaremos tesstrain.sh script que llamará a los programas necesarios para entrenar un idioma específico.
En primer lugar, clonemos todos los archivos dentro de nuestro / usr / share / tesseract-ocr:
clon de git https: // github.com / tesseract-ocr / tesseract
Vaya a / usr / share / tesseract-ocr / tesseract / training (directorio de instalación predeterminado de Tesseract) y ejecute:
PS ./ 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-ocr / tesseract / training encontrará el archivo específico del idioma.sh útil para agregar reglas para idiomas específicos.
Solución de problemas
Tesseract es para mí la mejor solución de OCR, pero recientemente hizo grandes cambios con respecto a las versiones anteriores y muchos usuarios se quejan de cambios o cosas que ya no funcionan, no me preocuparía ya que los cambios parecen dar excelentes resultados. La comunidad de Tesseract es muy activa, en caso de que encuentre problemas para ejecutar tesseract, hágase parte de la comunidad de Tesseract aquí.