Skip to main content

Preprocesamiento de Imagen

Este archivo define una función que aplica una serie de transformaciones a una imagen en formato Buffer para mejorar su calidad antes de realizar OCR (Reconocimiento Óptico de Caracteres). Se basa en la librería sharp.


🔍 Ubicación

src/utils/preprocesarImagen.ts


📦 Dependencias

import sharp from 'sharp';
  • sharp: Librería de procesamiento de imágenes de alto rendimiento para Node.js.

🔧 Función Exportada

🔍 preprocesarImagen(inputBuffer: Buffer): Promise<Buffer>

Aplica mejoras visuales sobre la imagen para facilitar su análisis con herramientas de OCR como tesseract.js.

📥 Parámetros

ParámetroTipoDescripción
inputBufferBufferImagen original en formato de buffer.

📤 Retorno

Una Promise<Buffer> que contiene la imagen preprocesada lista para su análisis OCR.


🧪 Procesamiento Aplicado

EtapaDescripción
resizeRedimensiona la imagen a un ancho máximo de 1000 px sin agrandarla.
grayscaleConvierte la imagen a escala de grises.
normalizeAjusta el contraste y brillo para uniformar la imagen.
threshold(150)Aplica un umbral binario con valor 150, ideal para resaltar texto oscuro.
png()Convierte la imagen a formato PNG (sin pérdida).
toBuffer()Devuelve la imagen procesada en un nuevo Buffer.

🧾 Comentarios en el Código

/**
* Preprocesa una imagen recibida como Buffer:
* - Escala de grises
* - Normaliza contraste
* - Umbral binario
* Retorna un Buffer preprocesado
*/

Estos comentarios resumen el objetivo y las etapas del proceso aplicado a la imagen.


🎯 Ejemplo de uso

const bufferPreprocesado = await preprocesarImagen(bufferOriginal);

Este bufferPreprocesado puede ser enviado al módulo OCR (createOcrClient) para mejorar la precisión del reconocimiento de texto.


🧠 Recomendaciones

  • Utiliza imágenes con texto legible y fondo claro para mejores resultados.
  • Este preprocesamiento es especialmente útil en imágenes tomadas desde móviles donde el contraste es bajo o el fondo es complejo.