Intégration Word dans Flask: upload et traitement web
Modifications:
- flask_app.py:
* Ajout de "docx" dans ALLOWED_EXTENSIONS
* Nouvelle fonction run_word_processing_job() avec:
- Gestion tempfile pour python-docx (besoin d'un path)
- Intégration du callback de progression SSE
- Nettoyage automatique du fichier temporaire
* Modification upload() route:
- Détection du type de fichier (PDF/Word)
- Routage vers le bon processeur (run_processing_job vs run_word_processing_job)
- Messages d'erreur adaptés pour PDF et Word
* Mise à jour des docstrings
- templates/upload.html:
* Titre: "Parser PDF/Word/Markdown" (au lieu de PDF/Markdown)
* Accept attribute: ".pdf,.docx,.md"
* Tooltips: Explique que Word n'a pas besoin d'OCR
* Pipeline de traitement: Section séparée pour PDF vs Word
* Labels mis à jour pour inclure Word
Fonctionnalités:
✅ Upload de fichiers .docx via interface web
✅ Traitement en arrière-plan avec SSE
✅ Pas d'OCR nécessaire pour Word (économie ~0.003€/page)
✅ Réutilisation complète des modules LLM existants
✅ Extraction directe via python-docx
✅ Construction TOC depuis styles Heading 1-9
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
|
||||
{% block content %}
|
||||
<section class="section">
|
||||
<h1>📄 Parser PDF/Markdown</h1>
|
||||
<p class="lead">Uploadez un fichier PDF ou Markdown pour l'analyser et structurer son contenu</p>
|
||||
<h1>📄 Parser PDF/Word/Markdown</h1>
|
||||
<p class="lead">Uploadez un fichier PDF, Word (.docx) ou Markdown pour l'analyser et structurer son contenu</p>
|
||||
|
||||
{% if error %}
|
||||
<div class="alert alert-warning">
|
||||
@@ -16,18 +16,19 @@
|
||||
<div class="search-box">
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="file">Fichier PDF ou Markdown</label>
|
||||
<input
|
||||
type="file"
|
||||
name="file"
|
||||
id="file"
|
||||
<label class="form-label" for="file">Fichier PDF, Word ou Markdown</label>
|
||||
<input
|
||||
type="file"
|
||||
name="file"
|
||||
id="file"
|
||||
class="form-control"
|
||||
accept=".pdf,.md"
|
||||
accept=".pdf,.docx,.md"
|
||||
required
|
||||
>
|
||||
<div class="caption mt-1">Taille maximale : 50 MB</div>
|
||||
<div class="caption" style="color: var(--color-accent); margin-top: 0.25rem;">
|
||||
💡 Pour retester un document existant sans refaire l'OCR payant, cochez "Skip OCR"
|
||||
💡 PDF: Pour retester sans refaire l'OCR payant, cochez "Skip OCR"
|
||||
<br>💡 Word: Pas d'OCR nécessaire (extraction directe du contenu)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -150,10 +151,17 @@
|
||||
<div class="card">
|
||||
<h3>📋 Pipeline de traitement</h3>
|
||||
<div class="mt-2">
|
||||
<p><strong>1. OCR Mistral</strong> — Extraction du texte et des images via l'API Mistral</p>
|
||||
<p><strong>2. Markdown</strong> — Construction du document Markdown avec images</p>
|
||||
<p><strong>3. Hiérarchie</strong> — Analyse des titres pour créer une structure arborescente</p>
|
||||
<p><strong>4. LLM (optionnel)</strong> — Amélioration de la structure via Ollama</p>
|
||||
<p><strong>PDF:</strong></p>
|
||||
<p style="margin-left: 1rem;">1. OCR Mistral — Extraction du texte et des images via l'API Mistral</p>
|
||||
<p style="margin-left: 1rem;">2. Markdown — Construction du document Markdown avec images</p>
|
||||
<p style="margin-left: 1rem;">3. Hiérarchie — Analyse des titres pour créer une structure arborescente</p>
|
||||
<p style="margin-left: 1rem;">4. LLM (optionnel) — Amélioration de la structure via Ollama/Mistral</p>
|
||||
|
||||
<p class="mt-3"><strong>Word (.docx):</strong></p>
|
||||
<p style="margin-left: 1rem;">1. Extraction Word — Lecture directe du contenu (pas d'OCR)</p>
|
||||
<p style="margin-left: 1rem;">2. Markdown — Construction du document Markdown à partir des paragraphes</p>
|
||||
<p style="margin-left: 1rem;">3. TOC — Extraction de la hiérarchie depuis les styles Heading 1-9</p>
|
||||
<p style="margin-left: 1rem;">4. LLM — Structuration sémantique et enrichissement</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user