Aller au contenu
Table des matières

LLM2SVG : Analyser les données avant de parler de modèle

Ce fork LLM2SVG contient des outils de données SVG et une structure d’évaluation. L’implémentation permet d’examiner exemples et contraintes, sans démontrer un modèle texte-vers-SVG terminé ou entraîné.

Application et outils Fork
  • Mis à jour
  • Python · 100%
Crédit amont
Composants documentés
2Explorer les modules
Documents source
1Lire les instructions
Langages du dépôtPython 100%1

Parts calculées à partir des octets GitHub Linguist.

Python100%
100%49 062 octets
Langage%Octets
Python100%49 062

1. Aperçu

1.1. Pourquoi il existe

Générateur et validateur Python d'illustrations vectorielles SVG à partir de descriptions en langage naturel.

1.2. Cas d’usage

Génération automatisée d'icônes et d'illustrations vectorielles pour systèmes de design.

2. Cas d’utilisation

Outils Python et données pour un défi texte vers SVG : charger les consignes, valider les SVG, créer et rendre des formes.

Diagramme de cas d’utilisation de LLM2SVG : Charger consignes et SVG; Valider les contraintes SVG; Repérer les termes clés; Composer un SVG de formes; Convertir un SVG en PNG; Analyser le jeu de SVGLLM2SVGCharger consignes et SVGValider les contraintes SVGRepérer les termes clésComposer un SVG de formesConvertir un SVG en PNGAnalyser le jeu de SVGChercheur en ML«système»Moteur cairosvg
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
Charger consignes et SVG
Chercheur en ML

SVGDataLoader (utils/data_loader.py) lit data/train/train.csv et data/test/test.csv et rassemble les SVG rangés sous data/train/svg/<id>/ ; SVGDataset (utils/svg_dataset.py) les expose comme Dataset PyTorch.

Valider les contraintes SVG
Chercheur en ML

SVGConstraints.validate_svg (utils/svg_constraints.py) refuse les fichiers de plus de 10 000 octets et tout élément ou attribut hors de la liste permise, avec une analyse defusedxml.

Repérer les termes clés
Chercheur en ML

TextParser (utils/text_parser.py) repère couleurs, formes, motifs, matières, vêtements, paysages et architecture dans une description et en déduit une catégorie principale.

Composer un SVG de formes
Chercheur en ML

utils/svg_utils.py fournit des fonctions pour rect, circle, ellipse, path, polygon, line et group, un générateur de palette, generate_shapes et optimize_svg qui raccourcit les nombres.

Convertir un SVG en PNG
Chercheur en MLMoteur cairosvg

svg_to_png (utils/svg_utils.py) appelle cairosvg.svg2png et écrit un fichier ou renvoie les octets PNG.

Analyser le jeu de SVG
Chercheur en ML

SVGAnalyzer (utils/svg_analyzer.py) compte les SVG, mesure leur taille, recense les éléments, valide chaque fichier et trace un histogramme des tailles face à la limite de 10 Ko.

2.1. Scénario : Vérifier des SVG candidats avant soumission

  1. Pointer SVGDataLoader vers le dossier data/ local (le chemin par défaut vise le disque Windows de l’auteur).
  2. Lire les consignes de data/train/train.csv, par exemple « a starlit night over snow-covered peaks ».
  3. Lancer SVGAnalyzer.validate_all_svgs("train") pour tester chaque SVG de data/train/svg/ avec SVGConstraints.
  4. Appeler generate_summary_report pour obtenir un tableau des tailles et des sources déduites, puis plot_svg_size_distribution.
  5. Rendre un SVG valide avec svg_to_png pour le comparer à la consigne.

Fichiers consultésREADME.mdutils/data_loader.pyutils/svg_dataset.pyutils/svg_constraints.pyutils/text_parser.pyutils/svg_utils.pyutils/svg_analyzer.pydata/train/train.csv

3. Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

README.md · Dependencies
pip install cairosvg torch torchvision

4. Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

4.1. Submission Requirements

README.md

Participants must submit a Model class with a predict() function that takes a text description as input and returns SVG code.
Lire les instructions complètes ↗
Documentation source

1 documents lus parmi 1 candidats.

5. Fonctions et composants 2

Chargement et contraintes
SVGAnalyzer utilise SVGDataLoader et SVGConstraints. Il énumère les exemples, relève les tailles et vérifie les contraintes. Le chargement et la validation constituent des responsabilités distinctes.
Rapports sur les données
L’analyseur compte les noms d’éléments et conserve des résultats de validation par exemple. Sa méthode de résumé retourne un DataFrame pandas. Le comptage utilise une expression régulière pour tolérer du SVG mal formé.

6. Architecture

Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de LLM2SVG
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
  n0["Fichiers du jeu de données"]
  n1["SVGDataLoader"]
  n2["Analyse des éléments et tailles"]
  n3["Vérifications des contraintes"]
  n4["Rapport de données"]
  n0 --> n1
  n1 --> n2
  n1 --> n3
  n2 --> n4
  n3 --> n4
Version texte du diagramme
  • Fichiers du jeu de données → SVGDataLoader
  • SVGDataLoader → Analyse des éléments et tailles
  • SVGDataLoader → Vérifications des contraintes
  • Analyse des éléments et tailles → Rapport de données
  • Vérifications des contraintes → Rapport de données
Suivre un parcours dans le code

Suivez validate_all_svgs et comparez-le à analyze_elements. Respecter les contraintes et posséder des noms d’éléments plausibles sont deux vérifications différentes; aucune ne prouve la ressemblance visuelle avec une consigne.

