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ámetro | Tipo | Descripción |
---|---|---|
inputBuffer | Buffer | Imagen original en formato de buffer. |
📤 Retorno
Una Promise<Buffer>
que contiene la imagen preprocesada lista para su análisis OCR.
🧪 Procesamiento Aplicado
Etapa | Descripción |
---|---|
resize | Redimensiona la imagen a un ancho máximo de 1000 px sin agrandarla. |
grayscale | Convierte la imagen a escala de grises. |
normalize | Ajusta 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.