Optimización de Texto con Tesseract OCR: Localización y Detección de Texto (2023)

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!

Top Articles
Latest Posts
Article information

Author: Maia Crooks Jr

Last Updated: 04/11/2023

Views: 6308

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Maia Crooks Jr

Birthday: 1997-09-21

Address: 93119 Joseph Street, Peggyfurt, NC 11582

Phone: +2983088926881

Job: Principal Design Liaison

Hobby: Web surfing, Skiing, role-playing games, Sketching, Polo, Sewing, Genealogy

Introduction: My name is Maia Crooks Jr, I am a homely, joyous, shiny, successful, hilarious, thoughtful, joyous person who loves writing and wants to share my knowledge and understanding with you.