Skip to content

Este proyecto utiliza la biblioteca `tesseract.js` para realizar OCR (Reconocimiento Óptico de Caracteres) en imágenes y buscar un texto específico dentro de la imagen, manejando diferencias en mayúsculas y minúsculas y normalizando números eliminando puntos y comas.

License

Notifications You must be signed in to change notification settings

torrentedev/imageContentAnalyzer

Repository files navigation

OCR Text Search

Este proyecto utiliza la biblioteca tesseract.js para realizar OCR (Reconocimiento Óptico de Caracteres) en imágenes y buscar un texto específico dentro de la imagen, manejando diferencias en mayúsculas y minúsculas y normalizando números eliminando puntos y comas.

Características

  • Realiza OCR en imágenes para extraer texto.
  • Busca texto específico, incluyendo palabras, frases y nombres completos.
  • Calcula la similitud entre el texto extraído y el texto buscado.
  • Normaliza números eliminando puntos y comas para mejorar la precisión de la búsqueda.

Requisitos

  • Node.js (v20.17.0 o superior)
  • npm (v7.0.0 o superior)

Instalación

  1. Clona este repositorio en tu máquina local.

    git clone https://github.com/tu_usuario/imageContentAnalyzer.git
    cd ocr-text-search
  2. Instala las dependencias necesarias utilizando npm.

    npm install

Uso

  1. Asegúrate de que tienes una imagen en la que deseas buscar texto. Actualiza la variable imagePath en el script buscarTexto.js con la ruta a tu imagen.

    const imagePath = 'ruta/a/tu/imagen.png';
  2. Define el texto que deseas buscar en la variable textoBuscado.

    const textoBuscado = '123.456,78';
  3. Ejecuta el script.

    node buscarTexto.js

Explicación del Código

El script buscarTexto.js realiza las siguientes operaciones:

  1. Importación de Módulos: Importa tesseract.js para realizar OCR y leven para calcular la distancia de Levenshtein entre dos cadenas.

    const Tesseract = require('tesseract.js');
    const leven = require('leven');
  2. Configuración de la Ruta de la Imagen: Define la ruta de la imagen que se analizará.

    const imagePath = 'ruta/a/tu/imagen.png';
  3. Calcular Similitud: Define una función que calcula la similitud entre dos cadenas de texto utilizando la distancia de Levenshtein.

    const calcularSimilitud = (texto1, texto2) => {
        const distancia = leven(texto1.toLowerCase(), texto2.toLowerCase());
        const longitudMaxima = Math.max(texto1.length, texto2.length);
        const similitud = ((longitudMaxima - distancia) / longitudMaxima) * 100;
        return Math.max(0, Math.min(similitud.toFixed(2), 100));
    };
  4. Normalizar Texto: Define una función para eliminar puntos y comas de una cadena de texto.

    const normalizarTexto = (texto) => {
        return texto.replace(/[.,]/g, '');
    };
  5. Buscar Texto en la Imagen: Define una función asincrónica que realiza OCR en la imagen, normaliza el texto extraído y el texto buscado, y calcula la similitud para encontrar coincidencias.

    const buscarTextoEnImagen = async (imagePath, textoBuscado) => {
        try {
            const { data: { text } } = await Tesseract.recognize(imagePath, 'spa');
            console.log('Texto extraído:', text);
            const palabras = text.split(/\s+/);
            const textoBuscadoLower = normalizarTexto(textoBuscado.toLowerCase());
            const numPalabrasBuscadas = textoBuscadoLower.split(/\s+/).length;
            let similitudMaxima = 0;
            for (let i = 0; i <= palabras.length - numPalabrasBuscadas; i++) {
                const segmento = palabras.slice(i, i + numPalabrasBuscadas).join(' ');
                const segmentoNormalizado = normalizarTexto(segmento.toLowerCase());
                const similitud = calcularSimilitud(segmentoNormalizado, textoBuscadoLower);
                if (similitud > similitudMaxima) {
                    similitudMaxima = similitud;
                }
            }
            if (similitudMaxima > 0) {
                console.log(`El texto "${textoBuscado}" tiene una probabilidad del ${similitudMaxima}% de estar en la imagen.`);
            } else {
                console.log(`El texto "${textoBuscado}" no se encontró en la imagen.`);
            }
        } catch (error) {
            console.error('Error al procesar la imagen:', error);
        }
    };
  6. Ejecutar la Función: Define el texto buscado y ejecuta la función buscarTextoEnImagen.

    const textoBuscado = '123.456,78';
    buscarTextoEnImagen(imagePath, textoBuscado);

Contribuciones

Las contribuciones son bienvenidas. Si tienes alguna mejora, por favor abre un issue o envía un pull request.

Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

About

Este proyecto utiliza la biblioteca `tesseract.js` para realizar OCR (Reconocimiento Óptico de Caracteres) en imágenes y buscar un texto específico dentro de la imagen, manejando diferencias en mayúsculas y minúsculas y normalizando números eliminando puntos y comas.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published