--- 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//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.