rosa0003 commited on
Commit
eb682a4
·
verified ·
1 Parent(s): 7dcad23

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -13
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
- 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
@@ -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 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.")
 
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.")