Update app.py
Browse files
app.py
CHANGED
@@ -2,7 +2,6 @@ import streamlit as st
|
|
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):
|
@@ -27,12 +26,23 @@ def search_images(query):
|
|
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 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
return dot
|
37 |
|
38 |
# Inizializzazione della app Streamlit
|
@@ -49,15 +59,16 @@ if input_option == 'Carica PDF':
|
|
49 |
else:
|
50 |
text = st.text_area("Inserisci il testo:", height=300)
|
51 |
|
52 |
-
# Menu a tendina per le opzioni di mappa
|
53 |
-
map_type = st.selectbox("Scegli il tipo di mappa", ["Mappa Concettuale", "Timeline", "Diagramma di Flusso", "Diagramma a Ragnatela"])
|
54 |
-
|
55 |
# Pulsante per generare la mappa
|
56 |
if st.button("Genera Mappa"):
|
57 |
if text:
|
58 |
-
# Esegui una ricerca di immagini basate
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
61 |
st.graphviz_chart(mind_map)
|
62 |
else:
|
63 |
st.warning("Per favore, inserisci del testo o carica un PDF.")
|
|
|
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):
|
|
|
26 |
|
27 |
# Funzione per creare una mappa mentale
|
28 |
def create_mind_map(text, images):
|
29 |
+
dot = Digraph(format='png', graph_attr={'rankdir': 'LR'})
|
30 |
+
dot.node('A', 'Concept Central', shape='ellipse', style='filled', fillcolor='lightblue', fontsize='24')
|
31 |
+
|
32 |
+
# Divide il testo in righe per i nodi
|
33 |
+
lines = text.split('\n')
|
34 |
+
|
35 |
+
for i, line in enumerate(lines):
|
36 |
+
if line.strip(): # Solo linee non vuote
|
37 |
+
# Aggiungi un nodo per ogni linea di testo
|
38 |
+
dot.node(f'B{i}', line.strip(), shape='rect', style='filled', fillcolor='lightyellow', fontsize='18')
|
39 |
+
dot.edge('A', f'B{i}', label=f'Subject {i + 1}')
|
40 |
+
|
41 |
+
# Aggiungi le immagini associate
|
42 |
+
if i < len(images):
|
43 |
+
dot.node(f'Image{i}', '', image=images[i], shape='rect', width='2', height='2')
|
44 |
+
dot.edge(f'B{i}', f'Image{i}')
|
45 |
+
|
46 |
return dot
|
47 |
|
48 |
# Inizializzazione della app Streamlit
|
|
|
59 |
else:
|
60 |
text = st.text_area("Inserisci il testo:", height=300)
|
61 |
|
|
|
|
|
|
|
62 |
# Pulsante per generare la mappa
|
63 |
if st.button("Genera Mappa"):
|
64 |
if text:
|
65 |
+
# Esegui una ricerca di immagini basate sulle prime tre parole del testo
|
66 |
+
keywords = text.split()[:3] # Usa le prime tre parole per la ricerca
|
67 |
+
images = []
|
68 |
+
for keyword in keywords:
|
69 |
+
images += search_images(keyword) # Aggiungi immagini per ciascuna parola
|
70 |
+
|
71 |
+
mind_map = create_mind_map(text, images)
|
72 |
st.graphviz_chart(mind_map)
|
73 |
else:
|
74 |
st.warning("Per favore, inserisci del testo o carica un PDF.")
|