Metadata-Version: 2.4
Name: doc-ai-runtime
Version: 0.5.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: PyMuPDF
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 VLM :**
	* **Bureautique (Path B)** : DOCX, XLSX (Excel), PPTX (PowerPoint) extraits nativement.
	* **PDF Hybride** : Extrait le calque texte natif, et bascule automatiquement sur la vision IA (Ollama) pour les pages scannées.
	* **Forçage OCR (`force_ocr`)** : Possibilité de convertir *toutes* les pages d'un PDF en images pour forcer l'OCR par l'IA, ignorant le calque texte natif (idéal pour les PDF au texte corrompu).
	* **Images (Path A)** : JPG, PNG traités via Qwen2.5-VL (VLM) qui comprend le layout et génère du Markdown directement.
* **Exports spécialisés :** 
	* `markdown` : Renvoie tout le document en une seule chaîne de caractères.
	* `markdown_by_page` : Renvoie un dictionnaire `{page_num: "markdown"}` pour un traitement page par page (parfait pour le RAG).
	* `rag` : JSON chunké avec métadonnées.

## 📦 Installation

### 1. Prérequis Python

	Installer la bibliothèque et ses dépendances :
	```bash
	pip install doc-ai-runtime
	(Dépendances : python-docx, openpyxl, python-pptx, PyMuPDF, Pillow, ollama)

2. Dépendances Système : Ollama

Ce runtime utilise Ollama pour l'OCR et la vision.

	Installez Ollama.
	Téléchargez le modèle de vision Qwen :
	ollama pull qwen2.5vl:7b
	Assurez-vous que le serveur Ollama tourne en arrière-plan (ollama serve).
1
🏃 Utilisation

	Interface en ligne de commande (CLI)

	# Extraction standard (Markdown)
	python main.py --file mon_document.pdf --export markdown

	# Forcer l'OCR sur toutes les pages du PDF
	python main.py --file mon_document.pdf --export markdown --force-ocr

	# Récupérer le contenu page par page (Sauvegardé en JSON)
	python main.py --file mon_document.pdf --export markdown_by_page

	En tant que Bibliothèque Python

	from src.core.pipeline.runner import PipelineRunner

	runner = PipelineRunner()

	# 1. PDF standard -> Export Markdown classique
	md_text = runner.process("mon_document.pdf", export_mode="markdown")

	# 2. PDF avec calque corrompu -> Forcer l'OCR VLM
	md_text_forced = runner.process("mon_document.pdf", force_ocr=True)

	# 3. Récupérer un dictionnaire page par page
	pages_dict = runner.process("mon_document.pdf", export_mode="markdown_by_page")
	print(pages_dict[1]) # Affiche le markdown de la page 1

🛠 Architecture

Le projet est construit autour de 4 piliers :

	Le DOM (Document Object Model) : Des classes Python (Document, Page, Region, Block, Table, Cell) qui modélisent le document.
	Les Interfaces : IDocumentLoader et IDocumentPlugin garantissent que tous les modules communiquent avec le même langage.
	Les Plugins : Chaque étape (chargement, OCR) est un module interchangeable dans src/plugins/.
	Le Pipeline Runner : L'orchestrateur qui détecte le type de fichier et exécute le bon chemin automatiquement.

🗂 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, XlsxLoader, PptxLoader
	│   │   └── ocr/           # QwenOCRPlugin (Ollama VLM)
	│   └── exporters/         # MarkdownExporter, RagExporter
	├── main.py                 # Interface CLI
	└── README.md
