Extraer Texto de Imágenes con OCR utilizando Pytesseract

Introducción:

Hola amigos de Internet. Les doy la bienvenida a Mi Diario Python, el mejor blog en español para Aprender Python.  
En este articulo, veremos como extraer texto de imágenes utilizando OCR (Reconocimiento Óptico de Caracteres) y Pytesaract.

Resultado de imagen para python ocr

Instalación de Pytesseract:

Pytesseract es una herramiento de OCR (Reconocimiento Óptico de Caracteres) para Python. Es muy fácil y sencillo de utilizar.
Podemos instalar Pytesseract utilizando PyPi: https://pypi.org/project/pytesseract/.
pip install pytesseract
También podemos hacerlo de la siguiente manera:
pip install -U git+https://github.com/madmaze/pytesseract.git
Y listo, ya podemos trabajar con Pytesseract.
Adicionalmente también deberemos utilizar la librería Pillow:

Extraer Texto de Imágenes:

Muy bien, una vez que tengamos Pytesseract a nuestra disposición, podemos utilizarlo para extraer texto de nuestras imágenes.
La imagen que utilizaremos como ejemplo la siguiente:
A continuación te mostrare un código que nos permite extraer texto de una imagen que utilizare como ejemplo:
# Importamos la libreria Pillow
from PIL import Image

# Importamos Pytesseract
import pytesseract

# Abrimos la imagen
im = Image.open("example_01.png")

# Utilizamos el método "image_to_string"
# Le pasamos como argumento la imagen abierta con Pillow
texto = pytesseract.image_to_string(im)

# Mostramos el resultado
print(texto)
Noisyimage
to test
Tesseract OCR
Excelente, como pueden ver, el resultado es muy bueno. Podemos repetir este proceso con todas la imágenes que deseen.
Probemos con otra imagen:
# Importamos la libreria Pillow
from PIL import Image

# Importamos Pytesseract
import pytesseract

# Abrimos la imagen
im = Image.open("example_02.jpg")

# Utilizamos el método "image_to_string"
# Le pasamos como argumento la imagen abierta con Pillow
texto = pytesseract.image_to_string(im)

# Mostramos el resultado
print(texto)
The quick brown fox
jumped over the 5
lazy dogs!
Perfecto, muy bien.
Si eres de los que prefieren trabajar con OpenCv en vez de Pillow, puedes simplemente utilizar OpenCv, si tener que cambiar nada más que la forma de abrir la imagen. Veamos un ejemplo:
# Importamos la libreria OpenCv
import cv2

# Importamos Pytesseract
import pytesseract

# Abrimos la imagen
im = cv2.imread("example_02.jpg")

# Utilizamos el método "image_to_string"
# Le pasamos como argumento la imagen abierta con Pillow
texto = pytesseract.image_to_string(im)

# Mostramos el resultado
print(texto)
The quick brown fox
jumped over the 5
lazy dogs!
Como pueden ver, nos da el mismo resultado. 
Bueno, eso es todo. Como pueden ver es muy sencillo, no tiene muchas complicaciones.
¿Alguna duda? ¿Quieres saber como realizar un OCR? Deja tu comentario.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
  1. Unknown dice:

    Muy bueno, gracias

    1. Luis Salcedo dice:

      Gracias Paulo por visitar el blog y dar tu opinión. Saludos :D.

  2. BGL dice:

    Muy interesante y también muy didactica la manera de explicarlo. Yo no tengo un nivel alto de Python y lo comprendo con facilidad. !! Muchas gracias!!

    1. Luis Salcedo dice:

      Gracias por visitarnos 😀 Saludos

  3. Unknown dice:

    Este comentario ha sido eliminado por el autor.

  4. Unknown dice:

    hola luis, tendras algun manual sobre phyton el cual empleas para poder entender phyton y que nos puedas compartir te agradeceria

    1. Unknown dice:

      Buenas yo aprendí python con una blog llamado "python para impacientes"

  5. Anónimo dice:

    como usar pyteseract con imagenes con textos en español

    1. Unknown dice:

      A la hora de cambiar de imagen a texto se le puede dar parámetro de lenguaje: text = pytesseract.image_to_string(img, lang="rus") #RUS es para ruso, habría que buscar el de español

  6. Unknown dice:

    hola, como puedo solo tener los datos de la imagen para yo, comparar letra con letra con alguna base de datos?, sin que lo haga todo casi solo la libreria??

  7. Unknown dice:

    Buena tarde, quisiera adicional a extraer el texto, que me informe en una función o algo así, la coordenada (ubicación) de una palabra específica

    1. Anónimo dice:

      Podes usar alguna librería que lea el documento y te marque la posición de la palabra que buscas. Usaba una que encontraba la palabra y copiaba la línea calculo que con esa misma se podría

  8. hans dice:

    Muchas gracias amigo , adicional para los que tengan problema al instalar tesseract, bajense el ocr, instalenlo luego pongan una linea antes del img esto :
    pytesseract.pytesseract.tesseract_cmd = r'.....Tesseract-OCRtesseract.exe' o donde este ubicado su tesseract, saludos y gracias.

    1. Unknown dice:

      Gracias por data!

  9. Luís dice:

    Cómo puedo capturar los valores numéricos de una imagen eh imprimir la suma de emmos

  10. estudiante dice:

    Disculpen la pregunta, ¿en donde debo de poner la imagen para que la pueda leer sin problema ?

  11. ra dice:

    como se podria hacer con la camara activada leer el texto

  12. Sebaste dice:

    Hola, para palabras en español como ñ o acentos tildes, etc? funciona?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.