Inspiration

Avant de fabriquer l'armature d'un bâtiment, un ingénieur doit vérifier que les dessins d'atelier du sous-traitant respectent les plans de structure : repère, diamètre, quantité, espacement et longueur de chaque barre. Aujourd'hui, cela se fait à la main, PDF contre PDF, feuillet par feuillet. Des centaines de pages, aucune valeur ajoutée, et une erreur qui passe se paie au chantier. Nous voulions que l'ingénieur ne regarde plus que ce qui diffère.

Ce que fait l'outil

l2c-rebar prend les PDF d'un projet (plans et dessins d'atelier) et produit :

  • une base JSON de chaque annotation d'armature, avec feuillet, page et coordonnées x, y, validée selon le schéma imposé ;
  • un rapport PDF par feuillet : conformes, non conformes, manquants, ajoutés, puis une liste de tous les écarts triée par feuillet et par axes de la grille (« axes B-12 »), avec un extrait d'image du plan et de l'atelier pour chaque écart ;
  • des PDF annotés, où chaque écart est encerclé sur les deux documents avec un lien de l'un à l'autre ;
  • un fichier CSV des écarts, une interface de validation (Streamlit) pour les cas incertains et une comparaison de révisions.

Tout s'exécute en local : aucun document ne quitte la machine.

Comment nous l'avons construit

  1. Lire. La couche texte des PDF est lue avec PyMuPDF. Les pages sans texte (des tracés CAO) passent par un OCR local, PP-OCRv5 via RapidOCR sur GPU. En ne montrant à l'OCR que les traits de la taille d'un caractère, puis en passant à 300 dpi, la part des annotations lues exactement passe de 57 % à 85 % sur une page de référence.
  2. Analyser. Une grammaire reconnaît les notations métriques et impériales des plans et des ateliers : 8-25M, 12(6)-15M, 15M@300 c/c, 24 15M 15A12 @12".
  3. Retrouver les colonnes. Au plan, une colonne n'a pas de nom : c'est un rectangle plein à un croisement de la grille, avec une étiquette posée à côté. L'outil reconstruit la grille à partir des bulles d'axes et relie chaque étiquette à son rectangle par le décalage que le dessinateur répète. Il nomme ensuite la colonne par son croisement, B-12, comme le fait l'atelier.
  4. Calibrer par accord. Une idée simple guide tout le reste : la plus grande partie d'un dessin d'atelier concorde avec son plan. Quand une convention est ambiguë (numérotation des étages, lecture en tableau ou en détails, détail commun à plusieurs éléments, recollage des lignes coupées par l'OCR), l'outil essaie les lectures possibles et garde celle qui confirme le plus souvent le plan. Un appariement par nom n'est conservé que si les barres concordent :

$$\text{accord} = \frac{\text{barres confirmées}}{\text{barres confirmées} + \text{barres contredites}} > 0{,}5$$

  1. Comparer. Seuls les attributs présents des deux côtés sont comparés. Une quantité peut être répartie sur plusieurs repères à l'atelier. Chaque écart reçoit une gravité et une confiance : sous 0,60, il est marqué « à valider ».

Le projet compte 92 tests automatisés sur des projets inventés et un notebook de démonstration de bout en bout.

Les défis

  • La confidentialité. Les documents ne pouvaient être envoyés à aucun service infonuagique ni à aucune IA externe. Or nous avons développé avec un assistant de code IA. Il n'a donc jamais vu un seul dessin : il a travaillé uniquement à partir de comptes et de motifs masqués (chaque chiffre remplacé par 9, chaque mot par A), produits par des scripts locaux. Développer un lecteur de plans sans regarder les plans a été le défi principal.
  • Deux langages pour la même armature. L'ingénieur et le détaillant n'écrivent pas la même chose au même endroit. Sur les dalles, seule une annotation du plan sur cinq a son équivalent exact à moins d'une demi-travée sur l'atelier.
  • L'OCR des tracés CAO. Les lettres sont des traits fins, souvent croisés par des cotes. Le détecteur coupe parfois une ligne en deux, ce qui détache l'espacement de son annotation ou coupe un numéro d'axe.

Ce que nous avons appris

  • Mesurer chaque heuristique contre une référence décalée avant de lui faire confiance : un « jumeau » trouvé à une travée n'a de valeur que s'il est plus fréquent qu'au hasard.
  • Compter l'accord par barre, pas par élément : une poutre de huit barres avec une seule erreur de lecture reste un bon appariement.
  • Annoncer les limites aussi clairement que les résultats.

Résultats et limites

Sur le projet de développement fourni avec une liste de non-conformités documentées, les deux non-conformités de colonnes sont retrouvées au bon endroit, avec les bonnes valeurs. Celles des dalles, des semelles et des murs ne le sont pas encore : chaque cas est diagnostiqué (notation différente, semelle sans étiquette, dessins d'atelier absents), et ces limites sont détaillées dans le README. Sur les colonnes des projets dont l'atelier a une couche texte, 98 à 99 % des barres appariées concordent.

Et ensuite

Lire le lien entre une semelle et son détail, traduire la notation des dalles entre plan et atelier, et valider les écarts avec un ingénieur en structure.

Built With

Share this project:

Updates

Submission history