Skip to content

Reconnaissance de texte sur les tranches de livres - approches possibles #44

Description

@arenier

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

  1. Détecter les frontières verticales entre tranches (Canny + transformée de Hough, ou gradient de couleur)
  2. Découper l'image en bounding boxes verticales, une par tranche
  3. Appeler Cloud Vision sur chaque sous-image individuellement
  4. 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

  1. Appeler Cloud Vision une fois sur l'image entière (DOCUMENT_TEXT_DETECTION)
  2. Récupérer les boundingPoly de chaque mot et regrouper (clustering spatial) ceux alignés sur le même axe et proches en distance
  3. Extraire l'angle de chaque cluster et redresser (rotation) la sous-image correspondante
  4. Repasser un second appel OCR sur la sous-image redressée pour affiner
  5. 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 :

  1. Redressement global de la photo (correction de perspective)
  2. Segmentation en tranches (approche 1 ou clustering de l'approche 2)
  3. Détection + gestion de la rotation par tranche
  4. 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)

  1. Segmentation des tranches via un modèle YOLO (détection d'objets)
  2. Crop + rotation de chaque tranche extraite
  3. 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é.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions