alexkueck commited on
Commit
0353295
·
verified ·
1 Parent(s): 0e230b8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -22
app.py CHANGED
@@ -20,15 +20,15 @@ import torch
20
 
21
 
22
  # Zugriff auf das Secret als Umgebungsvariable
23
- HF_WRITE = os.getenv("HF_WRITE")
24
  HF_READ = os.getenv("HF_READ")
25
 
26
  # CONSTANTS
27
- REPO_ID = "alexkueck/kkg_suche"
28
- REPO_TYPE = "space"
29
 
30
  # HfApi-Instanz erstellen
31
- api = HfApi()
32
 
33
 
34
  # Relativer Pfad zum Verzeichnis mit den Dokumenten
@@ -40,7 +40,9 @@ DOCS_DIR = "kkg_dokumente"
40
  model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
41
 
42
 
43
- # Funktion zum Extrahieren von Text aus PDF
 
 
44
  def extract_text_from_pdf(pdf_path):
45
  doc = fitz.open(pdf_path)
46
  pages = []
@@ -70,7 +72,8 @@ def extract_text_from_docx(docx_path):
70
  pages.append({'header': header, 'content': '\n'.join(current_page)})
71
  return pages
72
 
73
- # Initialisierung der Dokumente
 
74
  def initialize_documents():
75
  documents = []
76
  if os.path.exists(DOCS_DIR):
@@ -85,6 +88,21 @@ def initialize_documents():
85
  documents.append({"file": file_name, "pages": pages})
86
  return documents
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  # Hochladen von Dateien
89
  def upload_pdf(file):
90
  if file is None:
@@ -113,25 +131,18 @@ def display_files():
113
  file_size = os.path.getsize(file_path) / 1024 # Größe in KB
114
  row_color = "#4f4f4f" if i % 2 == 0 else "#3a3a3a" # Wechselnde Zeilenfarben
115
  files_table += f"<tr style='background-color: {row_color}; border-bottom: 1px solid #ddd;'>"
116
- files_table += f"<td>{download_link(file)}</td>"
117
  files_table += f"<td>{file_size:.2f}</td></tr>"
118
  files_table += "</table>"
119
  return files_table
120
 
121
 
 
122
  def list_pdfs():
123
  if not os.path.exists(DOCS_DIR):
124
  return []
125
  return [f for f in os.listdir(SAVE_DIR) if f.endswith('.pdf')]
126
 
127
- ######################################
128
- #nach relevanten suche -> download Link der passenden Dokuemtne erstellen
129
- def download_link(doc_name):
130
- # URL für das Herunterladen der Datei
131
- file_url = f"https://huggingface.co/spaces/alexkueck/kkg_suche/resolve/main/kkg_dokumente/{doc_name}?token={HF_READ}"
132
- return f'<b><a href="{file_url}" target="_blank" style="color: #b56edc; font-weight: bold;">{doc_name}</a></b>'
133
-
134
-
135
 
136
  ###########################################################
137
  ############# KI um Suchanfrage zu Embedden ###############
@@ -202,15 +213,12 @@ def search_documents(query):
202
  if header_content:
203
  snippet += f"<b>Überschrift:{header_content}</b> <br>"
204
 
205
- snippet += f"{page_content[start:end]}<br><hr>"
206
  relevant_text += snippet
207
 
208
  if doc['file'] not in relevant_docs:
209
  relevant_docs[doc['file']] = []
210
  relevant_docs[doc['file']].append(snippet)
211
-
212
-
213
-
214
 
215
  # Sortieren nach Relevanz
216
  results = sorted(results, key=lambda x: x[1], reverse=True)
@@ -220,7 +228,8 @@ def search_documents(query):
220
  return results, relevant_text
221
 
222
 
223
-
 
224
  #######################################
225
  #Suche starten und View aktialisieren
226
  def search_and_update(query):
@@ -240,6 +249,7 @@ def search_and_update(query):
240
  relevant_text = "<div class='no-results'>Kein relevanter Text gefunden.</div>"
241
 
242
  return doc_links, relevant_text
 
243
 
244
  ######################################################################
245
  ############### Anwendung starten ####################################
@@ -257,7 +267,7 @@ with gr.Blocks(css="""
257
  }
258
  .doc-name {
259
  font-weight: bold;
260
- color: #B05DF9; /* Helles Lila für verlinkte Dokumente */
261
  }
262
  .page-number {
263
  font-weight: bold;
@@ -273,7 +283,7 @@ with gr.Blocks(css="""
273
  width: 100%; /* Volle Breite */
274
  }
275
  #doc_links a {
276
- color: #B05DF9; /* Helles Lila für Links im doc_links Feld */
277
  font-weight: bold;
278
  width: 100%; /* Volle Breite */
