예제 #1
0
class NamePathRecognizer(object):
    def __init__(self):
        self.nom_rue_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.9, max_scale=1.1)
        self.nom_rue_recognizer.load_from_svg(REFERENCE_NOM_DE_RUE)
        self.nom_quartier_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.9, max_scale=1.1, force_horizontal=True)
        self.nom_quartier_recognizer .load_from_svg(REFERENCE_NOM_DE_QUARTIER)
        # Il y a parfois des noms écrits en petit, pour les des lotissement par exemple, on réutilise
        # la même base de donnée utilisée pour les nom de rues mais en diminuant la taille (scale):
        self.petit_nom_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.55, max_scale=0.69, force_horizontal=True)
        self.petit_nom_recognizer.database = self.nom_rue_recognizer.database
        self.petit_nom_recognizer.space_width = self.nom_rue_recognizer.space_width * (self.petit_nom_recognizer.max_scale + self.petit_nom_recognizer.min_scale) / (self.nom_rue_recognizer.max_scale + self.nom_rue_recognizer.min_scale)
        self.rues = []
        self.quartiers = []
    def handle_path(self, path, transform):
        found = self.nom_quartier_recognizer.recognize(path)
        for recognizer, liste in [(self.nom_quartier_recognizer, self.quartiers), (self.petit_nom_recognizer, self.rues), (self.nom_rue_recognizer, self.rues)]:
            found = recognizer.recognize(path)
            if found:
                text, position, angle = found
                # On rejette les mots commencant par un chiffre:
                if not ord(text[0]) in range(ord('0'), ord('9')+1):
                    liste.append((text, transform(position), angle))
                    if text.find("???") == -1: 
                        return True
        return False        
예제 #2
0
 def __init__(self):
     self.nom_rue_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.9, max_scale=1.1)
     self.nom_rue_recognizer.load_from_svg(REFERENCE_NOM_DE_RUE)
     self.nom_quartier_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.9, max_scale=1.1, force_horizontal=True)
     self.nom_quartier_recognizer .load_from_svg(REFERENCE_NOM_DE_QUARTIER)
     # Il y a parfois des noms écrits en petit, pour les des lotissement par exemple, on réutilise
     # la même base de donnée utilisée pour les nom de rues mais en diminuant la taille (scale):
     self.petit_nom_recognizer = TextPathRecognizer(tolerance=0.05, min_scale=0.55, max_scale=0.69, force_horizontal=True)
     self.petit_nom_recognizer.database = self.nom_rue_recognizer.database
     self.petit_nom_recognizer.space_width = self.nom_rue_recognizer.space_width * (self.petit_nom_recognizer.max_scale + self.petit_nom_recognizer.min_scale) / (self.nom_rue_recognizer.max_scale + self.nom_rue_recognizer.min_scale)
     self.rues = []
     self.quartiers = []