Modular Document AI Runtime for RAG and Markdown exports.
Project description
📄 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.
- 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 (structuré) et RAG (JSON chunké avec métadonnées).
📦 Installation
1. Prérequis Python
Installer la bibliothèque et ses dépendances :
```bash
pip install -e .
(Dépendances : python-docx, openpyxl, python-pptx, PyMuPDF, Pillow, ollama)
-
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).
🏃 Utilisation
Le runtime s'utilise via une interface en ligne de commande ou en l'important comme une bibliothèque.
CLI
python main.py --file mon_document.pdf --export markdown
Bibliothèque
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)
🛠 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 (A ou B) 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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doc_ai_runtime-0.2.0.tar.gz.
File metadata
- Download URL: doc_ai_runtime-0.2.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00f3eb1bf0c6781cd7d16f093e4ea1c88f75a462de9b12b43a0b90c47447c680
|
|
| MD5 |
cf4af2bb71882d9c023bca05cfb7597b
|
|
| BLAKE2b-256 |
5fbfda2abb5d74213bebb40e906f3bbcd5d6a5e205dfef0f510bb14050cf4420
|
File details
Details for the file doc_ai_runtime-0.2.0-py3-none-any.whl.
File metadata
- Download URL: doc_ai_runtime-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8744d7ade2e04945ad4b2b1f326af804bd36b4d074dbfb5183a331973709547
|
|
| MD5 |
e5597e30471b5a7bf35f52df4a62945f
|
|
| BLAKE2b-256 |
b24360bea0d791187b4000d438f152f22596c0549151d5d7772a124fb56a6bd5
|