Contexte
Objectif : détecter et extraire le texte (titre, auteur) sur chaque tranche de livre à partir d'une photo d'étagère, en s'appuyant sur Google Cloud Vision (DOCUMENT_TEXT_DETECTION).
Approche 1 — Segmentation par vision classique
- Détecter les frontières verticales entre tranches (Canny + transformée de Hough, ou gradient de couleur)
- Découper l'image en bounding boxes verticales, une par tranche
- Appeler Cloud Vision sur chaque sous-image individuellement
- Post-traiter le texte extrait
Référence : zvory/book-spine-cataloguer — OpenCV pour localiser les rectangles de tranches + Tesseract pour l'OCR (basique, WIP, gère mal le multi-tranches).
Approche 2 — Clustering des bounding boxes Cloud Vision
- Appeler Cloud Vision une fois sur l'image entière (
DOCUMENT_TEXT_DETECTION)
- Récupérer les
boundingPoly de chaque mot et regrouper (clustering spatial) ceux alignés sur le même axe et proches en distance
- Extraire l'angle de chaque cluster et redresser (rotation) la sous-image correspondante
- Repasser un second appel OCR sur la sous-image redressée pour affiner
- Envoyer le texte extrait par tranche à une API (Google Books / Open Library) pour matcher et déduire titre/auteur exacts
Pas de projet open source identifié utilisant cette stratégie spécifique (clustering post-OCR plutôt que segmentation géométrique en amont) — semble être un angle différencié.
Approche 3 — Pipeline complet
Combine 1 et 2 :
- Redressement global de la photo (correction de perspective)
- Segmentation en tranches (approche 1 ou clustering de l'approche 2)
- Détection + gestion de la rotation par tranche
- Réordonnancement / matching via API externe (Google Books / Open Library)
Référence : Jybbs/shelfie — pipeline le plus proche : book segmenter, config optimizer (paramètres de prétraitement), fuzzy matcher (texte OCR vs base de titres connus), match approver (validation humaine des correspondances).
Approche 4 — Segmentation deep learning + LLM vision (alternative)
- Segmentation des tranches via un modèle YOLO (détection d'objets)
- Crop + rotation de chaque tranche extraite
- Lecture directe titre/auteur via un LLM vision (ex: Moondream2), sans passer par un OCR classique ni un matching externe
Référence : suxrobGM/bookshelf-scanner — YOLO 11x pour la segmentation, Moondream2 pour lire titre/auteur directement sur chaque tranche croppée. Évite le fuzzy matching, mais dépend d'un modèle de segmentation entraîné et d'un LLM vision.
Approche privilégiée
Approche 2 en premier (clustering des bounding boxes) : plus rapide à tester puisque Cloud Vision est déjà en place, ne nécessite pas de pré-traitement géométrique lourd. Bascule vers l'approche 1 (détection de lignes) si le clustering produit trop de faux regroupements sur les étagères mal alignées ou les tranches fines. L'approche 4 est à garder en tête comme alternative si le couple OCR+matching s'avère trop fragile sur du texte partiellement occlus ou stylisé.
Contexte
Objectif : détecter et extraire le texte (titre, auteur) sur chaque tranche de livre à partir d'une photo d'étagère, en s'appuyant sur Google Cloud Vision (
DOCUMENT_TEXT_DETECTION).Approche 1 — Segmentation par vision classique
Référence : zvory/book-spine-cataloguer — OpenCV pour localiser les rectangles de tranches + Tesseract pour l'OCR (basique, WIP, gère mal le multi-tranches).
Approche 2 — Clustering des bounding boxes Cloud Vision
DOCUMENT_TEXT_DETECTION)boundingPolyde chaque mot et regrouper (clustering spatial) ceux alignés sur le même axe et proches en distancePas de projet open source identifié utilisant cette stratégie spécifique (clustering post-OCR plutôt que segmentation géométrique en amont) — semble être un angle différencié.
Approche 3 — Pipeline complet
Combine 1 et 2 :
Référence : Jybbs/shelfie — pipeline le plus proche : book segmenter, config optimizer (paramètres de prétraitement), fuzzy matcher (texte OCR vs base de titres connus), match approver (validation humaine des correspondances).
Approche 4 — Segmentation deep learning + LLM vision (alternative)
Référence : suxrobGM/bookshelf-scanner — YOLO 11x pour la segmentation, Moondream2 pour lire titre/auteur directement sur chaque tranche croppée. Évite le fuzzy matching, mais dépend d'un modèle de segmentation entraîné et d'un LLM vision.
Approche privilégiée
Approche 2 en premier (clustering des bounding boxes) : plus rapide à tester puisque Cloud Vision est déjà en place, ne nécessite pas de pré-traitement géométrique lourd. Bascule vers l'approche 1 (détection de lignes) si le clustering produit trop de faux regroupements sur les étagères mal alignées ou les tranches fines. L'approche 4 est à garder en tête comme alternative si le couple OCR+matching s'avère trop fragile sur du texte partiellement occlus ou stylisé.