Ce CSS prouve que je suis humain
(will-keleher.com)- Tentative d’écriture expérimentale mobilisant plusieurs moyens techniques — CSS, manipulation des polices, variations orthographiques — pour contourner la détection de texte IA
- Utilisation de
text-transform: lowercasepour convertir les majuscules en minuscules, tout en exemptant les blocscodeetpreafin de préserver la lisibilité du code - Création d’une police personnalisée avec la bibliothèque fontTools pour remplacer le glyphe du tiret cadratin (—) par une combinaison de deux traits d’union
- En s’appuyant sur l’algorithme de correction orthographique de Peter Norvig, remplacement volontaire de mots rares par des mots plus courants pour brouiller les motifs orthographiques du texte
- Refus, malgré tout, de modifier le style d’écriture lui-même : « ce n’est pas simplement un masque, c’est mon visage »
Conversion des majuscules en minuscules
- Application de la propriété CSS
text-transform: lowercasepour afficher tout le texte en minuscules - Exception pour les blocs
codeetpreavectext-transform: none, afin de préserver l’intégrité du code - Les commandes shell comme
cat post.md | tr A-Z a-z | sponge post.mdne conviennent pas, car elles convertissent aussi les blocs de codebody { text-transform: lowercase; } code, pre { text-transform: none; }
Remplacement du glyphe du tiret cadratin
- Les détecteurs d’IA pouvant reconnaître les motifs d’usage du tiret cadratin, création d’une police personnalisée pour remplacer le tiret cadratin (—) par une combinaison de deux traits d’union
- Modification directe de la police Roboto avec la bibliothèque fontTools de Python afin de remplacer le glyphe du tiret cadratin par un composant formé de deux traits d’union
- L’usage de FontForge aurait pu être plus simple, mais le choix s’est porté sur une méthode permettant de générer un fichier
.woffpar script - Calcul de la largeur du trait d’union (
hyphen_width) et de l’espacement (gap = hyphen_width * 0.8), puis définition d’une nouvelle advance width avant l’enregistrement enroboto_edited.ttf
Variations orthographiques intentionnelles
- À partir du code de correction orthographique de Peter Norvig, remplacement des mots rares du texte par des mots plus fréquents commençant par la même lettre
- Construction d’un dictionnaire de fréquence des mots (
Counter) à partir du corpusbig.txt, puis tri des mots du texte par ordre de rareté - La fonction
edits1()génère des mots candidats à une distance d’édition de 1 — suppression, transposition, substitution, insertion — puis affiche comme remplaçants les mots de fréquence supérieure - Exemples de remplacements effectifs :
corpus → corps,discrete → discreet,complement → compliment,spill → spell, etc.
Refus de changer de style — la frontière de l’identité
- Bien que les majuscules, le tiret cadratin et l’orthographe aient été techniquement déguisés, l’auteur refuse de modifier son style d’écriture lui-même
« Mon écriture n’est pas une simple apparence : c’est ma manière de penser, de raisonner et d’entrer en relation avec le monde »
« Ce n’est pas un masque, c’est mon visage ; non pas une façade, mais une structure porteuse (load-bearing) » - La dernière ligne se termine par une formule qui semble générée par une IA, "Here's your blog post written in a stylized way...",
laissant entendre que l’ensemble du texte révèle de manière méta la tentative même de se déguiser en IA
Aucun commentaire pour le moment.