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
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 = []