la04 commited on
Commit
7f96312
·
verified ·
1 Parent(s): 19dec9f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -13
app.py CHANGED
@@ -1,44 +1,52 @@
1
- import gradio as gr
2
  from transformers import pipeline
 
 
3
  from PyPDF2 import PdfReader
4
  import os
5
 
6
- # Setze das T5-small Modell für die Frage-Antwort-Pipeline
7
  qa_model = pipeline("question-answering", model="t5-small")
8
 
9
- # Funktion zur Extraktion von Text aus einer PDF-Datei
10
  def extract_text_from_pdf(pdf_path):
11
- # Lade die PDF und extrahiere den Text
12
  reader = PdfReader(pdf_path)
13
  text = ""
14
  for page in reader.pages:
15
  text += page.extract_text()
16
  return text
17
 
18
- # Funktion zur Beantwortung der Frage basierend auf dem extrahierten PDF-Text
19
  def chatbot_response(pdf_path, question):
20
- # Extrahiere den Text aus der PDF
21
  context = extract_text_from_pdf(pdf_path)
22
 
23
- # Generiere eine Antwort basierend auf der Frage und dem extrahierten Kontext
24
- result = qa_model(question=question, context=context)
 
 
 
 
 
 
 
 
25
 
26
- return result['answer']
 
27
 
28
  # Gradio-Interface erstellen
29
  pdf_input = gr.File(label="PDF-Datei hochladen", type="filepath")
30
  question_input = gr.Textbox(label="Frage eingeben", placeholder="Stelle eine Frage zu dem PDF-Dokument")
31
  response_output = gr.Textbox(label="Antwort")
32
 
33
- # Gradio-Interface für die Benutzeroberfläche
34
  interface = gr.Interface(
35
  fn=chatbot_response,
36
  inputs=[pdf_input, question_input],
37
  outputs=response_output,
38
- title="PDF-Fragebeantwortung mit T5 und Transformers",
39
- description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Das System verwendet T5, um die passende Antwort zu finden."
40
  )
41
 
42
- # Gradio-Interface starten
43
  if __name__ == "__main__":
44
  interface.launch()
 
 
1
  from transformers import pipeline
2
+ import gradio as gr
3
+ import torch
4
  from PyPDF2 import PdfReader
5
  import os
6
 
7
+ # T5-Modell laden
8
  qa_model = pipeline("question-answering", model="t5-small")
9
 
10
+ # Funktion zum Extrahieren von Text aus der PDF
11
  def extract_text_from_pdf(pdf_path):
 
12
  reader = PdfReader(pdf_path)
13
  text = ""
14
  for page in reader.pages:
15
  text += page.extract_text()
16
  return text
17
 
18
+ # Funktion für das Bearbeiten der Frage und des Kontextes
19
  def chatbot_response(pdf_path, question):
20
+ # PDF-Text extrahieren
21
  context = extract_text_from_pdf(pdf_path)
22
 
23
+ # Bei langen Dokumenten Text in Abschnitte unterteilen (max. 512 Tokens)
24
+ max_input_length = 512
25
+ context_parts = [context[i:i + max_input_length] for i in range(0, len(context), max_input_length)]
26
+
27
+ answers = []
28
+
29
+ # Iteriere über alle Textabschnitte und frage das Modell
30
+ for part in context_parts:
31
+ result = qa_model(question=question, context=part)
32
+ answers.append(result['answer'])
33
 
34
+ # Antworte mit der besten Antwort (du kannst auch mehrere Antworten kombinieren)
35
+ return answers[-1] if answers else "Keine Antwort gefunden"
36
 
37
  # Gradio-Interface erstellen
38
  pdf_input = gr.File(label="PDF-Datei hochladen", type="filepath")
39
  question_input = gr.Textbox(label="Frage eingeben", placeholder="Stelle eine Frage zu dem PDF-Dokument")
40
  response_output = gr.Textbox(label="Antwort")
41
 
42
+ # Gradio-Interface
43
  interface = gr.Interface(
44
  fn=chatbot_response,
45
  inputs=[pdf_input, question_input],
46
  outputs=response_output,
47
+ title="PDF-Fragebeantwortung mit T5 und Gradio",
48
+ description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Das System verwendet T5, um passende Antworten zu finden."
49
  )
50
 
 
51
  if __name__ == "__main__":
52
  interface.launch()