﻿﻿{"id":2089,"date":"2026-01-16T16:05:59","date_gmt":"2026-01-16T15:05:59","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia\/"},"modified":"2026-01-16T16:05:59","modified_gmt":"2026-01-16T15:05:59","slug":"langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia\/","title":{"rendered":"LangExtract &#8211; La nouvelle p\u00e9pite de Google pour extraire des donn\u00e9es structur\u00e9es avec l&#8217;IA"},"content":{"rendered":"<p>Il y a des combats comme cela auxquels pas grand monde ne pense et qui pourtant sont tr\u00e8s importants. Je parle \u00e9videmment de la lutte contre le chaos du texte non structur\u00e9. Si vous avez d\u00e9j\u00e0 essay\u00e9 d&#8217;extraire des donn\u00e9es propres d&#8217;un tas de PDF (apr\u00e8s OCR), de rapports ou de notes griffonn\u00e9es, vous voyez de quoi je parle : <strong>c&#8217;est l&#8217;enfer !<\/strong> (oui j&#8217;aime me faire du mal en tentant des regex impossibles).<\/p>\n<p>Heureusement, Google a l\u00e2ch\u00e9 d\u00e9but janvier 2026 une petite p\u00e9pite en open source (m\u00eame si c&#8217;est pas un produit &#8220;officiel&#8221;) qui s&#8217;appelle<br \/>\n<a href=\"https:\/\/github.com\/google\/langextract\">LangExtract<\/a><br \/>\n. C&#8217;est une biblioth\u00e8que Python qui utilise la puissance des LLM pour transformer vos documents textuels en donn\u00e9es JSON bien rang\u00e9es.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia-1.gif\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>Exemple d&#8217;extraction sur le texte de Rom\u00e9o et Juliette (<br \/>\n<a href=\"https:\/\/github.com\/google\/langextract\">Source<\/a><br \/>\n)<\/em><\/p>\n<p>Ce qui fait que LangExtract sort du lot par rapport \u00e0 d&#8217;autres outils comme<br \/>\n<a href=\"https:\/\/korben.info\/sparrow-outil-extraction-donnees-ia.html\">Sparrow<\/a><br \/>\n, c&#8217;est surtout son syst\u00e8me de Source Grounding. En gros, chaque info extraite est directement li\u00e9e \u00e0 sa position exacte dans le texte source. \u00c7a facilite \u00e9norm\u00e9ment la v\u00e9rification et la tra\u00e7abilit\u00e9 puisque vous pouvez voir visuellement d&#8217;o\u00f9 vient la donn\u00e9e gr\u00e2ce \u00e0 un syst\u00e8me de surlignage automatique.<\/p>\n<p>Sous le capot, l&#8217;outil est optimis\u00e9 pour les documents \u00e0 rallonge (le fameux probl\u00e8me de l&#8217;aiguille dans une botte de foin). Il utilise des strat\u00e9gies de d\u00e9coupage de texte et de passes multiples pour am\u00e9liorer le rappel et s&#8217;assurer que le maximum d&#8217;infos soit captur\u00e9.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia\/langextract-la-nouvelle-pepite-de-google-pour-extraire-des-donnees-structurees-avec-lia-2.gif\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>La visualisation interactive permet de valider les donn\u00e9es en un clin d&#8217;\u0153il (<br \/>\n<a href=\"https:\/\/github.com\/google\/langextract\">Source<\/a><br \/>\n)<\/em><\/p>\n<p>Et cerise sur le g\u00e2teau, il permet de g\u00e9n\u00e9rer un fichier HTML interactif pour visualiser les milliers d&#8217;entit\u00e9s extraites dans leur contexte original. \u00c0 la cool !<\/p>\n<p>C\u00f4t\u00e9 installation, c&#8217;est hyper fastoche :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">pip install langextract\n<\/span><\/span><\/code><\/pre>\n<p>Pour faire le job, vous avez le choix des armes : les mod\u00e8les cloud de Google (Gemini 2.5 Flash\/Pro), ceux d&#8217;OpenAI (via <code>pip install langextract[openai]<\/code>), ou carr\u00e9ment du local avec<br \/>\n<a href=\"https:\/\/korben.info\/ollama-web-search-api-tutoriel-ia-locale.html\">Ollama<\/a><br \/>\n. Pas besoin de passer des heures \u00e0 fine-tuner un mod\u00e8le, il suffit de fournir quelques exemples structur\u00e9s via le param\u00e8tre <code>examples<\/code> et hop, c&#8217;est parti mon kiki.<\/p>\n<p>Voici \u00e0 quoi \u00e7a ressemble sous le capot pour lancer une machine \u00e0 extraire :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">import langextract as lx\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"># 1. On d\u00e9finit les r\u00e8gles du jeu\n<\/span><\/span><span class=\"line\"><span class=\"cl\">prompt = \"Extraire les noms de personnages et leurs \u00e9motions.\"\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"># 2. On donne un exemple (few-shot) pour guider le mod\u00e8le\n<\/span><\/span><span class=\"line\"><span class=\"cl\">examples = [\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> lx.data.ExampleData(\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> text=\"ROMEO. But soft! What light...\",\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> extractions=[lx.data.Extraction(extraction_class=\"character\", extraction_text=\"ROMEO\", attributes={\"emotion\": \"wonder\"})]\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> )\n<\/span><\/span><span class=\"line\"><span class=\"cl\">]\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"># 3. On lance l'extraction (n\u00e9cessite une cl\u00e9 API ou Ollama)\n<\/span><\/span><span class=\"line\"><span class=\"cl\">results = lx.extract(\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> text_or_documents=\"votre_texte_brut_ici\",\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> prompt_description=prompt,\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> examples=examples,\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> model_id=\"gemini-2.5-flash\"\n<\/span><\/span><span class=\"line\"><span class=\"cl\">)\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"># 4. On sauvegarde et on g\u00e9n\u00e8re la visualisation HTML\n<\/span><\/span><span class=\"line\"><span class=\"cl\">lx.io.save_annotated_documents(results, output_name=\"results.jsonl\")\n<\/span><\/span><span class=\"line\"><span class=\"cl\">html_content = lx.visualize(\"results.jsonl\")\n<\/span><\/span><span class=\"line\"><span class=\"cl\">with open(\"view.html\", \"w\") as f:\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> f.write(html_content)\n<\/span><\/span><\/code><\/pre>\n<p>Honn\u00eatement, je ne sais pas si \u00e7a va remplacer<br \/>\n<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Automatisation_robotis%C3%A9e_des_processus\">les solutions industrielles de RPA<\/a><br \/>\n, mais pour un dev qui veut structurer du texte sans se prendre la t\u00eate, c&#8217;est vraiment impressionnant. Que vous fassiez du<br \/>\n<a href=\"https:\/\/korben.info\/grist-tableur-base-de-donnees-collaboratif.html\">Grist<\/a><br \/>\nou de l&#8217;analyse de donn\u00e9es pure, cet outil m\u00e9rite clairement que vous y jetiez un \u0153il !<\/p>\n<p>\n<a href=\"https:\/\/github.com\/google\/langextract\">Source<\/a>\n<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il y a des combats comme cela auxquels pas grand monde ne pense et qui pourtant sont tr\u00e8s importants. Je parle \u00e9videmment de la lutte contre le chaos du texte non structur\u00e9. Si vous avez d\u00e9j\u00e0 essay\u00e9 d&#8217;extraire des donn\u00e9es propres d&#8217;un tas de PDF (apr\u00e8s OCR), de rapports ou de notes griffonn\u00e9es, vous voyez de quoi je parle : c&#8217;est l&#8217;enfer ! (oui j&#8217;aime me faire du mal en tentant des regex impossibles). Heureusement, Google a l\u00e2ch\u00e9 d\u00e9but janvier 2026 une petite p\u00e9pite en open source (m\u00eame si c&#8217;est pas un produit &#8220;officiel&#8221;) qui s&#8217;appelle LangExtract . C&#8217;est une biblioth\u00e8que Python qui utilise la puissance des LLM pour transformer vos documents textuels en donn\u00e9es JSON bien rang\u00e9es. Exemple d&#8217;extraction sur le texte de Rom\u00e9o et Juliette ( Source ) Ce qui fait que LangExtract sort du lot par rapport \u00e0 d&#8217;autres outils comme Sparrow , c&#8217;est surtout son syst\u00e8me de Source Grounding. En gros, chaque info extraite est directement li\u00e9e \u00e0 sa position exacte dans le texte source. \u00c7a facilite \u00e9norm\u00e9ment la v\u00e9rification et la tra\u00e7abilit\u00e9 puisque vous pouvez voir visuellement d&#8217;o\u00f9 vient la donn\u00e9e gr\u00e2ce \u00e0 un syst\u00e8me de surlignage automatique. Sous le capot, l&#8217;outil est optimis\u00e9 pour les documents \u00e0 rallonge (le fameux probl\u00e8me de l&#8217;aiguille dans une botte de foin). Il utilise des strat\u00e9gies de d\u00e9coupage de texte et de passes multiples pour am\u00e9liorer le rappel et s&#8217;assurer que le maximum d&#8217;infos soit captur\u00e9. La visualisation interactive permet de valider les donn\u00e9es en un clin d&#8217;\u0153il ( Source ) Et cerise sur le g\u00e2teau, il permet de g\u00e9n\u00e9rer un fichier HTML interactif pour visualiser les milliers d&#8217;entit\u00e9s extraites dans leur contexte original. \u00c0 la cool ! C\u00f4t\u00e9 installation, c&#8217;est hyper fastoche : pip install langextract Pour faire le job, vous avez le choix des armes : les mod\u00e8les cloud de Google (Gemini 2.5 Flash\/Pro), ceux d&#8217;OpenAI (via pip install langextract[openai]), ou carr\u00e9ment du local avec Ollama . Pas besoin de passer des heures \u00e0 fine-tuner un mod\u00e8le, il suffit de fournir quelques exemples structur\u00e9s via le param\u00e8tre examples et hop, c&#8217;est parti mon kiki. Voici \u00e0 quoi \u00e7a ressemble sous le capot pour lancer une machine \u00e0 extraire : import langextract as lx # 1. On d\u00e9finit les r\u00e8gles du jeu prompt = &#8220;Extraire les noms de personnages et leurs \u00e9motions.&#8221; # 2. On donne un exemple (few-shot) pour guider le mod\u00e8le examples = [ lx.data.ExampleData( text=&#8221;ROMEO. But soft! What light&#8230;&#8221;, extractions=[lx.data.Extraction(extraction_class=&#8221;character&#8221;, extraction_text=&#8221;ROMEO&#8221;, attributes={&#8220;emotion&#8221;: &#8220;wonder&#8221;})] ) ] # 3. On lance l&#8217;extraction (n\u00e9cessite une cl\u00e9 API ou Ollama) results = lx.extract( text_or_documents=&#8221;votre_texte_brut_ici&#8221;, prompt_description=prompt, examples=examples, model_id=&#8221;gemini-2.5-flash&#8221; ) # 4. On sauvegarde et on g\u00e9n\u00e8re la visualisation HTML lx.io.save_annotated_documents(results, output_name=&#8221;results.jsonl&#8221;) html_content = lx.visualize(&#8220;results.jsonl&#8221;) with open(&#8220;view.html&#8221;, &#8220;w&#8221;) as f: f.write(html_content) Honn\u00eatement, je ne sais pas si \u00e7a va remplacer les solutions industrielles de RPA , mais pour un dev qui veut structurer du texte sans se prendre la t\u00eate, c&#8217;est vraiment impressionnant. Que vous fassiez du Grist ou de l&#8217;analyse de donn\u00e9es pure, cet outil m\u00e9rite clairement que vous y jetiez un \u0153il ! Source<\/p>\n","protected":false},"author":1,"featured_media":2090,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2089","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2089"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2089\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2090"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}