Miscs (Interro 28)
This commit is contained in:
+32
-28
@@ -1,10 +1,11 @@
|
||||
#+title: Script
|
||||
#+author: Sébastien Miquel
|
||||
#+date: 14-03-2026
|
||||
# Time-stamp: <08-05-26 22:52>
|
||||
# Time-stamp: <14-05-26 08:55>
|
||||
#+OPTIONS:
|
||||
|
||||
* Quézaco
|
||||
* Méta
|
||||
** Quézaco
|
||||
|
||||
Ce dépôt contient un certain nombre de script Python que j'utilise
|
||||
pour faire corriger des copies par Gemini.
|
||||
@@ -20,7 +21,7 @@ pour faire corriger des copies par Gemini.
|
||||
4. Ces annotations manuscrites sont lues et recompilées en une
|
||||
version de la copie pour l'élève.
|
||||
|
||||
* Disclaimer
|
||||
** Disclaimer
|
||||
|
||||
J'utilise régulièrement cet outil et j'en suis satisfait, mais j'ai
|
||||
fait peu d'efforts pour le rendre universel et simple à l'emploi.
|
||||
@@ -37,9 +38,9 @@ examples du rendu final (dans le sous dossier =BGnot=).
|
||||
Cette situation s'améliorera peut-être, mais faciliter l'utilisation
|
||||
de ce système n'est pas une priorité.
|
||||
|
||||
* Requirements
|
||||
** Requirements
|
||||
|
||||
** Python
|
||||
*** Python
|
||||
|
||||
Libraries :
|
||||
|
||||
@@ -47,13 +48,13 @@ Libraries :
|
||||
pip install numpy pandas matplotlib pillow pydantic pypdf pdf2image reportlab img2pdf pymupdf ftfy ezodf google
|
||||
#+END_SRC
|
||||
|
||||
** Poppler (for pdf2image)
|
||||
*** Poppler (for pdf2image)
|
||||
|
||||
+ Linux : install poppler-utils
|
||||
+ Windows : Download from: https://github.com/oschwartz10612/poppler-windows
|
||||
and add it to your PATH
|
||||
|
||||
** Accès à Gemini
|
||||
*** Accès à Gemini
|
||||
|
||||
Il faut créer une clef API pour Gemini (pas facile).
|
||||
|
||||
@@ -66,7 +67,7 @@ Puis ajouter =GEMINI_API_KEY= à l'environnement avec :
|
||||
export GEMINI_API_KEY=…
|
||||
#+END_SRC
|
||||
|
||||
* Correction d'un paquet de copies
|
||||
** Correction d'un paquet de copies
|
||||
|
||||
1. Créer un fichier =names= dans le dossier courant, avec les
|
||||
noms/prénoms des élèves, un par ligne
|
||||
@@ -83,7 +84,8 @@ export GEMINI_API_KEY=…
|
||||
pour tel truc, etc)
|
||||
6. Suivre les étapes plus bas.
|
||||
|
||||
* Prétraitement
|
||||
* Étapes et Script
|
||||
** Prétraitement
|
||||
|
||||
1. =./rotate_all.sh Interro=
|
||||
(facultatif)
|
||||
@@ -107,14 +109,14 @@ export GEMINI_API_KEY=…
|
||||
|
||||
Rerun on a single file with =python cutleft.py Interro/Copie01.pdf=
|
||||
|
||||
* Génération d'information sur l'énoncé
|
||||
** Génération d'information sur l'énoncé
|
||||
|
||||
1. =python enonce_info.py Interro= (gestion perso)
|
||||
OU
|
||||
2. =python gemini_for_enonce.py Interro=
|
||||
+ Nécessite =enonce.tex/org= et `correction.tex/org`
|
||||
|
||||
* Labelisation et regroupement
|
||||
** Labelisation et regroupement
|
||||
|
||||
Set proxy with ~export HTTPS_PROXY="http://10.0.0.1:3128"~
|
||||
|
||||
@@ -130,25 +132,27 @@ Set proxy with ~export HTTPS_PROXY="http://10.0.0.1:3128"~
|
||||
+ Quand un label est manquant, il est possible de cliquer sur
|
||||
l'image, ce qui copie les coordonnées dans le presse papier
|
||||
(sous linux…), puis on peut l'ajouter à la main.
|
||||
+ Utilisation de `_`, `|…` et `…|`
|
||||
+ Utilisation de `_`, `|…` et `…|` :
|
||||
+ `|…` n'est pas arrêté verticalement par son type opposé.
|
||||
+ `…|` est stoppé horizontalement par le `|…` le plus proche.
|
||||
Pour modifier une seule copie :
|
||||
=python plotting.py Interro/Copie01.pdf=
|
||||
|
||||
It also generates les =Copie01.json=, à partir des =Copie01_01.json=
|
||||
3. En cas de soucis, (par exemple les pages ne sont pas dans le bon ordre)
|
||||
- Réordonner les pages du fichier pdf
|
||||
- Rerun =python cutleft.py Interro/Copie{id}=
|
||||
- Rerun =python gemini_dir_batching.py Interro/Copie{id}= ?? À
|
||||
vérifier, pas sûr que ça marche.
|
||||
4. =python splitting_int.py Interro=
|
||||
1. En cas de soucis, (par exemple les pages ne sont pas dans le bon ordre)
|
||||
- Réordonner les pages du fichier pdf
|
||||
- Rerun =python cutleft.py Interro/Copie{id}=
|
||||
- Rerun =python gemini_dir_batching.py Interro/Copie{id}= ?? À
|
||||
vérifier, pas sûr que ça marche.
|
||||
3. =python splitting_int.py Interro=
|
||||
|
||||
Découpe les copies suivant les exercices
|
||||
5. =python grouping.py Interro=
|
||||
4. =python grouping.py Interro=
|
||||
|
||||
Regroupe les mêmes questions de différentes copies en groupes de
|
||||
tailles raisonnables.
|
||||
|
||||
* Correction et annotation
|
||||
** Correction et annotation
|
||||
|
||||
Set proxy with ~export HTTPS_PROXY="http://10.0.0.1:3128"~
|
||||
|
||||
@@ -170,16 +174,18 @@ Set proxy with ~export HTTPS_PROXY="http://10.0.0.1:3128"~
|
||||
Pour diminuer le coût, il est possible de batch les requêtes, qui
|
||||
seront alors traitées sous au plus 24h.
|
||||
+ =python correction.py Interro --batch=
|
||||
+ OU =python correction.py Interro --batch-from 'Ex 4'=
|
||||
+ =python submit_batches.py Interro=
|
||||
+ =python batch_status.py=
|
||||
+ =python fetch_batched_results.py Interro=
|
||||
+ =python correction.py Interro --deal-with-batched=
|
||||
3. =python post-correction.py Interro=
|
||||
|
||||
Essaye de corriger des erreurs d'encodage/d'accents dans
|
||||
=correction.json=.
|
||||
- Essaye de corriger des erreurs d'encodage/d'accents dans
|
||||
=correction.json=.
|
||||
- aussi échappe les `_` en dehors du mode math, pour LaTeX.
|
||||
|
||||
* Génération des copies annotées
|
||||
** Génération des copies annotées
|
||||
|
||||
1. =python annotating.py Interro= (facultatif)
|
||||
|
||||
@@ -208,7 +214,7 @@ OU
|
||||
- Vider =Syncthing/Annotées= sur la tablette et localement.
|
||||
À automatiser, aussi c'est lent…
|
||||
|
||||
* Lecture de la correction manuscrite
|
||||
** Lecture de la correction manuscrite
|
||||
|
||||
1. =python from_tablette.py Interro= (gestion perso)
|
||||
|
||||
@@ -243,6 +249,7 @@ OU
|
||||
+ =gestion_classe ne= pour créer l'interro puis
|
||||
+ =gestion_classe we= (set barème here)
|
||||
+ =python update_ods.py Interro=
|
||||
ou =python update_ods.py Interro --sum= (en l'absence de barème)
|
||||
+ =gestion_classe re=
|
||||
+ =gestion_classe wsent=
|
||||
+ =python add_final_score.py Interro21=
|
||||
@@ -252,10 +259,7 @@ OU
|
||||
+ update the copies from =miqmacs.fr/admin=.
|
||||
6. (gestion perso) Impression d'une copie. Via Evince » print to pdf.
|
||||
|
||||
|
||||
|
||||
* Recorrection d'une seule copie (peu testé)
|
||||
|
||||
** Recorrection d'une seule copie (peu testé)
|
||||
|
||||
!! Attention, refaire ne marchera pas si tu fais une annotation non
|
||||
groupée into refaire !!
|
||||
|
||||
Reference in New Issue
Block a user