add back Example
This commit is contained in:
1 parent
a03e0e3b4c
commit
d048732613
1 file changed
+9
-77
+9
-77
@@ -1,7 +1,7 @@
|
||||
#+title: Copienator
|
||||
#+author: Sébastien Miquel
|
||||
#+date: 14-03-2026
|
||||
# Time-stamp: <22-08-26 12:22>
|
||||
# Time-stamp: <26-09-26 22:56>
|
||||
#+OPTIONS:
|
||||
|
||||
* Présentation
|
||||
@@ -10,15 +10,17 @@
|
||||
Ce dépôt contient un certain nombre de script Python que j'utilise
|
||||
pour faire corriger des copies par Gemini.
|
||||
|
||||
1. Les copies sont découpées suivant les labels des questions.
|
||||
2. Des requêtes de correction sont faites à Gemini, qui met une note
|
||||
1. L'énoncé (pdf/tex) et le corrigé sont analysés
|
||||
2. Les labels des questions sont détectées sur les copies.
|
||||
3. Les copies sont découpées suivant ces labels.
|
||||
4. Des requêtes de correction sont faites à Gemini, qui met une note
|
||||
entre 0 et 4 à la question, ajoute des commentaires, et encadre
|
||||
certaines parties de la réponse.
|
||||
3. Une version pdf annotée de la copie est générée, faite pour être
|
||||
5. Une version pdf annotée de la copie est générée, faite pour être
|
||||
éditée sur tablette tactile. Le correcteur humain peut modifier la
|
||||
note, supprimer des commentaires de l'IA, ou ajouter des remarques
|
||||
manuscrites.
|
||||
4. Ces annotations manuscrites sont lues et recompilées en une
|
||||
6. Ces annotations manuscrites sont lues et recompilées en une
|
||||
version de la copie pour l'élève.
|
||||
|
||||
** Limitations
|
||||
@@ -163,7 +165,7 @@ Copier `default_config.py` en `config.py`. Éventuellement le modifier.
|
||||
noms/prénoms des élèves, un par ligne
|
||||
2. Créer un dossier correspondant à l'évaluation (=Interro= dans la
|
||||
suite)
|
||||
3. Suivre les instructions suivantes
|
||||
3. Lancer l'interface graphique
|
||||
|
||||
** Interface graphique
|
||||
|
||||
@@ -178,73 +180,7 @@ l’interface, depuis n’importe quel répertoire. Il utilise le Python de
|
||||
=.venv= s’il existe, sinon =python3= du PATH. On peut lui passer le dossier
|
||||
d’évaluation : =./start-gui.sh Interro=. Sans argument, il ouvre le
|
||||
sous-dossier immédiat non masqué le plus récemment modifié du répertoire
|
||||
courant, en excluant =copienator=, =copienator_gui=, =tests=, =OLD=,
|
||||
=__pycache__=, =build=, =dist=, =*.egg-info=, =venv=, =env= et
|
||||
=node_modules=. S’il n’y a aucun dossier admissible, l’interface démarre
|
||||
sans évaluation. Un chemin explicite reste utilisable même s’il est exclu
|
||||
de la sélection automatique.
|
||||
|
||||
=Recharger — vérifier à nouveau= relit les fichiers d’entrée du dossier.
|
||||
Pour reprendre le découpage d’une copie, sélectionnez-la dans =Copies
|
||||
détectées=, cliquez sur =Refaire la copie sélectionnée=, puis sur
|
||||
=Exécuter=. Le découpage repart de l’original conservé.
|
||||
Dans la fenêtre de découpage, =i= inverse l’ordre de toutes les pages
|
||||
(dernière vers première) et reprend à la nouvelle première page. Les choix
|
||||
de découpage déjà saisis sont effacés ; les rotations globales sont conservées.
|
||||
Ce raccourci est configurable via =PAGE_SPLITTER_KB["reverse_pages"]=.
|
||||
=Copier la commande= copie les commandes complètes (à lancer depuis la
|
||||
racine du projet). Dans la console, les boutons de copie et le clic droit
|
||||
permettent de copier la sélection ou toute la sortie ; =Ctrl+C= et
|
||||
=Ctrl+A= sont également disponibles (=Cmd= sous macOS).
|
||||
|
||||
Pendant =Découper une partie à gauche pour détection des labels=, les
|
||||
flèches gauche et droite déplacent la zone de 50 px ; les flèches haut et
|
||||
bas l’élargissent ou la réduisent de 50 px. Avec le workflow personnel,
|
||||
=t/s/r/n= reproduisent respectivement gauche/réduire/élargir/droite.
|
||||
=1= utilise les pages entières. =!= signale la copie en erreur et passe à
|
||||
la suivante ; =Entrée= valide et enregistre la découpe affichée.
|
||||
Une copie ignorée conserve ses anciennes découpes. Les signalements sont
|
||||
conservés dans =.copienator/copy_errors.json=, même après fermeture.
|
||||
Dans =Séparer et réordonner les pages=, =Traiter les copies signalées=
|
||||
reprend ces copies à partir des originaux conservés. Le même bouton dans
|
||||
=Découper une partie à gauche pour détection des labels= reprend leur
|
||||
découpage ; chaque signalement
|
||||
est effacé seulement après validation et enregistrement avec =Entrée=.
|
||||
Fermer la fenêtre, appuyer à nouveau sur =!= ou rencontrer une erreur
|
||||
conserve le signalement. Les commandes =page-split= et =crop-labels=
|
||||
acceptent aussi =--marked= pour traiter les copies signalées de l’évaluation.
|
||||
|
||||
Avec =SHOW_PERSONAL_STEPS = True=, =Analyser l’énoncé= propose le choix
|
||||
entre Gemini et =Énoncés et solutions personnels (SHEETINFO)=. Ce dernier
|
||||
lance =python -m copienator statement-personal Interro= : il lit
|
||||
=enonce.tex=, utilise le service d’exercices sur =localhost:8080= pour
|
||||
générer =Text=, =Sol=, =Text2=, =Sol2= et les barèmes personnels =Persp=,
|
||||
et écrit un groupe par exercice dans =label_groups=.
|
||||
|
||||
Deux boutons ouvrent ensuite des actions facultatives avec aperçu de
|
||||
commande et bouton =Exécuter= : =Regrouper avec Gemini…= remplace seulement
|
||||
=label_groups= (=statement Interro --groups-only=) ; =Remplacer Persp avec
|
||||
Gemini…= régénère seulement les barèmes des groupes actuels
|
||||
(=statement Interro --persp-only=), avec le même prompt que le parcours
|
||||
Gemini complet. Une réponse incomplète ou un échec laisse les anciens
|
||||
barèmes en place. On peut ignorer ces étapes et conserver les résultats
|
||||
personnels.
|
||||
|
||||
On peut aussi ouvrir directement une évaluation avec =python -m copienator gui
|
||||
Interro=. L'interface conserve l'état et l'historique des étapes dans
|
||||
=Interro/.copienator-gui.json=, et les sorties complètes dans
|
||||
=Interro/.copienator/logs/=. Une relance d'une étape antérieure ne
|
||||
supprime aucun résultat ; les étapes suivantes sont seulement marquées
|
||||
comme étant à revalider.
|
||||
|
||||
Après la réussite d'un script, l'interface sélectionne automatiquement
|
||||
l'étape suivante. =Découper les réponses par question= et =Regrouper
|
||||
les réponses= démarrent automatiquement lors de leur première visite.
|
||||
Avec le mode =Correction immédiate=, les trois étapes batch sont alors
|
||||
marquées =Ignorée= à leur première visite. L'étape de résolution
|
||||
manuelle est traitée de la même façon si =manual_resolutions.txt= est
|
||||
absent, vide ou ne contient que des commentaires. Ces automatismes ne
|
||||
se répètent pas lors d'un retour en arrière.
|
||||
courant.
|
||||
|
||||
Le bouton =Diagnostic…= vérifie les modules Python, Poppler, LaTeX,
|
||||
PDF Arranger (ou Aperçu sous macOS) et la configuration Gemini. Sous
|
||||
@@ -254,10 +190,6 @@ sont également inspectés. Quand la création de liens symboliques ou
|
||||
physiques n'est pas autorisée, l'export et la préparation de =A Rendre=
|
||||
utilisent automatiquement une copie normale.
|
||||
|
||||
Les chemins des étapes personnelles peuvent être adaptés avec
|
||||
=CURRENT_SCORE_ODS_PATH=, =FINAL_SCORE_ODS_PATH=,
|
||||
=FINAL_SCORE_OUTPUT_DIR= et =FINAL_SCORE_FONT_PATH= dans =config.py=.
|
||||
|
||||
* Documentation complémentaire
|
||||
|
||||
- [[file:docs/final_output.md][Fichiers finaux dans A Rendre]] : contenu du JPEG, sélection et
|
||||
|
||||
Reference in new issue
Block a user