adrescop commited on
Commit
fddeb71
·
verified ·
1 Parent(s): bacf93f

Version web : app.py et README

Browse files
Files changed (3) hide show
  1. README.md +12 -11
  2. app.py +8 -1
  3. style.css +0 -28
README.md CHANGED
@@ -3,8 +3,7 @@ title: GRAPP
3
  emoji: 🍇
4
  colorFrom: pink
5
  colorTo: purple
6
- sdk: streamlit
7
- app_file: app.py
8
  pinned: false
9
  license: mit
10
  short_description: Choisir son vin sans se prendre la grappe
@@ -87,17 +86,19 @@ python scripts/enrichir_kaggle.py
87
  ```
88
  Chaque vin recommandé affiche alors les bouteilles réelles les mieux notées de son appellation.
89
 
90
- ### 6. Mettre l'app en ligne (lien public)
91
- **Hugging Face Spaces (gratuit) :**
92
- 1. Crée un compte sur https://huggingface.co puis *New Space* → nom `grapp`, SDK **Streamlit**, matériel *CPU basic (free)*.
93
- 2. Onglet *Files* → *Upload files* : glisse **tout le contenu** du dossier GRAPP (dossiers compris), puis *Commit*.
94
- 3. Attends 3 à 5 minutes (construction). Ton lien : `https://huggingface.co/spaces/<ton-pseudo>/grapp`.
 
95
 
96
- Le bloc `---` en haut de ce README et le fichier `packages.txt` (qui installe Tesseract) servent à Hugging Face.
 
 
 
97
 
98
- **Alternative, Streamlit Community Cloud :** mets le dossier sur GitHub, puis https://share.streamlit.io → *Create app* → choisis le dépôt et `app.py`.
99
-
100
- > En ligne, les favoris sont partagés par tous les visiteurs et remis à zéro à chaque redémarrage.
101
 
102
  ---
103
 
 
3
  emoji: 🍇
4
  colorFrom: pink
5
  colorTo: purple
6
+ sdk: static
 
7
  pinned: false
8
  license: mit
9
  short_description: Choisir son vin sans se prendre la grappe
 
86
  ```
87
  Chaque vin recommandé affiche alors les bouteilles réelles les mieux notées de son appellation.
88
 
89
+ ### 6. Mettre l'app en ligne (lien public, gratuit)
90
+ **Hugging Face Space statique + stlite :** `index.html` lance le même `app.py` directement dans le navigateur
91
+ du visiteur grâce à [stlite](https://github.com/whitphx/stlite) (Streamlit compilé en WebAssembly via Pyodide). Pas de serveur, donc gratuit.
92
+ 1. Sur https://huggingface.co → *New Space* → nom `grapp`, SDK **Static**.
93
+ 2. *Files* → *Upload files* : glisse tout le contenu du dossier GRAPP (dossiers compris) → *Commit*.
94
+ 3. Lien : `https://huggingface.co/spaces/<ton-pseudo>/grapp`.
95
 
96
+ Différences avec la version locale : pas de Tesseract dans le navigateur (la carte d'exemple utilise le texte déjà
97
+ extrait, `data/carte_exemple.txt` ; pour une autre carte, on colle son texte), et la recherche sémantique utilise le
98
+ mode TF-IDF. Pour la version complète en ligne : `Dockerfile` (Hugging Face Docker, payant) ou Streamlit Community Cloud
99
+ (gratuit, via GitHub, utilise `packages.txt`).
100
 
101
+ > En ligne, les favoris sont gardés le temps de la visite.
 
 
102
 
103
  ---
104
 
app.py CHANGED
@@ -173,7 +173,14 @@ with tab_tchin:
173
  st.warning("Ajoute d'abord une photo 😉")
174
  st.stop()
175
  with st.spinner("L'IA déchiffre la carte…"):
176
- texte = ocr_image(img)
 
 
 
 
 
 
 
177
  trouves = trouver_vins(texte, noms)
178
  except RuntimeError as err:
179
  st.error(f"Lecture impossible : {err}. Colle plutôt le texte de la carte.")
 
173
  st.warning("Ajoute d'abord une photo 😉")
174
  st.stop()
175
  with st.spinner("L'IA déchiffre la carte…"):
176
+ try:
177
+ texte = ocr_image(img)
178
+ except RuntimeError:
179
+ # Version web (navigateur) : pas de Tesseract. Pour la carte
180
+ # d'exemple, on reprend le texte que Tesseract en a extrait.
181
+ if not source.startswith("🧾"):
182
+ raise
183
+ texte = (ROOT / "data" / "carte_exemple.txt").read_text(encoding="utf-8")
184
  trouves = trouver_vins(texte, noms)
185
  except RuntimeError as err:
186
  st.error(f"Lecture impossible : {err}. Colle plutôt le texte de la carte.")
style.css DELETED
@@ -1,28 +0,0 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
- }
5
-
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
- }
10
-
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
- }
17
-
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
- }
25
-
26
- .card p:last-child {
27
- margin-bottom: 0;
28
- }