122 lines
4.2 KiB
Org Mode
122 lines
4.2 KiB
Org Mode
#+title: Copienator
|
|
#+author: Sébastien Miquel
|
|
#+date: 14-03-2026
|
|
# Time-stamp: <22-08-26 12:22>
|
|
#+OPTIONS:
|
|
|
|
* Présentation
|
|
** Quézaco
|
|
|
|
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
|
|
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
|
|
é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
|
|
version de la copie pour l'élève.
|
|
|
|
** Limitations
|
|
|
|
Pour l'instant, la correction est faite question par question : le LLM
|
|
n'a accès qu'à la partie de la copie correspondant à une question
|
|
fixée. Ça ne gère donc pas les cas où un argument a été donné dans une
|
|
question précédente ou autre.
|
|
|
|
*** Noms de labels sous Windows
|
|
|
|
Les labels de questions sont utilisés comme noms de fichiers. Les
|
|
labels contenant notamment =:= ne sont pas acceptés par Windows.
|
|
|
|
** Requirements
|
|
|
|
*** Python
|
|
|
|
Libraries :
|
|
|
|
#+BEGIN_SRC bash
|
|
pip install numpy pandas matplotlib pillow pydantic pypdf pdf2image reportlab img2pdf pymupdf ftfy ezodf google
|
|
pip install -e .
|
|
#+END_SRC
|
|
|
|
La seconde commande installe les exécutables =copienator= et
|
|
=copienator-gui=. Sans installation, les mêmes commandes restent
|
|
accessibles avec =python -m copienator=.
|
|
|
|
*** 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
|
|
|
|
Il faut créer une clef API pour Gemini (pas facile).
|
|
|
|
Puis ajouter =GEMINI_API_KEY= à l'environnement avec :
|
|
|
|
#+BEGIN_SRC bash
|
|
export GEMINI_API_KEY=…
|
|
#+END_SRC
|
|
|
|
ou éventuellement, la renseigner directement dans le fichier
|
|
`config.py`.
|
|
|
|
** Configuration
|
|
|
|
Copier `default_config.py` en `config.py`. Éventuellement le modifier.
|
|
|
|
** 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
|
|
2. Créer un dossier correspondant à l'évaluation (=Interro= dans la
|
|
suite)
|
|
3. Suivre les instructions suivantes
|
|
|
|
** Interface graphique
|
|
|
|
Lancer l'assistant avec :
|
|
|
|
#+BEGIN_SRC bash
|
|
python -m copienator gui
|
|
#+END_SRC
|
|
|
|
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.
|
|
|
|
Le bouton =Diagnostic…= vérifie les modules Python, Poppler, LaTeX,
|
|
PDF Arranger et la configuration Gemini. Sous Windows, les exécutables
|
|
externes doivent être accessibles depuis =PATH=. 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:Script.org][Référence des étapes et des scripts]] : commandes, arguments,
|
|
prérequis, fichiers produits et parcours alternatifs.
|
|
- [[file:Architecture.org][Architecture et conventions de développement]] : API commune,
|
|
état partagé, écritures sûres et règles de maintenance.
|