mgokg commited on
Commit
dbd949c
·
verified ·
1 Parent(s): cb0a01f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -41
app.py CHANGED
@@ -1,49 +1,43 @@
1
  import gradio as gr
2
  import chromadb
3
- import fitz # PyMuPDF
4
- import time
5
 
6
- client = chromadb.PersistentClient(path="./")
7
- collection = client.get_or_create_collection(name="code")
 
 
8
 
9
- # Funktion zum Extrahieren von Text aus einer PDF-Datei
10
- def extract_text_from_pdf(file_path):
11
- try:
12
- #doc = fitz.open(file_path)
13
- text = 'Entwicklung eines Chrome Browser Speech-to-Text Plugins: Projektübersicht: In diesem Projekt werden wir ein Chrome Browser Plugin entwickeln, das Sprache in Text umwandelt und dann in eine fokussierte Textarea einer beliebigen Webseite einfügt. Dieses Plugin kann hilfreich sein für Menschen mit motorischen Behinderungen oder für Leute, die lieber sprechen als tippen. Schritt 1: Planung Bevor wir mit der Entwicklung beginnen, sollten wir eine klare Vorstellung davon haben, was unser Plugin leisten soll. Wir benötigen ein Mikrofon-Symbol in der Browser-Symbolleiste, um das Plugin zu aktivieren, sowie einen Knopf, um die Sprache in Text umzuwandeln und in die ausgewählte Textarea einzufügen. Schritt 2: Forschung Um ein Speech-to-Text-Plugin zu entwickeln, müssen wir uns mit der Web Speech API von Chrome vertraut machen. Diese API umfasst zwei Hauptkomponenten: die SpeechRecognition- und die SpeechSynthesis-Schnittstelle. Für dieses Projekt brauchen wir jedoch nur die SpeechRecognition-Schnittstelle. Schritt 3: Entwicklung Wir beginnen mit dem Erstellen einer Datei namens "manifest.json", in der wir Informationen über unser Plugin angeben. Hier ist ein Beispiel: { "manifest\_version": 2, "name": "Speech-to-Text Plugin", "description": "Dieses Plugin verwandelt Sprache in Text und fügt sie in eine fokussierte Textarea ein.", "version": "1.0", "permissions": [ "activeTab", "storage" ], "browser\_action": { "default\_icon": "icon.png", "default\_title": "Speech-to-Text" }, "background": { "scripts": [ "background.js" ] } } Danach erstellen wir die Datei "background.js", in der wir eine Methode namens "activate" definieren, die aufgerufen wird, wenn das Mikrofon-Symbol in der Symbolleiste geklickt wird. Diese Methode startet die Spracherkennung und fügt das Mikrofon-Symbol in die Symbolleiste ein. Wir erstellen auch eine Methode namens "injectScript", die ein Skript in die aktive Registerkarte injiziert. Dieses Skript enthält eine Funktion namens "pasteText", die aufgerufen wird, wenn die Sprache in Text umgewandelt und in eine Textarea eingefügt werden soll. Schritt 4: Erstellung des Kontextmenüs Um ein Kontextmenü zu erstellen, definieren wir eine Methode namens "createContextMenu" in "background.js", die ein Kontextmenü mit einem Eintrag erstellt. Wenn dieser Eintrag geklickt wird, wird die Methode "pasteText" aufgerufen. Schritt 5: Testen Zum Schluss testen wir unser Plugin auf verschiedenen Webseiten, um sicherzustellen, dass es einwandfrei funktioniert. Abschlussbemerkung: Wir haben in diesem Projekt ein Speech-to-Text-Plugin für Chrome entwickelt, das Sprache in Text umwandelt und dann in eine fokussierte Textarea einer beliebigen Webseite einfügt. Durch das Hinzufügen des Mikrofon-Symbols in die Symbolleiste und das Erstellen eines Kontextmenüs können Benutzer das Plugin jederzeit und überall aktivieren.'
14
- #for page in doc:
15
- #text += page.get_text()
16
- return text
17
- except Exception as e:
18
- return f"Fehler beim Lesen der PDF-Datei: {e}"
19
 
20
- def process_pdf(uploaded_file, prompt):
21
- if uploaded_file is not None:
22
- # Text aus der hochgeladenen PDF-Datei extrahieren
23
- pdf_text = extract_text_from_pdf(uploaded_file.name) # Hier muss der Dateipfad korrekt behandelt werden
24
- timestamp = time.time()
25
- if pdf_text:
26
- collection.add(
27
- documents=[pdf_text],
28
- ids=[timestamp]
29
- )
30
- print(pdf_text)
31
- return pdf_text
 
 
 
 
 
 
32
 
33
- def suchen(inputs):
34
- test = "hallöle"
35
- return test
 
 
 
36
 
37
- def main():
38
- gr.Interface(
39
- fn=process_pdf,
40
- inputs=[gr.File(type="filepath", label="Upload PDF File"),
41
- gr.Textbox(lines=2, placeholder="Ask a Question")],
42
- outputs="text",
43
- title="PDF Chatbot",
44
- description="Upload a PDF file and ask questions about its content."
45
- ).launch()
46
 
47
-
48
- if __name__ == "__main__":
49
- main()
 
1
  import gradio as gr
2
  import chromadb
3
+ from chromadb.utils import embedding_functions
4
+ from PyPDF2 import PdfReader
5
 
6
+ # Initialisiere ChromaDB
7
+ client = chromadb.Client()
8
+ collection_name = "pdf_collection"
9
+ collection = client.get_or_create_collection(name=collection_name)
10
 
11
+ # Verwende die integrierten Embeddings von ChromaDB
12
+ embedding_function = embedding_functions.DefaultEmbeddingFunction()
 
 
 
 
 
 
 
 
13
 
14
+ def process_pdf(file):
15
+ # Lese den PDF-Inhalt
16
+ pdf_reader = PdfReader(file.name)
17
+ text = ""
18
+ for page in pdf_reader.pages:
19
+ text += page.extract_text()
20
+
21
+ # Erstelle Embedding
22
+ embedding = embedding_function([text])[0]
23
+
24
+ # Speichere das PDF in ChromaDB
25
+ collection.add(
26
+ documents=[text],
27
+ metadatas=[{"filename": file.name}],
28
+ ids=[file.name] # Verwende den Dateinamen als ID
29
+ )
30
+
31
+ return f"PDF {file.name} wurde erfolgreich in ChromaDB gespeichert."
32
 
33
+ # Erstelle die Gradio-Schnittstelle
34
+ with gr.Blocks() as demo:
35
+ gr.Markdown("# PDF Upload to ChromaDB")
36
+ file_input = gr.File(label="Wähle eine PDF-Datei aus", type="file")
37
+ submit_button = gr.Button("Hochladen")
38
+ output_text = gr.Textbox(label="Status")
39
 
40
+ submit_button.click(process_pdf, inputs=file_input, outputs=output_text)
 
 
 
 
 
 
 
 
41
 
42
+ # Starte die Gradio-Anwendung
43
+ demo.launch()