|
Download README.md from grappapp/grapp: direct link, hf CLI and curl.
- Browser
- Download file 6.59 kB
-
https://huggingface.co/spaces/grappapp/grapp/resolve/main/README.md
- Command line
-
hf download hf://spaces/grappapp/grapp/README.md
-
curl -L -o README.md https://huggingface.co/spaces/grappapp/grapp/resolve/main/README.md
6.59 kB
| title: GRAPP | |
| emoji: 🍇 | |
| colorFrom: pink | |
| colorTo: purple | |
| sdk: static | |
| pinned: false | |
| license: mit | |
| short_description: Choisir son vin sans se prendre la grappe | |
| # 🍇 GRAPP — L'app pour choisir ton vin sans te prendre la grappe | |
| > Même si t'y connais rien, GRAPP t'aide à trouver LE vin que tu kiffes, super facilement. | |
| **Problème.** En 60 ans, la consommation de vin des Français a chuté de 70 %. Les jeunes trouvent le vin élitiste, | |
| compliqué et intimidant (« c'est cher », « je préfère la bière », « au bar je commande une blonde, c'est plus facile »). | |
| Devant une carte des vins de resto, ils ne savent pas quoi choisir. Le vin pèse pourtant 15 % de la production agricole | |
| française en valeur, et 1 exploitation agricole sur 5 a une activité viticole. | |
| **Solution.** GRAPP (concept et direction artistique : projet de fin d'études de Manon Thomas, M2 DA, ECV Paris 2025) | |
| transforme la carte des vins en conseil personnalisé, sans jargon : | |
| | Module | Ce que ça fait | IA utilisée | | |
| |---|---|---| | |
| | 🥂 **Tchin Tchin !** | 1) photo de la carte du resto → GRAPP repère les vins proposés et leurs prix ; 2) quiz en 7 questions ; 3) top 3 avec un **% de match** et le *pourquoi* | OCR Tesseract + correspondance floue ; recommandation hybride (profil + embeddings de phrases Hugging Face) | | |
| | 💖 **Mes p'tits favoris** | Garde tes vins pépites et te propose des vins du même style | Similarité d'embeddings | | |
| | 💡 **Dico Vino** | Pose ta question comme tu veux (« pourquoi ma bouche gratte ? ») → explication cool du mot (ici : tanins) | Recherche sémantique | | |
| ### Ce qui va au-delà du cours | |
| - **Pipeline multimodal** : image → texte (OCR) → entités (vins) → recommandation. | |
| - **Correspondance floue** robuste aux erreurs d'OCR (« Cétes du Rhone » → Côtes du Rhône, « ler Cru » → 1er Cru). | |
| - **Recommandation hybride explicable** : score pondéré entre critères du quiz et similarité sémantique d'une phrase libre, | |
| avec les raisons affichées à l'utilisateur. | |
| - **Modèle Hugging Face multilingue** (`paraphrase-multilingual-MiniLM-L12-v2`) avec **repli automatique** sur TF-IDF | |
| hors ligne : l'app tourne toujours. | |
| --- | |
| ## 📘 Guide d'utilisation | |
| ### 1. Installer (une seule fois) | |
| Il faut **Python 3.10+**. | |
| ```bash | |
| cd GRAPP | |
| python -m venv .venv | |
| source .venv/bin/activate # Windows : .venv\Scripts\activate | |
| pip install -r requirements.txt | |
| ``` | |
| Pour lire les photos de cartes, installer aussi le moteur **Tesseract** : | |
| - macOS : `brew install tesseract tesseract-lang` | |
| - Windows : installeur sur https://github.com/UB-Mannheim/tesseract/wiki | |
| - Linux : `sudo apt install tesseract-ocr tesseract-ocr-fra` | |
| > Sans Tesseract, tout marche sauf la lecture de photo : on colle alors le texte de la carte. | |
| > Au premier lancement, le modèle Hugging Face (~470 Mo) se télécharge automatiquement. | |
| ### 2. Lancer | |
| ```bash | |
| streamlit run app.py | |
| ``` | |
| L'app s'ouvre dans le navigateur (http://localhost:8501). | |
| ### 3. Utiliser | |
| 1. **Tchin Tchin !** → choisis *Photo*, *Carte d'exemple (démo)* ou *Coller le texte*, puis **Lire la carte** | |
| (ou « Pas de carte, on passe au quiz »). | |
| 2. Réponds aux **7 questions** (plan du jour, verre ou bouteille, couleur, bulles, sucre, corps, goûts, budget, envie en une phrase). | |
| 3. GRAPP affiche ton **top 3** avec le % de match. ❤️ pour garder un vin, 🔁 pour des vins du même style. | |
| 4. **Mes p'tits favoris** : tes vins enregistrés (dans `data/favoris.json`). | |
| 5. **Dico Vino** : tape un mot ou une question. | |
| Scénario de démo conseillé pour la vidéo : *Carte d'exemple* → Apéro entre potes → bouteille → Rouge → Sans bulles → | |
| Sec → Léger → Fruité, 30 € → « un truc frais avec de la charcuterie » ⇒ Chinon / Beaujolais-Villages en tête. | |
| ### 4. Vérifier que tout marche | |
| ```bash | |
| python tests/test_grapp.py # ou : python -m pytest -q | |
| ``` | |
| ### 5. (Optionnel) Ajouter de vraies bouteilles notées — Kaggle | |
| Télécharger `winemag-data-130k-v2.csv` depuis https://www.kaggle.com/datasets/zynicide/wine-reviews dans `data/`, puis : | |
| ```bash | |
| python scripts/enrichir_kaggle.py | |
| ``` | |
| Chaque vin recommandé affiche alors les bouteilles réelles les mieux notées de son appellation. | |
| ### 6. Mettre l'app en ligne (lien public, gratuit) | |
| **Hugging Face Space statique + stlite :** `index.html` lance le même `app.py` directement dans le navigateur | |
| du visiteur grâce à [stlite](https://github.com/whitphx/stlite) (Streamlit compilé en WebAssembly via Pyodide). Pas de serveur, donc gratuit. | |
| 1. Sur https://huggingface.co → *New Space* → nom `grapp`, SDK **Static**. | |
| 2. *Files* → *Upload files* : glisse tout le contenu du dossier GRAPP (dossiers compris) → *Commit*. | |
| 3. Lien : `https://huggingface.co/spaces/<ton-pseudo>/grapp`. | |
| Différences avec la version locale : pas de Tesseract dans le navigateur (la carte d'exemple utilise le texte déjà | |
| extrait, `data/carte_exemple.txt` ; pour une autre carte, on colle son texte), et la recherche sémantique utilise le | |
| mode TF-IDF. Pour la version complète en ligne : `Dockerfile` (Hugging Face Docker, payant) ou Streamlit Community Cloud | |
| (gratuit, via GitHub, utilise `packages.txt`). | |
| > En ligne, les favoris sont gardés le temps de la visite. | |
| --- | |
| ## 🗂️ Contenu du projet | |
| ``` | |
| app.py Interface Streamlit (charte graphique du dossier PFE) | |
| grapp/engine.py Moteur de recommandation, embeddings, Dico Vino | |
| grapp/carte.py OCR de la carte + correspondance floue + prix | |
| data/vins.csv 75 profils de vins par appellation (couleur, bulles, sucre, corps, acidité, tanins, arômes, accords, prix) | |
| data/dico.csv 34 définitions du Dico Vino | |
| assets/carte_exemple.png Carte des vins fictive pour la démo | |
| scripts/build_dataset.py Régénère data/vins.csv | |
| scripts/generer_carte_exemple.py Régénère la carte d'exemple | |
| scripts/enrichir_kaggle.py Enrichissement optionnel avec Wine Reviews (Kaggle) | |
| tests/test_grapp.py Tests automatiques | |
| SOURCES.md Bibliothèques, modèles, données et sources citées | |
| PROMPTS.md Où et comment l'IA générative a été utilisée, avec les prompts | |
| ``` | |
| ## Limites | |
| - La base contient des **profils typiques d'appellation** (75), pas chaque domaine : deux vins d'une même appellation peuvent différer. | |
| - Les prix sont **indicatifs** (France, caviste) ; GRAPP utilise le prix de la carte quand il le lit. | |
| - À consommer avec modération. L'abus d'alcool est dangereux pour la santé. App réservée aux 18 ans et plus. | |