7. Dossier technique

Établi à partir du code au commit a833776 (8 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.

7.1. Couches et modules

Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.

Mermaid Vue en couches
flowchart TB
  subgraph L_core["Source principale"]
    direction TB
    core_0["utils<br/>7 fichiers"]
  end
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
utilsSource principale75.py

7.2. Modèle C4

Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.

UML 1 · Contexte du système
1 · Contexte du système

La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
System(SYS, "LLM2SVG", "Ce fork LLM2SVG contient des outils de données SVG et une structure d…")
@enduml

Niveau 2: les sources disponibles ne permettent pas de tracer cette vue.

UML 3 · Composants et couches
3 · Composants et couches

Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "LLM2SVG") {
Boundary(L0, "Source principale", "layer") {
Component(M0_0, "utils", "Python", "7 fichiers")
}
}
@enduml
UML 4 · Code
4 · Code

Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "LLM2SVG" {
package "utils/text_parser.py" as F0 {
class "TextParser" as T0_0 {
  extract_colors()
  extract_shapes()
  extract_patterns()
  extract_materials()
  extract_clothing()
  extract_landscape()
}
}
package "utils/svg_analyzer.py" as F1 {
class "SVGAnalyzer" as T1_0 {
  count_svgs()
  get_svg_sizes()
  analyze_elements()
  validate_all_svgs()
  generate_summary_report()
  _infer_source_from_filename()
}
}
package "utils/svg_dataset.py" as F2 {
class "SVGDataset" as T2_0 {
  __len__()
  __getitem__()
}
}
package "utils/svg_constraints.py" as F3 {
class "SVGConstraints" as T3_0 {
  max_svg_size
  allowed_elements
}
}
}
@enduml

7.3. Interface privée

Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).

Assistant préfixé _
2

7.4. Services

Service 1

  • SVGDataLoaderget_train_descriptions, get_test_descriptions, _load_descriptions et 4 autres

7.5. Entités et modèle de données 1

EntitéNaturePremiers champs
SVGConstraintsDataclassmax_svg_size, allowed_elements

7.6. Logique métier

Une fois écartés le code d’interface et les services et entités ci-dessus, ces classes ont le plus de méthodes.

TextParser Source principale, 9 méthodes
extract_colors, extract_shapes, extract_patterns, extract_materials, extract_clothing, extract_landscape
SVGAnalyzer Source principale, 7 méthodes
count_svgs, get_svg_sizes, analyze_elements, validate_all_svgs, generate_summary_report, _infer_source_from_filename
SVGDataset Source principale, 2 méthodes
__len__, __getitem__

7.7. Base de données et persistance

7.8. Pipeline CI/CD

Aucun pipeline CI/CD dans le dépôt. Le code se construit et se lance à la main, comme décrit plus haut.

7.9. Déploiement

Mermaid Schéma de déploiement
flowchart LR
  repo[("Dépôt GitHub")]
  local["Poste local"]
  repo -->|"cloner et lancer"| local

Le dépôt ne contient ni Dockerfile, ni fichier Compose, ni configuration d’hébergement : le code s’exécute sur le poste qui le clone.

Rien trouvé pour: Interface publique, Intégrations externes, Stack et dépendances, Supervision, Sécurité, Tests automatisés.

8. Types et structure des fichiers

5 types déclarés, dont 5 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class t61fa9a7ee491["SVGDataLoader"] {
  __init__()
  get_train_descriptions()
  get_test_descriptions()
  _load_descriptions()
}
class t30b1f34dc117["SVGAnalyzer"] {
  __init__()
  count_svgs()
  get_svg_sizes()
  analyze_elements()
}
class td0970883b50c["SVGConstraints"] {
  validate_svg()
}
class tae5163df548f["SVGDataset"] {
  __init__()
  __len__()
  __getitem__()
}
class t7bf894fe8630["TextParser"] {
  __init__()
  extract_colors()
  extract_shapes()
  extract_patterns()
}
class b4e2a6e40a537["Dataset"] {
  <<unresolved_base>>
}
b4e2a6e40a537 <|-- tae5163df548f

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

9. Référence

8 / 8 fichiers admissibles lus (286 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

11. Fichiers à lire 3

12. Glossaire

Dépôt

Les fichiers source, la configuration et l’historique versionné d’un projet.

README

Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.

Dépendance

Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.

Conteneur

Un environnement de processus isolé créé à partir d’une image. Les données persistantes nécessitent un stockage hors de son système de fichiers temporaire.

Docker Compose

Un format de configuration et un outil pour lancer des conteneurs, réseaux et volumes associés. L’ordre de démarrage ne garantit pas qu’un service est prêt.

Port publié

Un port de l’hôte associé au port d’un service dans un conteneur. Sa publication peut rendre le service accessible hors du réseau des conteneurs.

Compilation

Les étapes qui transforment les sources et dépendances en programme exécutable ou en livrable distribuable.

Fork

Un dépôt distinct dérivé d’un autre projet. Une modification du fork ne devient pas automatiquement une modification du projet amont.

13. Références

  1. antoinebou12. (2026, 5 novembre). LLM2SVG. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). LLM2SVG: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). utils/svg_analyzer.py. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). utils/data_loader.py. [Source file] github.com.
  5. antoinebou12. (2026, 5 novembre). utils/svg_constraints.py. [Source file] github.com.
  6. Boucher, A. (2026, 23 octobre). LLM2SVG : Analyser les données avant de parler de modèle. [Project article] antoineboucher.info.

Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.