Update app.py
Browse files
app.py
CHANGED
@@ -2,10 +2,11 @@ import streamlit as st
|
|
2 |
import fitz # PyMuPDF
|
3 |
import requests
|
4 |
from graphviz import Digraph
|
|
|
5 |
|
6 |
# Funzione per estrarre testo da un PDF
|
7 |
def extract_text_from_pdf(pdf_file):
|
8 |
-
pdf_document = fitz.open(pdf_file)
|
9 |
text = ""
|
10 |
for page in pdf_document:
|
11 |
text += page.get_text()
|
@@ -24,31 +25,18 @@ def search_images(query):
|
|
24 |
images.append(img_url)
|
25 |
return images
|
26 |
|
27 |
-
# Funzione per creare una mappa mentale
|
28 |
-
def
|
29 |
dot = Digraph()
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
# Aggiungi nodi per ogni riga di testo
|
36 |
-
node_color = f"#{(i*40)%255:02x}{(i*80)%255:02x}{(i*120)%255:02x}" # Colore variabile per ogni nodo
|
37 |
-
dot.node(f'B{i}', line, shape='rect', style='filled', color=node_color, fontcolor='white', fontsize='14', width='2.5')
|
38 |
-
|
39 |
-
# Collega il nodo principale con i nodi secondari
|
40 |
-
dot.edge('A', f'B{i}', label='Dettaglio', color='black', style='dashed')
|
41 |
-
|
42 |
-
# Aggiungi immagini se disponibili
|
43 |
-
for j in range(min(3, len(images))): # Aggiungi fino a 3 immagini per nodo
|
44 |
-
img_node = f'Img{i}_{j}'
|
45 |
-
dot.node(img_node, '', image=images[j], shape='rect', width='0.5', height='0.5')
|
46 |
-
dot.edge(f'B{i}', img_node, label='Immagine', color='black')
|
47 |
-
|
48 |
return dot
|
49 |
|
50 |
# Inizializzazione della app Streamlit
|
51 |
-
st.title("Generatore di Mappe Mentali
|
52 |
st.write("Carica un PDF o inserisci del testo per generare una mappa mentale.")
|
53 |
|
54 |
# Opzioni di input
|
@@ -67,14 +55,9 @@ map_type = st.selectbox("Scegli il tipo di mappa", ["Mappa Concettuale", "Timeli
|
|
67 |
# Pulsante per generare la mappa
|
68 |
if st.button("Genera Mappa"):
|
69 |
if text:
|
70 |
-
|
71 |
-
images = []
|
72 |
-
|
73 |
-
# Esegui una ricerca di immagini per ogni riga di testo
|
74 |
-
for line in text_lines[:3]: # Limita la ricerca alle prime tre righe
|
75 |
-
images.extend(search_images(line))
|
76 |
-
|
77 |
-
mind_map = create_detailed_mind_map(text_lines, images)
|
78 |
st.graphviz_chart(mind_map)
|
79 |
else:
|
80 |
st.warning("Per favore, inserisci del testo o carica un PDF.")
|
|
|
2 |
import fitz # PyMuPDF
|
3 |
import requests
|
4 |
from graphviz import Digraph
|
5 |
+
import io
|
6 |
|
7 |
# Funzione per estrarre testo da un PDF
|
8 |
def extract_text_from_pdf(pdf_file):
|
9 |
+
pdf_document = fitz.open(stream=pdf_file.read(), filetype="pdf")
|
10 |
text = ""
|
11 |
for page in pdf_document:
|
12 |
text += page.get_text()
|
|
|
25 |
images.append(img_url)
|
26 |
return images
|
27 |
|
28 |
+
# Funzione per creare una mappa mentale
|
29 |
+
def create_mind_map(text, images):
|
30 |
dot = Digraph()
|
31 |
+
dot.node('A', 'Concept Central', style='filled', fillcolor='lightblue')
|
32 |
+
for i, img in enumerate(images):
|
33 |
+
dot.node(f'B{i}', text[i] if i < len(text) else 'Other', shape='rect', style='filled', fillcolor='lightyellow')
|
34 |
+
dot.edge('A', f'B{i}', label=f'Image {i+1}')
|
35 |
+
dot.node(f'B{i}', img, image=img)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
return dot
|
37 |
|
38 |
# Inizializzazione della app Streamlit
|
39 |
+
st.title("Generatore di Mappe Mentali")
|
40 |
st.write("Carica un PDF o inserisci del testo per generare una mappa mentale.")
|
41 |
|
42 |
# Opzioni di input
|
|
|
55 |
# Pulsante per generare la mappa
|
56 |
if st.button("Genera Mappa"):
|
57 |
if text:
|
58 |
+
# Esegui una ricerca di immagini basate sul testo
|
59 |
+
images = search_images(text.split()[:3]) # Usa le prime tre parole per la ricerca
|
60 |
+
mind_map = create_mind_map(text.split('\n'), images)
|
|
|
|
|
|
|
|
|
|
|
61 |
st.graphviz_chart(mind_map)
|
62 |
else:
|
63 |
st.warning("Per favore, inserisci del testo o carica un PDF.")
|