279
  }
 
20
 
21
 
22
  # Zugriff auf das Secret als Umgebungsvariable
23
+ #HF_WRITE = os.getenv("HF_WRITE")
24
  HF_READ = os.getenv("HF_READ")
25
 
26
  # CONSTANTS
27
+ #REPO_ID = "alexkueck/kkg_suche"
28
+ #REPO_TYPE = "space"
29
 
30
  # HfApi-Instanz erstellen
31
+ #api = HfApi()
32
 
33
 
34
  # Relativer Pfad zum Verzeichnis mit den Dokumenten
 
40
  model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
41
 
42
 
43
+ ########################################################
44
+ ######## Hilfsfunktionen ###############################
45
+ # Funktion zum Extrahieren von Text aus PDF - und Word
46
  def extract_text_from_pdf(pdf_path):
47
  doc = fitz.open(pdf_path)
48
  pages = []
 
72
  pages.append({'header': header, 'content': '\n'.join(current_page)})
73
  return pages
74
 
75
+
76
+ # Initialisierung der Dokumente - Dictionary um die Dokuemtneteninhalte, Switen und Überschriften zu halten
77
  def initialize_documents():
78
  documents = []
79
  if os.path.exists(DOCS_DIR):
 
88
  documents.append({"file": file_name, "pages": pages})
89
  return documents
90
 
91
+
92
+ ######################################
93
+ #nach relevanten suche -> download Link der passenden Dokuemtne erstellen
94
+ def download_link(doc_name):
95
+ # URL für das Herunterladen der Datei
96
+ file_url = f"https://huggingface.co/spaces/alexkueck/kkg_suche/resolve/main/kkg_dokumente/{doc_name}?token={HF_READ}"
97
+ return f'<b><a href="{file_url}" target="_blank" style="color: #BB70FC; font-weight: bold;">{doc_name}</a></b>'
98
+
99
+
100
+ # Zeitelumbrüche entfernen
101
+ def remove_line_breaks(text):
102
+ return text.replace('\n', ' ').replace('\r', ' ')
103
+
104
+ ########################################################
105
+ ######## Hilfsfunktionen Datei-Upload ##################
106
  # Hochladen von Dateien
107
  def upload_pdf(file):
108
  if file is None:
 
131
  file_size = os.path.getsize(file_path) / 1024 # Größe in KB
132
  row_color = "#4f4f4f" if i % 2 == 0 else "#3a3a3a" # Wechselnde Zeilenfarben
133
  files_table += f"<tr style='background-color: {row_color}; border-bottom: 1px solid #ddd;'>"
134
+ files_table += f"<td><b>{download_link(file)}</b></td>"
135
  files_table += f"<td>{file_size:.2f}</td></tr>"
136
  files_table += "</table>"
137
  return files_table
138
 
139
 
140
+ # gefundene relevante Dokumente auflisten (links)
141
  def list_pdfs():
142
  if not os.path.exists(DOCS_DIR):
143
  return []
144
  return [f for f in os.listdir(SAVE_DIR) if f.endswith('.pdf')]
145
 
 
 
 
 
 
 
 
 
146
 
147
  ###########################################################
148
  ############# KI um Suchanfrage zu Embedden ###############
 
213
  if header_content:
214
  snippet += f"<b>Überschrift:{header_content}</b> <br>"
215
 
216
+ snippet += f"{remove_line_breaks(page_content[start:end])}<br><hr>"
217
  relevant_text += snippet
218
 
219
  if doc['file'] not in relevant_docs:
220
  relevant_docs[doc['file']] = []
221
  relevant_docs[doc['file']].append(snippet)
 
 
 
222
 
223
  # Sortieren nach Relevanz
224
  results = sorted(results, key=lambda x: x[1], reverse=True)
 
228
  return results, relevant_text
229
 
230
 
231
+ ###########################################################
232
+ ############## Vorbereitung View in gradio ################
233
  #######################################
234
  #Suche starten und View aktialisieren
235
  def search_and_update(query):
 
249
  relevant_text = "<div class='no-results'>Kein relevanter Text gefunden.</div>"
250
 
251
  return doc_links, relevant_text
252
+
253
 
254
  ######################################################################
255
  ############### Anwendung starten ####################################
 
267
  }
268
  .doc-name {
269
  font-weight: bold;
270
+ color: #B05DF9; /* Dunkleres Lila für verlinkte Dokumente */
271
  }
272
  .page-number {
273
  font-weight: bold;
 
283
  width: 100%; /* Volle Breite */
284
  }
285
  #doc_links a {
286
+ color: #BB70FC; /* Helles Lila für Links im doc_links Feld */
287
  font-weight: bold;
288
  width: 100%; /* Volle Breite */
289
  }