1:HL["/_next/static/css/cc4372a95c3f4d70.css","style",{"crossOrigin":""}] 0:["6Hf9gjeptnXwb-ZeqYZY2",[[["",{"children":["projects",{"children":[["uid","extraction-de-texte-a-partir-dimages--de-lia-a-tes","d"],{"children":["__PAGE__?{\"uid\":\"extraction-de-texte-a-partir-dimages--de-lia-a-tes\"}",{}]}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/cc4372a95c3f4d70.css","precedence":"next","crossOrigin":""}]],"$L3"]]]] 5:I[6954,[],""] 6:I[7264,[],""] b:I[9817,["51","static/chunks/795d4814-c504a020f883e502.js","980","static/chunks/980-b29bb817c89dbc45.js","439","static/chunks/439-b7e88012734c3f8e.js","185","static/chunks/app/layout-f202332b787806de.js"],"Analytics"] 2:[null,["$","html",null,{"lang":"en","className":"text-slate-100 m-0 p-0","style":{"height":"100%","minHeight":"100vh"},"children":[["$","body",null,{"className":"__className_472caf min-h-screen w-full relative","style":{"minHeight":"100vh","height":"100%","width":"100%","background":"transparent"},"children":[["$","div",null,{"style":{"position":"fixed","top":0,"left":0,"width":"100vw","height":"100vh","zIndex":-2,"backgroundImage":"url('/background/dark-orange.jpg')","backgroundSize":"cover","backgroundPosition":"center","backgroundRepeat":"no-repeat"}}],["$","div",null,{"style":{"position":"fixed","top":0,"left":0,"width":"100vw","height":"100vh","zIndex":-1,"background":"rgba(0,0,0,0.45)","pointerEvents":"none"}}],"$L4",["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"initialChildNode":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","projects","children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","initialChildNode":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","projects","children",["uid","extraction-de-texte-a-partir-dimages--de-lia-a-tes","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","initialChildNode":["$L7","$L8",null],"childPropSegment":"__PAGE__?{\"uid\":\"extraction-de-texte-a-partir-dimages--de-lia-a-tes\"}","styles":null}],"childPropSegment":["uid","extraction-de-texte-a-partir-dimages--de-lia-a-tes","d"],"styles":null}],"childPropSegment":"projects","styles":null}],"$L9"]}],"$La",["$","$Lb",null,{}]]}],null] c:I[2678,["51","static/chunks/795d4814-c504a020f883e502.js","922","static/chunks/c15bf2b0-9d8717324b1e67d6.js","870","static/chunks/bd904a5c-f823905c5d28c40c.js","689","static/chunks/b536a0f1-448ca6f7d4d2250f.js","980","static/chunks/980-b29bb817c89dbc45.js","815","static/chunks/815-2e6a34b73afd6a5c.js","686","static/chunks/686-b55b0103a39ae4a7.js","634","static/chunks/634-8d76538b675fe546.js","439","static/chunks/439-b7e88012734c3f8e.js","994","static/chunks/994-a46ca7a9077e0ce9.js","345","static/chunks/app/projects/%5Buid%5D/page-c3b7d53ee912614b.js"],"PrismicPreviewClient"] d:I[3994,["51","static/chunks/795d4814-c504a020f883e502.js","922","static/chunks/c15bf2b0-9d8717324b1e67d6.js","870","static/chunks/bd904a5c-f823905c5d28c40c.js","689","static/chunks/b536a0f1-448ca6f7d4d2250f.js","980","static/chunks/980-b29bb817c89dbc45.js","815","static/chunks/815-2e6a34b73afd6a5c.js","686","static/chunks/686-b55b0103a39ae4a7.js","634","static/chunks/634-8d76538b675fe546.js","439","static/chunks/439-b7e88012734c3f8e.js","994","static/chunks/994-a46ca7a9077e0ce9.js","345","static/chunks/app/projects/%5Buid%5D/page-c3b7d53ee912614b.js"],"*"] a:["$undefined",["$","$Lc",null,{"repositoryName":"portfolio-benjamin-lecomte","isDraftMode":false}],["$","$Ld",null,{"src":"https://static.cdn.prismic.io/prismic.js?new=true&repo=portfolio-benjamin-lecomte","strategy":"lazyOnload"}]] f:I[678,["51","static/chunks/795d4814-c504a020f883e502.js","980","static/chunks/980-b29bb817c89dbc45.js","439","static/chunks/439-b7e88012734c3f8e.js","185","static/chunks/app/layout-f202332b787806de.js"],""] 10:I[8326,["51","static/chunks/795d4814-c504a020f883e502.js","922","static/chunks/c15bf2b0-9d8717324b1e67d6.js","870","static/chunks/bd904a5c-f823905c5d28c40c.js","689","static/chunks/b536a0f1-448ca6f7d4d2250f.js","980","static/chunks/980-b29bb817c89dbc45.js","815","static/chunks/815-2e6a34b73afd6a5c.js","686","static/chunks/686-b55b0103a39ae4a7.js","634","static/chunks/634-8d76538b675fe546.js","439","static/chunks/439-b7e88012734c3f8e.js","994","static/chunks/994-a46ca7a9077e0ce9.js","345","static/chunks/app/projects/%5Buid%5D/page-c3b7d53ee912614b.js"],""] 11:I[8326,["51","static/chunks/795d4814-c504a020f883e502.js","922","static/chunks/c15bf2b0-9d8717324b1e67d6.js","870","static/chunks/bd904a5c-f823905c5d28c40c.js","689","static/chunks/b536a0f1-448ca6f7d4d2250f.js","980","static/chunks/980-b29bb817c89dbc45.js","815","static/chunks/815-2e6a34b73afd6a5c.js","686","static/chunks/686-b55b0103a39ae4a7.js","634","static/chunks/634-8d76538b675fe546.js","439","static/chunks/439-b7e88012734c3f8e.js","994","static/chunks/994-a46ca7a9077e0ce9.js","345","static/chunks/app/projects/%5Buid%5D/page-c3b7d53ee912614b.js"],"*"] 8:"$Le" 4:["$","header",null,{"className":"top-0 z-50 mx-auto max-w-7xl md:sticky md:top-4","children":["$","$Lf",null,{"settings":{"id":"Z5rjARAAACEA12z4","uid":null,"url":null,"type":"settings","href":"https://portfolio-benjamin-lecomte.cdn.prismic.io/api/v2/documents/search?ref=aK97FhEAACkAOt-T&q=%5B%5B%3Ad+%3D+at%28document.id%2C+%22Z5rjARAAACEA12z4%22%29+%5D%5D","tags":[],"first_publication_date":"2025-01-30T02:25:07+0000","last_publication_date":"2025-02-25T09:59:56+0000","slugs":["settings"],"linked_documents":[],"lang":"en-us","alternate_languages":[],"data":{"name":"Benjamin Lecomte","nav_item":[{"link":{"id":"Z5rmVRAAACAA13Ky","type":"page","tags":[],"lang":"en-us","slug":"sur-moi","first_publication_date":"2025-01-30T02:39:21+0000","last_publication_date":"2025-08-27T21:37:23+0000","uid":"about","url":"/about","link_type":"Document","key":"f8cedee2-d360-4f7a-8ba5-b6461d24fc32","isBroken":false,"text":"About"},"label":"A propos"},{"link":{"id":"Z5scsBAAAB8A18J9","type":"page","tags":[],"lang":"en-us","slug":"projects","first_publication_date":"2025-01-30T06:31:16+0000","last_publication_date":"2025-02-25T10:02:03+0000","uid":"projects","url":"/projects","link_type":"Document","key":"986be582-356b-4244-94a3-d103b6c3a554","isBroken":false,"text":"Projects"},"label":"Projets"}],"cta_link":{"link_type":"Web","key":"9f54416b-f6ad-4f68-b90c-fe46f1a2a672","url":"mailto:benjamin.l06@outlook.fr","text":"Contact"},"cta_label":"Contact","twitter_link":{"link_type":"Any","key":"1f0f43b1-aa42-4ba1-bdc5-fa80bbb95a51"},"github_link":{"link_type":"Web","key":"78ab3d20-74c6-4a8c-84c4-eb7c26c17a50","url":"https://github.com/Benjam1Lct","target":"_blank","text":"GitHub"},"linkedin_link":{"link_type":"Any","key":"7ddbcbca-ad04-4372-9ec2-768d82dd0687","text":"LinkedIn"},"meta_title":null,"meta_description":null,"og_image":{}}}}]}] 12:T518,M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z9:["$","footer",null,{"className":"px-4 md:px-6 ","children":["$","div",null,{"className":"mx-auto w-full max-w-7xl text-slate-600","children":["$","div",null,{"className":"container mx-auto mt-20 flex flex-col items-center justify-between gap-6 py-8 sm:flex-row ","children":[["$","div",null,{"className":"name flex flex-col items-center justify-center gap-x-4 gap-y-2 sm:flex-row sm:justify-self-start","children":[["$","$L10",null,{"href":"/","className":"text-xl font-extrabold tracking-tighter text-gray-50 transition-colors duration-150 hover:text-[#7D79D9]","children":"Benjamin Lecomte"}],["$","span",null,{"className":"hidden text-5xl font-extralight leading-[0] text-gray-200 sm:inline","aria-hidden":true,"children":"/"}],["$","p",null,{"className":" text-sm text-gray-100 ","children":["© ",2025," ","Benjamin Lecomte"]}]]}],["$","nav",null,{"className":"navigation","aria-label":"Footer Navigation","children":["$","ul",null,{"className":"flex items-center gap-1","children":[[["$","li",null,{"children":["$","$L11",null,{"target":"$undefined","className":"group relative block overflow-hidden rounded px-3 py-1 text-base font-bold text-slate-100 transition-colors duration-150 hover:text-[#7D79D9]","href":"/about","rel":"$undefined","children":"A propos"}]}],["$","span",null,{"className":"text-4xl font-thin leading-[0] text-slate-400 ","aria-hidden":"true","children":"/"}]],[["$","li",null,{"children":["$","$L11",null,{"target":"$undefined","className":"group relative block overflow-hidden rounded px-3 py-1 text-base font-bold text-slate-100 transition-colors duration-150 hover:text-[#7D79D9]","href":"/projects","rel":"$undefined","children":"Projets"}]}],false]]}]}],["$","div",null,{"className":"socials inline-flex justify-center sm:justify-end","children":[["$","$L11",null,{"target":"_blank","className":"p-2 text-2xl text-slate-300 transition-all duration-150 hover:scale-125 hover:text-[#7D79D9]","aria-label":"Benjamin Lecomte on GitHub","href":"https://github.com/Benjam1Lct","rel":"noreferrer","children":["$","svg",null,{"stroke":"currentColor","fill":"currentColor","strokeWidth":"0","viewBox":"0 0 496 512","children":["$undefined",[["$","path","0",{"d":"$12","children":[]}]]],"className":"$undefined","style":{"color":"$undefined"},"height":"1em","width":"1em","xmlns":"http://www.w3.org/2000/svg"}]}],false,false]}]]}]}]}] 3:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","meta","2",{"name":"twitter:card","content":"summary"}],["$","link","3",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]] 7:null 13:"$Sreact.suspense" e:["$","article",null,{"className":"px-4 md:px-6 ","children":["$","div",null,{"className":"mx-auto w-full max-w-7xl mt-24","children":["$","div",null,{"className":"rounded-2xl bg-black/75 px-4 py-10 md:px-8 md:py-12 z-1000 border-2 border-slate-600","children":[["$","div",null,{"className":"relative rounded max-w-fit","children":[["$","div",null,{"className":"z-10 absolute left-0 top-0 rounded h-full w-4 bg-gradient-to-r from-white via-white to-transparent pointer-events-none"}],["$","div",null,{"className":"flex gap-4 text-black max-w-fit bg-white px-4 rounded-[10px] py-2 text-xl font-bold overflow-x-auto scrollbar-hide relative","children":[["$","span","IA",{"children":"IA"}],["$","span","Python",{"children":"Python"}],["$","span","Flask",{"children":"Flask"}],["$","span","TensorFlow",{"children":"TensorFlow"}],["$","span","MachineLearning",{"children":"MachineLearning"}],["$","span","Tesseract",{"children":"Tesseract"}]]}],["$","div",null,{"className":"z-10 absolute right-0 top-0 rounded h-full w-4 bg-gradient-to-l from-white via-white to-transparent pointer-events-none"}]]}],["$","h1",null,{"className":"font-bold leading-tight tracking-tight text-gray-50 text-6xl md:text-8xl mt-8","children":"SnapOCR"}],["$","p",null,{"className":"py-4 mt-4 border-b-2 border-slate-600 text-xl font-medium text-slate-300","children":"Monday, June 5, 2023"}],["$","div",null,{"className":"prose prose-lg prose-invert mt-8 w-full max-w-none md:mt-12 text-slate-300 prose-strong:text-slate-50 prose-headings:text-slate-50 ","children":[["$","$13",null,{"fallback":null,"children":"$L14"}],["$","$13",null,{"fallback":null,"children":"$L15"}],["$","$13",null,{"fallback":null,"children":"$L16"}]]}]]}]}]}] 17:I[8170,["51","static/chunks/795d4814-c504a020f883e502.js","922","static/chunks/c15bf2b0-9d8717324b1e67d6.js","870","static/chunks/bd904a5c-f823905c5d28c40c.js","689","static/chunks/b536a0f1-448ca6f7d4d2250f.js","980","static/chunks/980-b29bb817c89dbc45.js","815","static/chunks/815-2e6a34b73afd6a5c.js","686","static/chunks/686-b55b0103a39ae4a7.js","634","static/chunks/634-8d76538b675fe546.js","439","static/chunks/439-b7e88012734c3f8e.js","994","static/chunks/994-a46ca7a9077e0ce9.js","345","static/chunks/app/projects/%5Buid%5D/page-c3b7d53ee912614b.js"],""] 14:["$","img",null,{"src":"https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&w=600","srcSet":"https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&width=640 640w, https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&width=828 828w, https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&width=1200 1200w, https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&width=2048 2048w, https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format%2Ccompress&width=3840 3840w","alt":"$undefined","className":"rounded-2xl"}] 19:[] 1b:{"link_type":"Web","key":"39737151-321c-414b-834c-f91f2a298ce8","url":"https://github.com/Benjam1Lct/Flask_SnapOCR","target":"_blank","text":"GitHub"} 1a:{"title":"GitHub","link":"$1b"} 18:{"variation":"default","version":"initial","items":"$19","primary":"$1a","id":"external_link$8adbaece-7f48-40e7-a57d-afa1bf7c7565","slice_type":"external_link","slice_label":null} 15:["$","$L17",null,{"slice":{"variation":"default","version":"initial","items":[],"primary":{"title":"GitHub","link":{"link_type":"Web","key":"39737151-321c-414b-834c-f91f2a298ce8","url":"https://github.com/Benjam1Lct/Flask_SnapOCR","target":"_blank","text":"GitHub"}},"id":"external_link$8adbaece-7f48-40e7-a57d-afa1bf7c7565","slice_type":"external_link","slice_label":null},"index":1,"slices":[{"variation":"default","version":"initial","items":[],"primary":{"image":{"dimensions":{"width":917,"height":516},"alt":null,"copyright":null,"url":"https://images.prismic.io/portfolio-benjamin-lecomte/Z5wgZpbqstJ9-EXk_snapOCR.png?auto=format,compress","id":"Z5wgZpbqstJ9-EXk","edit":{"x":0,"y":0,"zoom":1,"background":"transparent"}}},"id":"image_block$63ea0620-8c00-4193-817f-2694e2ef4e5b","slice_type":"image_block","slice_label":null},"$18",{"variation":"default","version":"initial","items":[],"primary":{"text":[{"type":"heading3","text":"Extraction de texte à partir d'images – De l'IA à Tesseract","spans":[],"direction":"ltr"},{"type":"paragraph","text":"Projet : Développement d’une plateforme web d'OCR permettant d'extraire du texte depuis des images\nTechnologies principales : Python (Flask), Tesseract OCR (anciennement TensorFlow)","spans":[{"start":0,"end":8,"type":"strong"},{"start":99,"end":125,"type":"strong"},{"start":142,"end":155,"type":"strong"},{"start":170,"end":180,"type":"strong"}],"direction":"ltr"},{"type":"heading4","text":"Origine du projet","spans":[{"start":0,"end":17,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"Ce projet a débuté comme une expérimentation en machine learning, où l’objectif était de concevoir une IA capable d’extraire du texte depuis des images à l’aide de TensorFlow. Dans une première version, nous avons réussi à entraîner un modèle pour extraire uniquement des chiffres avec une précision correcte, mais des limites sont rapidement apparues pour la reconnaissance de texte plus complexe.","spans":[{"start":29,"end":64,"type":"strong"},{"start":103,"end":151,"type":"strong"},{"start":164,"end":174,"type":"strong"},{"start":248,"end":280,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"Face à ces défis et dans une volonté d’améliorer la précision et l’efficacité du système, nous avons décidé de remplacer l'IA par Tesseract OCR de Google, une solution spécialisée et optimisée pour l'extraction de texte à partir d’images.","spans":[{"start":52,"end":77,"type":"strong"},{"start":111,"end":153,"type":"strong"}],"direction":"ltr"},{"type":"heading4","text":"Présentation de la version actuelle","spans":[{"start":0,"end":35,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"L’application a évolué vers une plateforme web en Flask, permettant aux utilisateurs d’importer une image et de récupérer le texte extrait en quelques secondes. Un système de gestion de compte a été ajouté pour permettre l’enregistrement des extractions et améliorer l’expérience utilisateur.","spans":[{"start":32,"end":55,"type":"strong"},{"start":87,"end":138,"type":"strong"},{"start":164,"end":192,"type":"strong"}],"direction":"ltr"},{"type":"heading4","text":"Fonctionnalités clés","spans":[{"start":0,"end":20,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"✔ Importation et traitement d'images via une interface web ergonomique\n✔ Extraction de texte précise avec Tesseract OCR\n✔ Système de gestion des utilisateurs (inscription, connexion, historique des extractions)\n✔ Possibilité d’exporter le texte extrait","spans":[{"start":2,"end":36,"type":"strong"},{"start":73,"end":100,"type":"strong"},{"start":106,"end":119,"type":"strong"},{"start":122,"end":157,"type":"strong"},{"start":213,"end":252,"type":"strong"}],"direction":"ltr"},{"type":"heading4","text":"Pourquoi ce choix technologique ?","spans":[{"start":0,"end":33,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"TensorFlow (ancienne version) :","spans":[{"start":0,"end":31,"type":"strong"}],"direction":"ltr"},{"type":"list-item","text":"Bon pour l'extraction de chiffres, mais limité pour du texte varié","spans":[],"direction":"ltr"},{"type":"list-item","text":"Besoin d’un entraînement coûteux en données et en puissance de calcul","spans":[],"direction":"ltr"},{"type":"paragraph","text":"Tesseract OCR (version actuelle) :\n✅ Meilleure précision pour une large variété de textes\n✅ Support multilingue natif\n✅ Performance optimisée sans entraînement complexe","spans":[{"start":0,"end":34,"type":"strong"},{"start":37,"end":56,"type":"strong"},{"start":92,"end":117,"type":"strong"},{"start":120,"end":168,"type":"strong"}],"direction":"ltr"},{"type":"heading4","text":"Objectif du projet","spans":[{"start":0,"end":18,"type":"strong"}],"direction":"ltr"},{"type":"paragraph","text":"Ce projet a été une excellente opportunité d’explorer les limites du machine learning dans l'OCR, et d’optimiser l’extraction de texte en utilisant un moteur éprouvé comme Tesseract. L’intégration dans une plateforme web complète avec Flask a également permis de proposer une solution simple, rapide et efficace aux utilisateurs.","spans":[{"start":54,"end":96,"type":"strong"},{"start":148,"end":181,"type":"strong"},{"start":202,"end":240,"type":"strong"},{"start":276,"end":311,"type":"strong"}],"direction":"ltr"}]},"id":"text_block$d9f6bbbe-607f-4b8c-a8be-667008d54eb7","slice_type":"text_block","slice_label":null}],"context":{}}] 16:["$","div",null,{"className":"max-w-prose","children":[["$","h3","116",{"dir":"$undefined","children":[["Extraction de texte à partir d'images – De l'IA à Tesseract"]]}],["$","p","129",{"dir":"$undefined","children":[["$","strong","118",{"children":[["Projet :"]]}],[" Développement d’une plateforme web d'OCR permettant d'extraire du texte depuis des images",["$","br","1__break",{}],""],["$","strong","121",{"children":[["Technologies principales :"]]}],[" Python (Flask), "],["$","strong","124",{"children":[["Tesseract OCR"]]}],[" (anciennement "],["$","strong","127",{"children":[["TensorFlow"]]}],[")"]]}],["$","h4","132",{"dir":"$undefined","children":[["$","strong","131",{"children":[["Origine du projet"]]}]]}],["$","p","146",{"dir":"$undefined","children":[["Ce projet a débuté comme une "],["$","strong","135",{"children":[["expérimentation en machine learning"]]}],[", où l’objectif était de concevoir une "],["$","strong","138",{"children":[["IA capable d’extraire du texte depuis des images"]]}],[" à l’aide de "],["$","strong","141",{"children":[["TensorFlow"]]}],[". Dans une première version, nous avons réussi à entraîner un modèle pour "],["$","strong","144",{"children":[["extraire uniquement des chiffres"]]}],[" avec une précision correcte, mais des limites sont rapidement apparues pour la reconnaissance de texte plus complexe."]]}],["$","p","154",{"dir":"$undefined","children":[["Face à ces défis et dans une volonté d’améliorer la "],["$","strong","149",{"children":[["précision et l’efficacité"]]}],[" du système, nous avons décidé de "],["$","strong","152",{"children":[["remplacer l'IA par Tesseract OCR de Google"]]}],[", une solution spécialisée et optimisée pour l'extraction de texte à partir d’images."]]}],["$","h4","157",{"dir":"$undefined","children":[["$","strong","156",{"children":[["Présentation de la version actuelle"]]}]]}],["$","p","168",{"dir":"$undefined","children":[["L’application a évolué vers une "],["$","strong","160",{"children":[["plateforme web en Flask"]]}],[", permettant aux utilisateurs d’"],["$","strong","163",{"children":[["importer une image et de récupérer le texte extrait"]]}],[" en quelques secondes. Un "],["$","strong","166",{"children":[["système de gestion de compte"]]}],[" a été ajouté pour permettre l’enregistrement des extractions et améliorer l’expérience utilisateur."]]}],["$","h4","171",{"dir":"$undefined","children":[["$","strong","170",{"children":[["Fonctionnalités clés"]]}]]}],["$","p","187",{"dir":"$undefined","children":[["✔ "],["$","strong","174",{"children":[["Importation et traitement d'images"]]}],[" via une interface web ergonomique",["$","br","1__break",{}],"✔ "],["$","strong","177",{"children":[["Extraction de texte précise"]]}],[" avec "],["$","strong","180",{"children":[["Tesseract OCR"]]}],["",["$","br","1__break",{}],"✔ "],["$","strong","183",{"children":[["Système de gestion des utilisateurs"]]}],[" (inscription, connexion, historique des extractions)",["$","br","1__break",{}],"✔ "],["$","strong","186",{"children":[["Possibilité d’exporter le texte extrait"]]}]]}],["$","h4","190",{"dir":"$undefined","children":[["$","strong","189",{"children":[["Pourquoi ce choix technologique ?"]]}]]}],["$","p","193",{"dir":"$undefined","children":[["$","strong","192",{"children":[["TensorFlow (ancienne version) :"]]}]]}],["$","ul","198",{"children":[["$","li","195",{"dir":"$undefined","children":[["Bon pour l'extraction de chiffres, mais limité pour du texte varié"]]}],["$","li","197",{"dir":"$undefined","children":[["Besoin d’un entraînement coûteux en données et en puissance de calcul"]]}]]}],["$","p","210",{"dir":"$undefined","children":[["$","strong","200",{"children":[["Tesseract OCR (version actuelle) :"]]}],["",["$","br","1__break",{}],"✅ "],["$","strong","203",{"children":[["Meilleure précision"]]}],[" pour une large variété de textes",["$","br","1__break",{}],"✅ "],["$","strong","206",{"children":[["Support multilingue natif"]]}],["",["$","br","1__break",{}],"✅ "],["$","strong","209",{"children":[["Performance optimisée sans entraînement complexe"]]}]]}],["$","h4","213",{"dir":"$undefined","children":[["$","strong","212",{"children":[["Objectif du projet"]]}]]}],["$","p","227",{"dir":"$undefined","children":[["Ce projet a été une excellente opportunité d’explorer "],["$","strong","216",{"children":[["les limites du machine learning dans l'OCR"]]}],[", et d’optimiser l’extraction de texte en utilisant "],["$","strong","219",{"children":[["un moteur éprouvé comme Tesseract"]]}],[". L’intégration dans "],["$","strong","222",{"children":[["une plateforme web complète avec Flask"]]}],[" a également permis de proposer une "],["$","strong","225",{"children":[["solution simple, rapide et efficace"]]}],[" aux utilisateurs."]]}]]}]