Spaces:
Running
Running
<html lang="es"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Modelo de Preguntas y Respuestas sobre un PDF</title> | |
<!-- Cargar pdf.js desde un CDN --> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.min.js"></script> | |
<script> | |
// Configuraci贸n del worker de pdf.js | |
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.worker.min.js'; | |
</script> | |
</head> | |
<body> | |
<h1>Modelo de Preguntas y Respuestas sobre un PDF</h1> | |
<input type="file" id="pdfInput" /> | |
<button onclick="procesarPDF()">Cargar PDF</button> | |
<h2>Preguntar sobre el PDF</h2> | |
<input type="text" id="inputPregunta" placeholder="Escribe tu pregunta aqu铆"> | |
<button onclick="responderPregunta()">Hacer pregunta</button> | |
<h3>Respuesta:</h3> | |
<div id="respuesta"></div> | |
<script> | |
// Variable global para almacenar el texto del PDF | |
let textoPDF = ""; | |
// Cargar y procesar el archivo PDF | |
async function procesarPDF() { | |
const archivo = document.getElementById("pdfInput").files[0]; | |
if (archivo) { | |
const archivoPDF = await leerPDF(archivo); | |
textoPDF = archivoPDF.join(" "); | |
alert("PDF cargado y procesado."); | |
} | |
} | |
// Leer y extraer el texto del archivo PDF | |
async function leerPDF(archivo) { | |
const lector = new FileReader(); | |
return new Promise((resolve, reject) => { | |
lector.onload = async function (e) { | |
const arrayBuffer = e.target.result; | |
const pdf = await pdfjsLib.getDocument(arrayBuffer).promise; | |
let texto = []; | |
for (let i = 1; i <= pdf.numPages; i++) { | |
const pagina = await pdf.getPage(i); | |
const contenido = await pagina.getTextContent(); | |
const textoPagina = contenido.items.map(item => item.str).join(" "); | |
texto.push(textoPagina); | |
} | |
resolve(texto); | |
}; | |
lector.onerror = reject; | |
lector.readAsArrayBuffer(archivo); | |
}); | |
} | |
// Funci贸n para responder una pregunta utilizando el texto del PDF | |
async function responderPregunta() { | |
const pregunta = document.getElementById("inputPregunta").value; | |
if (!textoPDF) { | |
alert("Por favor, cargue un PDF primero."); | |
return; | |
} | |
// Tokenizar la pregunta y el contexto | |
const question = pregunta; | |
const context = textoPDF; | |
// Usar un modelo preentrenado como BERT o T5 de HuggingFace | |
const response = await obtenerRespuestaDeModelo(question, context); | |
// Mostrar la respuesta | |
document.getElementById("respuesta").innerText = "Respuesta: " + response; | |
} | |
// Funci贸n para obtener respuesta utilizando el modelo de Hugging Face | |
async function obtenerRespuestaDeModelo(question, context) { | |
// En este ejemplo, aqu铆 puedes integrar una API de preguntas y respuestas | |
// como Hugging Face o TensorFlow.js con BERT. | |
// En esta versi贸n solo devolveremos una frase que coincida con el contexto. | |
const fraseRespuesta = "Aqu铆 ir铆a la respuesta generada por el modelo (por ejemplo, usando BERT o T5)"; | |
return fraseRespuesta; | |
} | |
</script> | |
</body> | |
</html> | |