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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -30
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 dettagliata con più immagini
28
- def create_detailed_mind_map(text_lines, images):
29
  dot = Digraph()
30
-
31
- # Nodo principale
32
- dot.node('A', 'Concetti Principali', shape='ellipse', style='filled', color='lightblue', fontcolor='black', fontsize='20')
33
-
34
- for i, line in enumerate(text_lines):
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 Iperdettagliate")
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
- text_lines = text.split('\n')
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.")