Metadata-Version: 2.4
Name: doc-ai-runtime
Version: 0.1.0
Summary: Modular Document AI Runtime for RAG and Markdown exports.
Author-email: Alain Kalombo <alain.kalombo@anztech.dev>
License: MIT
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-docx
Requires-Dist: python-pptx
Requires-Dist: openpyxl
Requires-Dist: pytesseract
Requires-Dist: Pillow
Requires-Dist: PyMuPDF
Requires-Dist: surya-ocr
Requires-Dist: ollama
Dynamic: license-file

# 📄 Document AI Runtime

Un pipeline modulaire et extensible pour l'extraction de documents (OCR et Bureautique), conçu pour transformer des PDF, images et Word en formats structurés (Markdown et RAG).

Inspiré des capacités de solutions comme ABBYY, ce runtime repose sur une architecture de plugins indépendants manipulant un modèle de données canonique (DOM). 

## 🚀 Fonctionnalités

* **Multi-Formats natifs et OCR :**
  * **Bureautique (Path B)** : DOCX, XLSX (Excel), PPTX (PowerPoint) extraits nativement.
  * **PDF Hybride** : Extrait le calque texte natif, et bascule automatiquement sur l'OCR (Surya + Tesseract) pour les pages scannées.
  * **Images (Path A)** : JPG, PNG traités via IA (Surya Layout + Tesseract OCR).
* **Moteur XY-Cut** : Algorithme récursif de coupe verticale/horizontale pour reconstruire l'ordre de lecture des documents multi-colonnes complexes.
* **Exports spécialisés :** Markdown (structuré) et RAG (JSON chunké avec métadonnées).

## 📦 Installation

Installer la bibliothèque et ses dépendances :

	```bash
	pip install -e .

## 🛠 Architecture

Le projet est construit autour de 4 piliers :
1. **Le DOM (Document Object Model) :** Des classes Python (`Document`, `Page`, `Region`, `Block`, `Table`, `Cell`) qui modélisent le document de bout en bout.
2. **Les Interfaces :** `IDocumentLoader` et `IDocumentPlugin` garantissent que tous les modules (Surya, Tesseract, python-docx) communiquent avec le même langage.
3. **Les Plugins :** Chaque étape (chargement, layout, OCR) est un module interchangeable dans `src/plugins/`. *Remplacer Surya par un autre moteur de layout n'impacte pas le reste du code.*
4. **Le Pipeline Runner :** L'orchestrateur qui détecte le type de fichier et exécute le bon chemin (A ou B) automatiquement.

## 📦 Installation

### 1. Prérequis Python
Clonez le dépôt et installez les dépendances Python :
	```bash
	pip install python-docx pytesseract Pillow PyMuPDF surya-ocr

### 2. Dépendances Système
	Tesseract OCR :
		Windows : Téléchargez l'installeur sur UB-Mannheim et ajoutez-le au PATH.
		Linux : sudo apt install tesseract-ocr
	Surya OCR (Optionnel) : Nécessite llama.cpp pour fonctionner. Le runner peut fonctionner avec Tesseract seul si Surya n'est pas configuré.

🏃 Utilisation

	Le runtime s'utilise via le script test_runtime.py (ou votre propre script) qui appelle le PipelineRunner.

	from src.core.pipeline.runner import PipelineRunner

	runner = PipelineRunner()

# Pour un PDF ou une Image -> Export Markdown

	result_md = runner.process("mon_document.pdf", export_mode="markdown")
	print(result_md)

# Pour un Word -> Export RAG

	result_rag = runner.process("mon_document.docx", export_mode="rag")
	print(result_rag)

🏃 Utilisation (CLI)

	python main.py --file mon_document.pdf --export markdown

🗂 Structure du dépôt

	doc-ai-runtime/
	├── src/
	│   ├── core/               # Le cœur (DOM, Interfaces, Runner)
	│   │   ├── dom/            # Modèles de données (Document, Page, Block...)
	│   │   └── pipeline/       # Orchestrateur (runner.py)
	│   ├── plugins/            # Les briques interchangeables
	│   │   ├── loaders/        # ImageLoader, PdfLoader, DocxLoader
	│   │   ├── layout/         # SuryaLayoutPlugin
	│   │   └── ocr/           # TesseractOCRPlugin
	│   └── exporters/         # MarkdownExporter, RagExporter
	├── test_runtime.py         # Script de démonstration
	└── README.md

🗺 Feuille de route (Roadmap)

	 Document Object Model (DOM)
	 Loaders (DOCX, Images, PDF)
	 Layout Analysis (Surya) & OCR (Tesseract)
	 Exporters Markdown et RAG
	 Image Quality Analyzer (pré-traitement des scans)
	 Amélioration du moteur d'ordre de lecture (Reading Order Engine)
