La manette a glissé dans mes mains moites alors que je regardais mon personnage se vider de son sang dans l’obscurité. Une autre extraction qui a mal tourné, une autre tragédie numérique. C’est là que ça m’a frappé : j’avais besoin d’un terrain de jeu sans conséquences, un espace où je pourrais apprendre les ficelles […]
Il y a des combats comme cela auxquels pas grand monde ne pense et qui pourtant sont très importants. Je parle évidemment de la lutte contre le chaos du texte non structuré. Si vous avez déjà essayé d'extraire des données propres d'un tas de PDF (après OCR), de rapports ou de notes griffonnées, vous voyez de quoi je parle : c'est l'enfer ! (oui j'aime me faire du mal en tentant des regex impossibles).
Heureusement, Google a lâché début janvier 2026 une petite pépite en open source (même si c'est pas un produit "officiel") qui s'appelle
LangExtract
. C'est une bibliothèque Python qui utilise la puissance des LLM pour transformer vos documents textuels en données JSON bien rangées.
Exemple d'extraction sur le texte de Roméo et Juliette (
Source
)
Ce qui fait que LangExtract sort du lot par rapport à d'autres outils comme
Sparrow
, c'est surtout son système de Source Grounding. En gros, chaque info extraite est directement liée à sa position exacte dans le texte source. Ça facilite énormément la vérification et la traçabilité puisque vous pouvez voir visuellement d'où vient la donnée grâce à un système de surlignage automatique.
Sous le capot, l'outil est optimisé pour les documents à rallonge (le fameux problème de l'aiguille dans une botte de foin). Il utilise des stratégies de découpage de texte et de passes multiples pour améliorer le rappel et s'assurer que le maximum d'infos soit capturé.
La visualisation interactive permet de valider les données en un clin d'œil (
Source
)
Et cerise sur le gâteau, il permet de générer un fichier HTML interactif pour visualiser les milliers d'entités extraites dans leur contexte original. À la cool !
Côté installation, c'est hyper fastoche :
pip install langextract
Pour faire le job, vous avez le choix des armes : les modèles cloud de Google (Gemini 2.5 Flash/Pro), ceux d'OpenAI (via pip install langextract[openai]), ou carrément du local avec
Ollama
. Pas besoin de passer des heures à fine-tuner un modèle, il suffit de fournir quelques exemples structurés via le paramètre examples et hop, c'est parti mon kiki.
Voici à quoi ça ressemble sous le capot pour lancer une machine à extraire :
import langextract as lx
# 1. On définit les règles du jeu
prompt = "Extraire les noms de personnages et leurs émotions."
# 2. On donne un exemple (few-shot) pour guider le modèle
examples = [
lx.data.ExampleData(
text="ROMEO. But soft! What light...",
extractions=[lx.data.Extraction(extraction_class="character", extraction_text="ROMEO", attributes={"emotion": "wonder"})]
)
]
# 3. On lance l'extraction (nécessite une clé API ou Ollama)
results = lx.extract(
text_or_documents="votre_texte_brut_ici",
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash"
)
# 4. On sauvegarde et on génère la visualisation HTML
lx.io.save_annotated_documents(results, output_name="results.jsonl")
html_content = lx.visualize("results.jsonl")
with open("view.html", "w") as f:
f.write(html_content)
Honnêtement, je ne sais pas si ça va remplacer
les solutions industrielles de RPA
, mais pour un dev qui veut structurer du texte sans se prendre la tête, c'est vraiment impressionnant. Que vous fassiez du
Grist
ou de l'analyse de données pure, cet outil mérite clairement que vous y jetiez un œil !
Il y a quelques semaines,
je vous parlais de la vision très pragmatique de Linus Torvalds
sur l'IA et le "vibe coding". Et bien figurez-vous que le créateur et mainteneur du noyau Linux ne fait pas que donner son avis, il met aussi les mains dans le cambouis (ou plutôt dans le code) avec un nouveau petit projet perso baptisé AudioNoise.
Alors calmez-vous tout de suite, il ne s'agit pas du prochain concurrent de Pro Tools ou d'Ableton Live. C'est un projet qu'il qualifie lui-même de "silly" (idiot), né de ses récentes expérimentations avec des pédales d'effets pour guitare. Après avoir joué avec le hardware et les circuits analogiques, Linus a décidé de voir ce que ça donnait côté numérique.
Le
dépôt GitHub
contient des implémentations basiques en C d'effets audio : délais, phasers, et de filtres IIR (Infinite Impulse Response)... Bref, de quoi simuler des effets sans prétention.
Ce qui est marrant, c'est l'approche car Linus explique clairement dans le README qu'il n'y a rien de révolutionnaire là-dedans en terme d'algo mais juste des boucles de délai et des filtres simples. C'est du "single sample in, single sample out", conçu pour apprendre les bases du traitement du signal (DSP).
Le projet inclut également un visualiseur en Python que Linus avoue avoir écrit en mode "vibe-coding". En gros, comme il ne maîtrise pas vraiment Python, il a utilisé l'outil Google Antigravity pour générer le code à sa place. C'est du "monkey-see-monkey-do" assumé, où il a supprimé l'intermédiaire (lui-même cherchant sur Google) pour aller directement au but.
Bref, c'est toujours marrant de voir qu'un des devs les plus influents de la planète continue de coder des trucs "juste pour le fun", sans se prendre la tête, et en utilisant les outils modernes comme un débutant curieux. Si vous voulez jeter un œil au code (ou l'utiliser pour vos propres bidouilles sonores), ça se passe sur
GitHub
.
Aujourd’hui, je vous propose de découvrir Pimmich, un cadre photo connecté open source basé sur Raspberry Pi, pensé pour afficher vos souvenirs sans cloud ni abonnement, en restant 100% local. Avec les récents changements côté Google Photos, beaucoup d’entre vous ont dû revoir leurs habitudes… et Aurélien a eu le bon réflexe : s’appuyer sur […]
La version 7.8 de Tryton est sortie mi‑décembre 2025 et s’inscrit dans la continuité des branches précédentes, avec une mise à jour axée sur la stabilité, les performances et une série de raffinements fonctionnels dans tous les domaines de gestion. Elle apporte de nombreuses corrections de bogues, améliore la réactivité du serveur et peaufine à la fois l’interface utilisateur, les modules métiers et les outils destinés aux administrateurs et développeurs.
Support PEPPOL
Suite à l'obligation pour 2026 en Belgique d’envoyer les factures entre sociétés belges au format électronique via le réseau PEPPOL, la version 7.8 inclut à temps les modules nécessaires dont un module de connexion au point d’accès gratuit Peppyrus.
Quand ces modules sont activés, Tryton envoie automatiquement à partir de 2026 sur le réseau PEPPOL les factures si le client a un numéro de TVA belge (ainsi que la société gérée). Il est aussi possible de forcer l’envoi pour certains clients.
Les modules sont conçus pour être étendu à d’autres points d’accès futures afin de diversifier l’offre.
Interface et usage quotidien
Cette version introduit un système de notifications plus moderne : un menu dédié regroupe les messages, un compteur signale les notifications non lues et des pop‑ups informent l’utilisateur des nouveaux événements sans quitter son écran. Les vues en liste sont plus agréables, avec des boutons d’action visibles en pied de page et des recherches simplifiées, par exemple pour trouver les documents sans entrepôt défini, ce qui rend la navigation au quotidien plus fluide.
Le chat intégré, apparu dans la version précédente comme fonctionnalité émergente, est désormais activée de base sur les documents clés (ventes, achats, factures…) pour centraliser les échanges directement dans le logiciel. Les utilisateurs peuvent s’abonner à un document via une icône de cloche et recevoir des notifications ciblées, renforçant le suivi collaboratif sans dépendre d’outils externes.
Modules métiers
Sur le plan fonctionnel, la version 7.8 enrichit l’écosystème de modules : gestion des formats de factures électroniques UBL et PEPPOL, gestion de contrats de location (avec facturation progressive), support des agents et de documents (facture commerciale) de douane, ainsi que définition plus fine des points d’expédition logistiques par entrepôt.
L’intégration e‑commerce, notamment avec Shopify.com, est nettement améliorée avec la prise en charge des remboursements, des taxes sur les frais de port, des produits de type kit, un choix plus intelligent du transporteur et la synchronisation de la langue du client et des liens d’administration entre boutiques en ligne et Tryton.
Le moteur d’approvisionnement a été ajusté pour mieux gérer les contraintes de délais : si aucun fournisseur ne peut livrer dans le délai idéal, le système choisit automatiquement celui qui offre le délai le plus court, limitant les ruptures tout en restant réaliste. De nouveaux rapports sur la quantité de stock et la rotation de stock permettent de suivre plus précisément les niveaux et mouvements, et de prendre de meilleures décisions sur les points de commande et les réassorts.
Les modules de comptabilités supportent maintenant les références de paiement sur les factures et les relevés de compte. Pour l’instance les formats « Creditor Reference » et « Communication structurée » belge sont supportées en standard.
Administration et développement
Côté serveur, Tryton 7.8 réduit la consommation mémoire en envoyant les réponses JSON comme flux et en ne chargeant plus que les modules activés, ce qui profite aux installations avec peu de modules activés (on a mesuré des réductions de la consommation mémoire entre 10% et 20%). Les administrateurs disposent d’un mode console: trytond-console capable d’exécuter maintenant des scripts depuis un fichier et d’un paramètre de rotation des logs basé sur la taille plutôt que sur l’âge, tandis que les développeurs bénéficient du nouveau système de notifications côté serveur, d’optimisations SQL avec l’usage de FILTER et EXISTS et de la possibilité de matérialiser les modèles basés sur une requête SQL (au lieu d’une table).
Si vous avez une clé USB RTL-SDR qui traîne dans un tiroir et que vous vous demandez ce que vous pourriez bien en faire, j'ai peut-être trouvé le projet qui va vous occuper pendant quelques soirées.
Ça s'appelle Intercept, et c'est un dashboard web qui regroupe les outils de réception radio les plus courants dans une seule interface. Comme ça, au lieu de jongler entre multimon-ng pour décoder les pagers, rtl_433 pour les capteurs météo, dump1090 pour tracker les avions... vous avez tout ça dans une seule interface Flask accessible directement sur votre navigateur.
L'installation se fait via pip après un clone du repo, et certaines fonctions nécessitent des privilèges élevés (sudo) pour accéder aux interfaces réseau :
git clone https://github.com/smittix/intercept.git
cd intercept
pip install -r requirements.txt
Et pour le lancer :
sudo python3 intercept.py
Le truc tourne en local sur le port 5050 et agrège les données de six modules différents. Côté signaux, on peut décoder les protocoles POCSAG et FLEX (les pagers qu'utilisent encore certains services d'urgence, notamment aux États-Unis et au Royaume-Uni), surveiller la bande 433MHz où communiquent les stations météo et divers capteurs IoT. Pour le tracking, y'a un module ADS-B qui affiche les avions sur une carte OpenStreetMap avec leur trace historique, et un autre pour les satellites qui prédit les prochains passages au-dessus de votre position.
Là où ça devient plus... disons "sensible", c'est avec les modules WiFi et Bluetooth. Le premier peut passer votre carte en mode monitor pour analyser les réseaux environnants et, si un client se reconnecte au bon moment, capturer des handshakes WPA. Le second scanne les appareils Bluetooth à portée. Évidemment, selon les lois de votre pays, ce genre d'analyse peut être encadré voire interdit sur des équipements tiers donc renseignez vous bien avant d'aller en prison bêtement. Le projet affiche d'ailleurs un gros disclaimer au lancement.
Techniquement, c'est du Python avec Flask pour le backend, Leaflet.js pour les cartes, et des Server-Sent Events pour le streaming en temps réel. L'interface propose un thème sombre ou clair, des alertes sonores configurables, et l'export des données en CSV ou JSON. Y'a même des raccourcis clavier pour les power users.
Pour faire tourner le bazar, il vous faut un dongle
RTL-SDR compatible
(les modèles à base de RTL2832U font l'affaire), une carte WiFi supportant le mode monitor si vous voulez cette fonction, et les dépendances habituelles : rtl-sdr, multimon-ng, rtl_433, dump1090, aircrack-ng pour le WiFi et BlueZ pour le Bluetooth.
Le projet est sous licence MIT, développé par smittix avec l'aide de quelques contributeurs. Ça me rappelle un peu l'époque où on bidouillait avec les
femtocells pour intercepter les communications
, sauf qu'ici c'est packagé proprement et ça ne nécessite pas de souder quoi que ce soit.
Si vous cherchez un projet pour apprendre les bases de l'intelligence des signaux radio ou juste pour voir ce qui se passe dans les ondes autour de vous, c'est un excellent point de départ. Par contre, je vous recommande vraiment de lire les lois de votre pays sur l'interception des communications avant de brancher quoi que ce soit...
La question du pilotage des LEDs WS2812B sur Raspberry Pi 5 a récemment été soulevée par Victor lors d’un échange sur un réseau social. Le Raspberry Pi 5 introduit une nouvelle architecture matérielle qui complique le pilotage des LEDs WS2812B avec les bibliothèques historiques. Les solutions basées sur le PWM ou le DMA montrent rapidement […]
This collection of examples discussing the question of the intrinsic security characteristics of programming languages. Through illustrations and discussions, it advocates for a different vision of well-known mechanisms and is intended to provide some food for thoughts regarding languages and development tools, as well as recommendations regarding the education of developers or evaluators for secure software.
“Chaque euro compte !”, rappelle Cyril Féraud dans l’appel aux dons lancé hier, quelques semaines avant le Téléthon. Comme chaque année début décembre, l’événement caritatif fera son grand retour ponctué par 30 heures d’émission en direct sur France Télévisions. Mais contrairement aux éditions précédentes, les dons des Français ne financeront pas la recherche sur les maladies génétiques.
Chaque don récolté permettra de financer le budget 2026, explique Cyril Féraud qui co-animera l’émission cette année et espère une mobilisation record. En effet, en 2024, seulement 96 millions d’euros avaient été récoltés lors du Téléthon. “Trop peu” selon Sébastien Lecornu qui rappelle que les dons ouvrent droit à une réduction d’impôt de 66 %, (malheureusement compensée par la hausse des impôts de 72 % décidée pour financer ce même budget 2026). L’autocollant “Cette année, j’ai donné” restera quant à lui totalement gratuit, assure le premier Ministre.
L’appel aux dons porte déjà ses fruits et les Français sont nombreux à avoir apporté leur contribution sur le site du Téléthon. Muriel, retraitée, espère que “son petit don de 100 € aidera à financer l’école publique, les hôpitaux ou un nouveau tailleur pour la Maire du 8e arrondissement de Paris”. Autre donateur, Amir s’est d’ores et déjà inscrit aux épreuves sportives du 5 décembre afin de collecter des dons “en espérant que le gouvernement existe toujours d’ici là”.
Inspirés par cet élan de solidarité, les Enfoirés souhaitent également reverser les recettes de leur concert au gouvernement, toujours prêts à agir pour les plus démunis.
J'ai eu l'occasion, de récupérer une ancienne tablette Galaxy Tab 6 (2019) et son clavier Bluetooth. Un système Android malheureusement plus tenu à jour en 2025 donc à l'utilisation déconseillée.
Clavier Galaxy Tab S6 (Bluetooth)
Contre toute attente, il m'a été impossible d'appairer ce clavier avec un autre système. Ceci dit, cela n'est pas très étonnant d'être confronté à un système fermé.
A contre-courant de l'obsolescence
Si je n'ai pas encore trouvé comment reconvertir la tablette (n'hésitez pas à commenter), je me suis lancé dans la reconversion du clavier pour une future application MicroPython.
Cela commence forcement par l'ouverture du clavier qui n'est pas bien difficile (il y a 4 vis sous chacun des anti-dérapant.
Clavier Galaxy Tab S6
On y retrouve un clavier à membranes connecté sur un connecteur 26 broches, un accu Lipo de faible puissance, un touchpad I2C et un microcontroleur bluetooth (non visible de ce côté de la carte).
Clavier Galaxy Tab S6
Loin moi l'idée de reprogrammer le microcontrôleur Bt de la carte (ses protections matérielles sont certainement active), je me suis dit qu'il serait plus facile de réutiliser directement la membrane avec un Pico.
C'est que l'on imagine cette membrane comme un clavier de KeyPad dont le fonctionnement est sommaire.
Avec un peu d'analyse, j'ai rapidement repéré des résistances pull-down de 35 KΩ sur chacune des lignes (excepté les 5 premières). D'autres lignes marquée sont elles équipées d'un composant spécifique (voir les points blancs sur l'image ci-dessous).
Je pensais avoir repéré les colonnes, les autres signaux étant alors les lignes.
Malheureusement, les choses ne furent pas si simples!
Un peu de hacking
Je commence donc par souder des fils vernis 0.2mm sur le connecteur en vue de réaliser des tests. Les fils sont maintenus bien en place à l'aide de colle chaude (pour éviter de casser les fragiles soudures des fils).
Quelques fils soudés sur le connecteur (pin 1 à droite).
J'ai procédé de même avec les 26 contacts ensuite reporté sur une plaque de prototypage (bien dans l'ordre).
report des connexions sur une plaque de prototypage offrant un accès via connecteur 2.54mm
Connexion au Pico
J'ai utilisé 2x MCP23017 (GPIO expander 16 bits) pouvant être contrôlé via bus I2C, donc avec seulement deux lignes connectés sur le Pico.
Matrice clavier branché sur des MCP23017
Brochage du MCP23017
L'intérêt des MCP23017 est d'avoir les broches 1 à 26 du connecteur clavier branchés scrupuleusement dans l'ordre croissant des GPIOs des MCP23017. Pas de mathématiques complexes, il y a une relation 1-à-1 entre les MCP et la matrice clavier.
Correspondance broche clavier (1..26) vers MCP (0..15) + MCP (0..9)
Enfin, j'ai aussi remarqué que l'usage de résistance pull-down sur les 5 premières lignes améliorait la stabilité de la détection. Ces pull-down manquantes sur le connecteur clavier était probablement activée sur le microcontroleur bluetooth.
Décoder la matrice clavier
Après un premier échec sur l'identification des colonnes et des lignes de la matrice, un second script a été écrit pour tester une à une chaque ligne comme une colonne considérant alors les 25 autres lignes pour détecter une touche.
Le script tester2.py publié sur le dépôt agit comme suit:
Presser une touche du clavier
Au démarrage, toutes les broches sont configurées en entrée. Elles présentent toutes une haute impédance.
Ensuite le script sélectionne une ligne -- dite driver pin--, la configure en sortie et la place au niveau haut. Cette broche présente donc une faible impédance et est capable de fournir du courant.
Ensuite, les 25 autres broches --read pin-- sont interrogés une par une pour y détecter un niveau haut. Note: la touche pressée doit permettre au courant de circuler vers une des broches en lecture.
S'il N'Y A PAS de détection de niveau haut ALORS * le script repasse la driver pin au niveau bas * PUIS reconfigure celle-ci en entrée. * ENFIN, le script passe la driver pin sur la broche suivante * et recommence le cycle de détection au point 3.
S'il Y A détection d'un niveau haut ALORS le script a détecté un couple (driver_pin, read_pin) permettant de détecter la touche enfoncée.
La feuille de calcul reprend les couples drive_pin,read_pin dans la 2ieme colonne.
Puisque le contact électrique se fait dans les deux sens entre drive_pin--et--read_pin alors il est possible d'écrire la relation de détection de F12 comme 7,13 ou 13,7 (d'ailleurs, les deux options sont indiquées par tester2.py ).
Par souci de simplicité, la relation est écrite avec le plus petit numéro de broche d'abord (donc 7,13 pour la touche F12).
Compilation des broches
Maintenant que nous disposons d'une description de la matrice, il serait opportun d'identifier les driver_pin et les read_pin utilisés dans la matrice.... cela revient à identifier les lignes et les colonnes du keypad présenté plus haut dans l'article.
Il y a un recouvrement des broches driver_pin et read_pin. Suivant les circonstances, une broche de la matrice clavier agit tantôt comme broche driver_pin tantôt comme broche de read_pin (de lecture).
Lecture optimisée
Sur base des informations obtenue, le script tester3.py disponible dans le dépôt effectue une détection optimisée des touches du clavier. La détection s'étend aux combinaisons de touches avec Shift,Ctrl,Alt.
Il reste encore un peu de travail mais le plus gros est fait :-)
Il y a un peu plus de trois ans, je vous présentais déjà la carte NadHAT MK2, basée sur un modem 4G A7682E, imaginée et fabriqué en France par Garatronic et distribuée par McHobby. Cette carte bénéficie d’un support sérieux et de bibliothèques bien suivies, ce qui la distingue de nombreuses productions asiatiques. Aujourd’hui, place […]
Cela faisait longtemps que nous n'avions pas eu l'occasion de porter un nouveau pilote sous MicroPython.
Renesas FS3000
Cette fois, nous nous sommes penchés sur le capteur FS3000 de Renesas qui mesure la vélocité de l'air. Capteur que l'on retrouve sur les breakout FS3000 de SparkFun.
Capteur FS3000 de SparkFun
Ce type de capteur est principalement utilisé dans des systèmes de refroidissement ou de conditionnement d'air. Comme il dispose d'une interface I2C, il est très facile de l'exploiter avec de nombreux microcontrôleur.
Les cartes breakout existent en deux versions:
FS3000-1015 mesurant des flux jusqu'à 15m/s (54 Km/H).
FS3000-1005 mesurant des flux jusqu'à 7ms/s (25 km/H).
Pilote MicroPython
Bien que SparkFun propose un pilote MicroPython --ce que je salue-- celui-ci est construit sur une surcouche d'abstraction permettant permettant d'utiliser le capteur avec CircuitPython et MicroPython.
Etant un fan inconditionnel de MicroPython, je pense qu'il est préférable de disposer d'un code qui va droit au but... avec le moins de détour possible! C'est ainsi que l'on maintient une efficacité optimale d'exécution.
J'ai décidé de recréer un pilote à partir du code Arduino. En effet, il à été plus facile de travailler à partir du code Arduino que de suivre la couche d'abstraction CircuitPython/MicroPython.
MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.
Le 1/1000ème de seconde est sans doute superflu, mais il illustre bien la précision qu’il est possible d’obtenir avec un microcontrôleur moderne comme le Raspberry Pi Pico. Ce projet vous propose de réaliser un chronomètre autonome, pensé pour des jeux ou activités scolaires, doté d’un écran OLED bien lisible et alimenté par une batterie LiPo. […]
Un retour d'expérience (à nuancer comme toujours) sur une migration de Python vers Node justifiée par la difficulté d'écrire du code asynchrone avec Python.
Un retour d'expérience (à nuancer comme toujours) sur une migration de Python vers Node justifiée par la difficulté d'écrire du code asynchrone avec Python.
Je trouve ça fou qu'avec le succès phénoménal de Python il n'y ait jamais eu de manière plus simple et intégré de gérer les versions et les dépendances. virtualenv semble ne satisfaire personne.