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
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+.
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
streamlit run app.py
L'app s'ouvre dans le navigateur (http://localhost:8501).
3. Utiliser
- 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 »).
- Réponds aux 7 questions (plan du jour, verre ou bouteille, couleur, bulles, sucre, corps, goûts, budget, envie en une phrase).
- GRAPP affiche ton top 3 avec le % de match. ❤️ pour garder un vin, 🔁 pour des vins du même style.
- Mes p'tits favoris : tes vins enregistrés (dans
data/favoris.json). - 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
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 :
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 (Streamlit compilé en WebAssembly via Pyodide). Pas de serveur, donc gratuit.
- Sur https://huggingface.co → New Space → nom
grapp, SDK Static. - Files → Upload files : glisse tout le contenu du dossier GRAPP (dossiers compris) → Commit.
- 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.