Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,49 +1,43 @@
|
|
1 |
import gradio as gr
|
2 |
import chromadb
|
3 |
-
import
|
4 |
-
import
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
8 |
|
9 |
-
#
|
10 |
-
|
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(
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
-
|
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 |
-
|
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()
|
|