Récap de cette note

Une présentation des petits outils que je bricole et publie en marge de la thèse : des plugins Obsidian, Zotero et KOReader, un script Python, et un outil d’anonymisation audio-vidéo pour la recherche en EMCA. Tout est open source, hébergé sur le Gitlab de Huma-Num ou sur Github, sous l’organisation core-hn.

Par cette note volante, j’aimerais présenter les outils que je développe à côté de la thèse. Rien de spectaculaire ni de professionnel : ce sont des scripts et des plugins que j’écris parce qu’un maillon de mon workflow me frustrait, et que je préfère bricoler une solution plutôt que de contourner le problème indéfiniment. Je les publie parce que ça ne coûte rien, que ça peut servir à d’autres chercheur·ses qui butent sur les mêmes frictions, et que ça me pousse à écrire un code un peu moins honteux que si je le gardais pour moi.

Je ne suis pas développeuse de formation, donc si vous ouvrez le code et que vous grimacez, c'est normal.

Deux hébergements, selon le projet :

  • le Gitlab de Huma-Num (@aabbadie), pour les outils les plus proches de la recherche elle-même ;
  • Github, sous l’organisation core-hn, pour les plugins et scripts plus généralistes.

Circuit lecture → annotation → Zotero

C’est le chantier le plus fourni, parce que c’est celui qui me sert tous les jours. Il prolonge directement ce que je racontais dans workflow-lecture-v2 : tout mon workflow de lecture tourne autour de Readeck (un self-host de sauvegarde d’articles) et de Zotero, et j’ai fini par écrire les briques qui manquaient pour les faire parler entre eux.

  • pdf2readeck (Python) : convertit un PDF académique en HTML structuré et l’envoie dans Readeck, avec l’URL de citation (DOI ou autre) associée. Il détecte et corrige les filigranes en diagonale des PDF Taylor & Francis, Elsevier ou Springer, reconstruit les niveaux de titres à partir de la typographie, et récupère les images. Utilisable en mode interactif ou en ligne de commande pour l’automatisation.
  • readeck2zotero : plugin Zotero qui importe les surlignages et annotations faits dans Readeck directement sur la référence bibliographique correspondante. Un clic droit, et les passages surlignés en lecture arrivent en note dans Zotero.
  • hypothesis2zotero : le même principe, mais pour les annotations faites avec Hypothes.is. Il retrouve la page annotée via l’URL, la pièce jointe ou le DOI, et importe aussi bien les annotations privées (avec jeton API) que publiques.
  • readeck.koplugin : plugin pour liseuses KOReader qui synchronise les articles Readeck vers l’appareil pour une lecture hors ligne : filtrage par étiquettes, tri, suppression ou archivage automatique des articles lus à 100 %, et renvoi des surlignages faits sur la liseuse vers Readeck. C’est un fork du plugin original, que j’ai ouvert pour proposer des modifications ; je les ai finalement adoptées telles quelles dans ma pratique, d’où le fork toujours actif plutôt qu’un simple pull request fermé.

Anonymisation pour la recherche en EMCA

  • pseudobsidian-ization : plugin Obsidian pour pseudonymiser et corriger des transcriptions interactionnelles, pensé pour les conventions multimodales (Jefferson, ICOR). On peut remplacer un terme par un pseudonyme d’un clic droit, ou laisser un modèle de reconnaissance d’entités nommées, exécuté localement, repérer les noms, lieux et institutions à valider. Il importe les transcriptions noScribe, SRT, CHAT ou Markdown annoté, et ne fait sortir aucune donnée d’Obsidian puisque tout tourne en local (WASM).
  • pseudobsidian-dictionaries : le dépôt des dictionnaires de remplacement téléchargeables depuis l’assistant de configuration du plugin ci-dessus (par exemple la liste des communes françaises, source INSEE/IGN), pour ne pas alourdir le plugin lui-même.
  • EMCAnon : l’anonymisation ne s’arrête pas au texte, cet outil anonymise vidéos, photos et audios en préservant le mouvement et la prosodie. Il extrait le squelette du corps (MediaPipe Holistic ou DWPose selon qu’il y a une ou plusieurs personnes) pour retirer l’image tout en gardant la gestuelle, et transforme la voix (vocodeur WORLD ou rotation du coefficient de McAdams) en conservant F0, rythme, pauses et énergie. Disponible en installateur natif (Windows/macOS) ou en scripts Python pour les pipelines de traitement par lot.

C'est le projet qui me tenait le plus à cœur : en EMCA, on a besoin de l'image et du son pour analyser l'interaction, mais on ne peut souvent pas les diffuser tels quels. Anonymiser sans détruire ce qu'on veut précisément analyser, c'était un vrai casse-tête.

Autres bricolages

Cette page bougera au fil des projets, je la mettrai à jour à mesure que la boîte à outils s’agrandit (ou que je jette quelque chose).