Spaces:
Sleeping
Sleeping
from transformers import pipeline, AutoModelForQuestionAnswering, AutoTokenizer | |
import gradio as gr | |
from PyPDF2 import PdfReader | |
# Modell und Tokenizer für Fragebeantwortung laden | |
model_name = "deepset/roberta-base-squad2" | |
model = AutoModelForQuestionAnswering.from_pretrained(model_name) | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
qa_pipeline = pipeline("question-answering", 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 die Fragebeantwortung | |
def chatbot_response(pdf_path, question): | |
# PDF-Text extrahieren | |
context = extract_text_from_pdf(pdf_path) | |
# Frage beantworten | |
try: | |
result = qa_pipeline(question=question, context=context) | |
return result['answer'] | |
except Exception as e: | |
return f"Fehler bei der Beantwortung: {e}" | |
# 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 auf Deutsch", | |
description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Antworten basieren nur auf den PDF-Inhalten." | |
) | |
if __name__ == "__main__": | |
interface.launch() | |