Skip to main content

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.
    • 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)
  1. 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

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

doc_ai_runtime-0.3.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

doc_ai_runtime-0.3.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file doc_ai_runtime-0.3.0.tar.gz.

File metadata

  • Download URL: doc_ai_runtime-0.3.0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for doc_ai_runtime-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a229fc53046fc36d4fc39fe948862e3e2d80b02793b19bf0d0ebe8882767bc78
MD5 c8007a6e8686608af63c748f7d72a44c
BLAKE2b-256 41bad78efdfcf67ba17db2fb9b03040906a653b84e4791bf61add966288cb7b1

See more details on using hashes here.

File details

Details for the file doc_ai_runtime-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: doc_ai_runtime-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for doc_ai_runtime-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07e3be711068914e301ebea944ae4381bd56c031a7b6169a18c4d0285608b419
MD5 8469daeb547f13c462a9c40c8198f1b4
BLAKE2b-256 802863f9a8160d4f7f8da4ab9f103d637b726178661c3fcabd9d2203123ebdfe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page