OCR con PHP - Detectar texto de una imagen

Extraer texto de imagen con PHP y Tesseract – OCR

En este post de programación en PHP te mostraré cómo extraer el texto de imágenes o mejor dicho cómo usar Tesseract OCR desde este lenguaje, de modo que podamos digitalizar el texto de una imagen usando PHP.

Al final esto que te muestro es un simple wrapper o una envoltura, ya que si bien vamos a procesar la imagen con PHP, internamente vamos a invocar a Tesseract.

Pero bueno, al final veremos cómo usar OCR con PHP para extraer el texto de imágenes. Obviamente te voy a dejar el ejemplo de código.

Sobre Tesseract

Ya he hecho un post de cómo instalar Tesseract en Windows y en Linux, así como el modo de usarlo desde la línea de comandos. La única diferencia es que ahora vamos a usar PHP para detectar texto en imágenes.

Lo que necesitamos por ahora es que puedas invocar a Tesseract desde la línea de comandos. Para comprobar que todo va bien, ejecuta:

tesseract --version

Y si la salida es similar a la siguiente, puedes continuar. En caso contrario, revisa que hayas instalado correctamente y agregado a la PATH como en los tutoriales que ya dejé anteriormente.

Nota: en este ejemplo voy a correr el script en Linux, específicamente en Elementary OS. Si tú quieres usar esto en Windows ajusta el archivo de salida (stdout) y especifica el debug_file en otro archivo (incluso puede ser un archivo temporal).

Formulario de imagen con PHP

Es momento de pasar a la programación con PHP para detectar el texto de la imagen. Primero veamos un poco de HTML que será el formulario, mismo que va a solicitar una imagen del usuario y luego va a mostrar el texto detectado.

El formulario queda como a continuación, muy parecido al ejemplo de subir un archivo con PHP.

Fíjate en que la imagen será enviada a procesar.php, con el nombre imagen. Ya en ese script de PHP podremos acceder a la misma a través de $_FILES.

OCR con PHP

Veamos la parte del procesamiento. Necesitamos la ubicación de la imagen de la cual vamos a extraer el texto desde PHP.

Afortunadamente con PHP ya tendremos la imagen en una ubicación temporal a la cual podemos acceder a través de tmp_name.

Lo único que falta es invocar a tesseract desde PHP, y para ello podemos usar exec. Finalmente debemos recoger el código de salida, y la salida en sí, para presentarla al usuario (aquí podríamos guardarla en una base de datos o algo similar).

Por cierto, en caso de que no lo hayas notado, la invocación a tesseract está en la línea 7 y 8.

Poniendo todo junto

Es momento de ver esto en ejecución. Seleccionamos una imagen con el formulario. La imagen que seleccioné para extraer el texto con PHP es la que se ve igualmente en la captura:

Extraer texto de imagen con PHP y Tesseract - OCR
Extraer texto de imagen con PHP y Tesseract – OCR

Y ahora dependiendo de qué tan rápida sea nuestra computadora o servidor, el proceso puede tardar más o menos. Al final nos presentará el texto extraído gracias a Tesseract:

OCR con PHP - Detectar texto de una imagen
OCR con PHP – Detectar texto de una imagen

Esto fue un ejemplo muy simple de cómo combinar PHP con Tesseract para detectar y extraer el texto de una imagen. Obviamente podemos mejorar la interfaz, hacer una API, guardar el texto en una base de datos y cualquier cosa que se nos ocurra.

Para terminar el post, te dejo con más tutoriales de PHP.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Extraer texto de imagen con PHP y Tesseract – OCR”

Dejar un comentario