Introducción
En este tutorial, exploraremos cómo utilizar Tesseract OCR para detectar, localizar y realizar OCR de texto, todo en una única llamada de función eficiente. A diferencia de enfoques anteriores que involucraban múltiples etapas con OpenCV, ahora presentaremos una solución más simplificada y efectiva.
Tesseract OCR: Localización y Detección de Texto
En la primera parte de este tutorial, abordaremos el concepto de detección y localización de texto. Luego, mostraremos cómo instalar Tesseract en su sistema y, finalmente, implementaremos la localización, detección y OCR de texto utilizando Tesseract y Python.
¿Qué es la Localización y Detección de Texto?
La detección de texto es el proceso de identificar la ubicación del texto en una imagen, siendo una forma especializada de detección de objetos. Mientras que en la detección de objetos buscamos calcular el cuadro delimitador de todos los objetos en una imagen, en la detección de texto nuestro objetivo es calcular automáticamente los cuadros delimitadores para cada región de texto en una imagen.
Instalación de pytesseract para Tesseract OCR
Antes de comenzar con la implementación, asegúrese de haber seguido las instrucciones proporcionadas en mi publicación sobre OpenCV OCR y reconocimiento de texto con Tesseract para instalar el motor Tesseract OCR y las bibliotecas de Python necesarias.
Estructura del Proyecto
Descargue el archivo .zip de la sección de descargas de este tutorial. Al extraer los archivos, encontrará una estructura de proyecto simple con un único script de Python, "localize_text_tesseract.py", y una imagen de prueba, "apple_support.png".
Implementación de Localización, Detección y OCR de Texto con Tesseract
Ahora, procederemos a la implementación de la localización y detección de texto con Tesseract. Abra un nuevo archivo, nómbrelo "localize_text_tesseract.py" y sigamos adelante con el código.
# Importar los paquetes necesarios
from pytesseract import Output
import pytesseract
import argparse
import cv2
# Construir el analizador de argumentos y analizar los argumentos
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="ruta de la imagen de entrada para OCR")
ap.add_argument("-c", "--min-conf", type=int, default=0, help="valor mínimo de confianza para filtrar detecciones de texto débiles")
args = vars(ap.parse_args())
# Cargar la imagen de entrada, convertirla de BGR a RGB y utilizar Tesseract para localizar cada área de texto en la imagen
image = cv2.imread(args["image"])
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = pytesseract.image_to_data(rgb, output_type=Output.DICT)
# Iterar sobre cada una de las localizaciones individuales de texto
for i in range(0, len(results["text"])):
# Extraer las coordenadas del cuadro delimitador de la región de texto actual
x = results["left"][i]
y = results["top"][i]
w = results["width"][i]
h = results["height"][i]
# Extraer el texto OCR junto con la confianza de la localización del texto
text = results["text"][i]
conf = int(results["conf"][i])
# Filtrar localizaciones de texto débiles
if conf > args["min_conf"]:
# Mostrar la confianza y el texto en la terminal
print("Confianza: {}".format(conf))
print("Texto: {}".format(text))
print("")
# Eliminar caracteres no ASCII y dibujar un cuadro delimitador alrededor del texto junto con el texto mismo
text = "".join([c if ord(c) < 128 else "" for c in text]).strip()
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 0, 255), 3)
# Mostrar la imagen de salida
cv2.imshow("Imagen", image)
cv2.waitKey(0)
Resultados de Tesseract OCR para Localización y Detección de Texto
Al ejecutar el script con la imagen de prueba, obtenemos resultados precisos de Tesseract en la detección y localización de todas las regiones de texto en la imagen. Ajustando el umbral de confianza con el argumento "--min-conf," podemos filtrar las detecciones de texto débiles y obtener resultados óptimos.
Conclusión
Este tutorial ha demostrado cómo utilizar Tesseract OCR para la localización y detección eficientes de texto en una imagen. La capacidad de Tesseract para realizar ambas tareas en una única llamada de función simplifica el proceso en comparación con enfoques multietapa anteriores con OpenCV.
Al aplicar estos conceptos a sus propias aplicaciones de detección y OCR de texto con Tesseract, asegúrese de experimentar con la función "image_to_data" para obtener resultados precisos. En el campo de OCR, continúe evaluando ambas metodologías y permita que los resultados empíricos guíen su enfoque.
Recuerde descargar el código fuente de este tutorial desde la sección de descargas y únase a PyImageSearch University para acceder a cursos completos sobre visión por computadora, aprendizaje profundo y OpenCV.
¡Esperamos que este tutorial le haya proporcionado una sólida comprensión de la localización y detección de texto con Tesseract OCR!