Algorithme pour détecter la présence de texte sur l'image

Avec ma nouvelle affectation, je suis à la recherche d'une méthode pour détecter la présence de texte sur l'image. L'image est une carte-peut être par exemple google map. La tâche consiste à détecter l'emplacement de l'étiquette de rue/ville.

je sais que la bibliothèque opencv dispose d'un algorithme qui peut détecter des caractéristiques (par exemple des visages humains) - Classificateur haar ou hog (histogramme de gradients orientés), mais j'ai entendu dire que le processus d'apprentissage de tels algorithmes est assez difficile.

Connaissez-vous un algorithme, une méthode ou une bibliothèque qui pourrait faire cela (détecter la présence de texte sur l'image)?

Merci, John

33
demandé sur Community 2011-01-05 19:08:47

3 réponses

il existe un problème standard de vision appelé détection de texte dans les images. il est tout à fait différent de l'OCR. La ROC se préoccupe de ce qu'elle dit, tandis que la détection de texte consiste à déterminer s'il y a du texte dans l'image. Le troisième lien d'Adi Shavit est une méthode pour résoudre ce problème. Vous pouvez consulter sur Google scholar Les articles bien cités sur détection de texte .

20
répondu carlosdc 2011-01-06 20:49:33

il y a plusieurs approches possibles que vous pouvez prendre.

  1. utiliser OCR. Une recherche de roc sur Stackoverflow montrera de nombreuses options. Il s'agit notamment de Tesseract et Ocropus .
  2. si votre texte utilise une police fixe très spécifique, vous pouvez vous en tirer avec simple template matching .
  3. dans le cas plus général vous pourriez vouloir jeter un oeil à " détection de texte dans les scènes naturelles avec la largeur de trait transformer

mise à jour janv. 2017

Le module contrib D'OpenCV 3.2 dispose désormais d'un module de détection de texte .

comprend également un échantillon de la façon de l'utiliser.

14
répondu Adi Shavit 2017-05-23 12:02:46

vous devez adapter cela à un type spécifique d'images de carte, ou le problème va être très difficile (voir le post précédent sur les liens aux articles).

ROC est la voie à suivre, et vous devez utiliser une bibliothèque existante. Toutefois, la ROC se fait principalement sur du texte sur fond blanc. Pour réduire votre problème à un problème OCR régulier, vous devriez essayer de travailler sur l'espace de couleur de la carte. Probablement le texte de carte a une couleur et cela peut être suffisant pour trouver ces pixels. Vous pouvez ensuite filtrer les pixels détectés en fonction de la taille de connecté régions.

si vous voulez littéralement seulement trouver les emplacements des étiquettes de texte, vous pouvez faire ce qui précède, et à peu près sauter l'étape OCR. Si les étiquettes ne sont pas trop proches, de simples algorithmes de regroupement peuvent être utilisés pour trouver leurs positions respectives.

-1
répondu mahogny 2013-09-21 08:05:10