-
Notifications
You must be signed in to change notification settings - Fork 0
/
buscarTexto.js
58 lines (47 loc) · 2.2 KB
/
buscarTexto.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const Tesseract = require('tesseract.js');
const leven = require('leven');
// Ruta a la imagen
const imagePath = 'img/muestra.png';
// Función para calcular el porcentaje de similitud
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)); // Asegurar que esté entre 0 y 100
};
// Función para buscar texto en la imagen
const buscarTextoEnImagen = async (imagePath, textoBuscado) => {
try {
// Ejecutar OCR en la imagen
const { data: { text } } = await Tesseract.recognize(imagePath, 'spa');
// Imprimir el texto extraído
console.log('Texto extraído:', text);
// Dividir el texto extraído en palabras o segmentos
const palabras = text.split(/\s+/);
// Convertir el texto buscado a minúsculas
const textoBuscadoLower = textoBuscado.toLowerCase();
// Calcular la longitud del texto buscado en palabras
const numPalabrasBuscadas = textoBuscadoLower.split(/\s+/).length;
// Buscar el texto específico en los segmentos de la longitud adecuada y calcular la similitud
let similitudMaxima = 0;
for (let i = 0; i <= palabras.length - numPalabrasBuscadas; i++) {
const segmento = palabras.slice(i, i + numPalabrasBuscadas).join(' ');
const similitud = calcularSimilitud(segmento, textoBuscadoLower);
if (similitud > similitudMaxima) {
similitudMaxima = similitud;
}
}
// Mostrar el resultado
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);
}
};
// Nombre o número a buscar
const textoBuscado = '8007494';
// Ejecutar la función
buscarTextoEnImagen(imagePath, textoBuscado);