El reconocimiento de caracteres ópticos (OCR) es una tecnología poderosa que convierte imágenes de texto en contenido legible por máquina. Con la creciente necesidad de automatización en la extracción de datos, las herramientas de OCR se han convertido en una parte esencial de muchas aplicaciones, desde digitalizar documentos hasta extraer información de imágenes escaneadas. En este tutorial, construiremos una aplicación OCR que se ejecuta sin esfuerzo en Google Colab, aprovechando herramientas como OpenCV para el procesamiento de imágenes, Tesseract-OCR para el reconocimiento de texto, Numpy para manipulaciones de matriz y matplotlib para la visualización. Al final de esta guía, puede cargar una imagen, preprocesarla, extraer texto y descargar los resultados, todo dentro de un cuaderno de Colab.
!apt-get install -y tesseract-ocr
!pip install pytesseract opencv-python numpy matplotlib
Para configurar el entorno OCR en Google Colab, primero instalamos Tesseract-OCR, un motor de reconocimiento de texto de código abierto, utilizando apt-get. Además, instalamos bibliotecas esenciales de Python como PytesSeract (para interfactar con Tesseract), OpenCV (para procesamiento de imágenes), Numpy (para operaciones numéricas) y matplotlib (para visualización).
import cv2
import pytesseract
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files
from PIL import Image
A continuación, importamos las bibliotecas necesarias para el procesamiento de imágenes y las tareas de OCR. OpenCV (CV2) se usa para leer y preprocesar imágenes, mientras que PyTesseract proporciona una interfaz al motor Tesseract OCR para la extracción de texto. Numpy (NP) ayuda con las manipulaciones de matriz, y Matplotlib (PLT) visualiza imágenes procesadas. El módulo de archivos de Google Colab permite a los usuarios cargar imágenes, y PIL (imagen) facilita las conversiones de imágenes necesarias para el procesamiento de OCR.
uploaded = files.upload()
filename = list(uploaded.keys())[0]
Para procesar una imagen para OCR, primero necesitamos subirla a Google Colab. La función Files.upload () desde el módulo de archivos de Google Colab permite a los usuarios seleccionar y cargar un archivo de imagen desde su sistema local. El archivo cargado se almacena en un diccionario, con el nombre de archivo como clave. Extraemos el nombre de archivo usando list (uploaded.keys ())[0]que nos permite acceder y procesar la imagen cargada en los pasos posteriores.
def preprocess_image(image_path):
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
return thresh
processed_image = preprocess_image(filename)
plt.imshow(processed_image, cmap='gray')
plt.axis('off')
plt.show()
Para mejorar la precisión de OCR, aplicamos una función de preprocesamiento que mejora la calidad de la imagen para la extracción de texto. La función Preprocess_Image () primero lee la imagen cargada usando OpenCV (CV2.Imread ()) y la convierte en escala de grises usando CV2.CVTColor (), ya que las imágenes de escala de grises son más efectivas para OCR. A continuación, aplicamos el umbral binario con el método de OTSU usando cv2.threshold (), que ayuda a distinguir el texto del fondo al convertir la imagen en un formato de blanco y negro de alto contraste. Finalmente, la imagen procesada se muestra utilizando matplotlib (plt.imshow ()).
def extract_text(image):
pil_image = Image.fromarray(image)
text = pytesseract.image_to_string(pil_image)
return text
extracted_text = extract_text(processed_image)
print("Extracted Text:")
print(extracted_text)
La función Extract_Text () realiza OCR en la imagen preprocesada. Dado que Tesseract-OocR requiere un formato de imagen PIL, primero convertimos la matriz Numpy (imagen procesada) en una imagen PIL usando imagen. FromArray (imagen). Luego, pasamos esta imagen a pytasseract.image_to_string (), que extrae y devuelve el texto detectado. Finalmente, se imprime el texto extraído, mostrando el resultado de OCR de la imagen cargada.
with open("extracted_text.txt", "w") as f:
f.write(extracted_text)
files.download("extracted_text.txt")
Para garantizar que el texto extraído sea fácilmente accesible, lo guardamos como un archivo de texto utilizando el manejo de archivos incorporado de Python. El comando Open (“extraído_text.txt”, “w”) crea (o sobrescribe) un archivo de texto y escribe la salida OCR extraída en él. Después de guardar el archivo, usamos files.download (“extraído_text.txt”) para proporcionar un enlace de descarga automático.
En conclusión, al integrar OpenCV, Tesseract-OCR, Numpy y Matplotlib, hemos creado con éxito una aplicación OCR que puede procesar imágenes y extraer texto en Google Colab. Este flujo de trabajo proporciona una forma simple pero efectiva de convertir documentos escaneados, texto impreso o contenido escrito a mano en formato de texto digital. Los pasos de preprocesamiento aseguran una mejor precisión, y la capacidad de guardar y descargar resultados lo hace conveniente para un análisis posterior.
Aquí está el Cuaderno de colab. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro Subreddit de 80k+ ml.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.