Spaces:
Sleeping
Sleeping
File size: 2,116 Bytes
e84a97b 7f96312 d8d8be1 d859c3e e84a97b 7bf65ec 7f96312 318ff7b d8d8be1 7f96312 adbd41e 7f96312 d8d8be1 e84a97b 7f96312 e84a97b 7f96312 e84a97b d8d8be1 e84a97b 7f96312 d8d8be1 d93fe74 318ff7b ee9ba92 7f96312 fbe3ac4 318ff7b 7f96312 fbe3ac4 ee9ba92 318ff7b |
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 |
from transformers import pipeline, T5ForConditionalGeneration, T5Tokenizer
import gradio as gr
from PyPDF2 import PdfReader
# T5-Modell und Tokenizer laden
model = T5ForConditionalGeneration.from_pretrained('t5-small')
tokenizer = T5Tokenizer.from_pretrained('t5-small')
qa_model = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
# Funktion zum Extrahieren von Text aus der PDF
def extract_text_from_pdf(pdf_path):
reader = PdfReader(pdf_path)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
# Funktion für das Bearbeiten der Frage und des Kontextes
def chatbot_response(pdf_path, question):
# PDF-Text extrahieren
context = extract_text_from_pdf(pdf_path)
# Text aufteilen, falls er zu lang ist
max_input_length = 512
context_parts = [context[i:i + max_input_length] for i in range(0, len(context), max_input_length)]
# Die Frage als Prompt an T5 schicken
answers = []
for part in context_parts:
input_text = f"question: {question} context: {part}"
input_ids = tokenizer.encode(input_text, return_tensors="pt", truncation=True, max_length=512)
output = model.generate(input_ids, max_length=150, num_beams=4, early_stopping=True)
answer = tokenizer.decode(output[0], skip_special_tokens=True)
answers.append(answer.strip())
# Gib die letzte Antwort zurück
return answers[-1] if answers else "Keine Antwort gefunden"
# Gradio-Interface erstellen
pdf_input = gr.File(label="PDF-Datei hochladen", type="filepath")
question_input = gr.Textbox(label="Frage eingeben", placeholder="Stelle eine Frage zu dem PDF-Dokument")
response_output = gr.Textbox(label="Antwort")
# Gradio-Interface
interface = gr.Interface(
fn=chatbot_response,
inputs=[pdf_input, question_input],
outputs=response_output,
title="PDF-Fragebeantwortung mit T5 und Gradio",
description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Das System verwendet T5, um passende Antworten zu finden."
)
if __name__ == "__main__":
interface.launch()
|