¡Hola, hola Omesitos!. Bienvenidos a un nuevo tutorial. En esta oportunidad estaremos aplicando juntos Optical Character Recognition (OCR) o Reconocimiento Óptico de Caracteres. Para ello vamos a estar utilizando un módulo para Python llamado Easyocr. Este módulo nos va a permitir en leer en más de 80 idiomas.
CONTENIDO:
- Reconocimiento Óptico de Caracteres con Easyocr
- Instalación de packages
- ¡Vamos con la programación!
- Referencias
Reconocimiento Óptico de Caracteres con Easyocr

Figura 1: Ejemplo del uso de Easyocr. En la sección superior tenemos las imágenes a las cuales se les ha aplicado este módulo. Y en la sección inferior tenemos los resultados obtenidos. (Fuente)
EasyOCR es un módulo de Python que permite extraer texto de imágenes. En cuanto al apartado de deeplearning usa Pytorch. Y soporta más de 80 idiomas, puedes ver la lista de todos ellos en este enlace.Â
Por cierto, si te estás preguntando, ¿qué pasa con el texto escrito a mano?, pues en su repo nos indican que podremos tener esta funcionalidad en un futuro. Al parecer aún la están desarrollando.Â
Instalación de Packages
Para este tutorial vamos a instalar easyocr con pip install easyocr. Automáticamente, se nos instalarán otros módulos como Numpy u OpenCV, entre otros. Sin embargo, hay que tomar en cuenta que se nos instala OpenCV-Python-Headless y este no nos permitirá realizar la visualización de imágenes o videos, por ello tendremos que desinstalarlo usado pip uninstall opencv-python-headless.
Una vez desinstalado, podremos instalar OpenCV con pip install opencv-python. ¡Y listo!, ya tendrÃamos todos los paquetes a utilizar.
¡Vamos con la programación!
Para una explicación más detallada del programa que veremos a continuación, por favor dirÃgete al video que he preparado en mi canal, en donde explico paso a pasito cada procedimiento efectuado. ¡AnÃmate a verlo 😉!.
Vamos a importar los módulos que vamos a usar en el programa:
import cv2 import easyocr
A continuación vamos a establecer el o los idiomas para que easyocr lea (recuerda que la lista de idiomas disponibles los puedes encontrar aquÃ), y también leeremos una imagen de entrada con OpenCV.
reader = easyocr.Reader(["es"], gpu=False)
image = cv2.imread("image_0000.jpg")
Para extraer el texto de la imagen tendremos que emplear reader.readtext. De este obtendremos una lista con los cuatro puntos o vértices que nos indica donde está presente el texto detectado, seguido del texto reconocido y finalmente el nivel de confianza del reconocimiento.
result = reader.readtext(image, paragraph=False)
Adicionalmente, tenemos la opción paragraph, que agrupará el texto de acuerdo a su distancia en la imagen y nos devolverá su reconocimiento. Podemos probarlo si lo establecemos como True.
Bien, ahora que tenemos los resultados en result, vamos a visualizarlos. Pero antes de ello, usaremos un for para ir analizando cada texto extraÃdo y reconocido.
for res in result:
print("res:", res)
pt0 = res[0][0]
pt1 = res[0][1]
pt2 = res[0][2]
pt3 = res[0][3]
cv2.rectangle(image, pt0, (pt1[0], pt1[1] - 23), (166, 56, 242), -1)
cv2.putText(image, res[1], (pt0[0], pt0[1] -3), 2, 0.8, (255, 255, 255), 1)
cv2.rectangle(image, pt0, pt2, (166, 56, 242), 2)
cv2.circle(image, pt0, 2, (255, 0, 0), 2)
cv2.circle(image, pt1, 2, (0, 255, 0), 2)
cv2.circle(image, pt2, 2, (0, 0, 255), 2)
cv2.circle(image, pt3, 2, (0, 255, 255), 2)
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
En la lÃnea 10, estaremos imprimiendo cada texto reconocido, junto con su ubicación y nivel de confianza. A cada uno de los 4 puntos de cada texto detectado lo almacenaremos en una variable diferente, esto lo podemos visualizar en las 11 a la 14.
En la lÃnea 16 y 17 vamos a ubicar un recuadro rosa sobre cada texto y en este espacio ubicaremos los resultados del reconocimiento en color blanco.
En las lÃneas 19 a 23 dibujamos un cuadro delimitador para el texto y además cada vértice con un cÃrculo de distintos colores.
Una vez que ejecutemos el programa, podremos obtener lo siguiente:
Figura 2: Ejemplo de reconocimiento de caracteres con easyocr.
En la figura 2 podemos apreciar el reconocimiento que se ha realizado sobre la imagen. Sin embargo, tenemos signos de interrogación en las vocales que contienen tilde. Bien, esto es debido a que OpenCV no visualizará ciertos sÃmbolos especiales. Pero no nos preocupemos, ya que además de la visualización de los resultados en la imagen, podemos ver los que imprimimos en consola, que son los siguientes:
Figura 3: Resultados del reconocimiento de caracteres.
En la figura 3 podemos visualizar los resultados, y como podemos ver allÃ, sà que obtenemos las tildes reconocidas. Esto gracias a que habÃamos indicado que easyocr lea en español.
Por otro lado, también podemos indicarle que lea tanto en inglés como en español:
Figura 4: Ejemplo del uso de easyocr para reconocer a la vez inglés y español.
O podrÃamos probarlo con otro idioma, como el portugués:
Figura 5: Ejemplo del uso de easyocr para reconocer portugués.
Como puedes observar en los ejemplos, easyocr trabaja muy bien, incluso en imágenes con disntitos colores o fondos.
Y bien, esto ha sido todo por el tutorial de hoy. ¡Espero que te haya gustado! 😊 Nos vemos en el siguiente… ¡Qué te vaya muy bien!.