import gradio as gr import os import json from pdf2image import convert_from_path from PIL import Image from ovis.serve.runner import RunnerArguments, OvisRunner # Chemins des répertoires model_path = '/home/nosmokingclub/public_html/MIKA/Ovis/ovis_model' prompt = "Extraire la facture avec le listing produit avec les références au format JSON" runner_args = RunnerArguments(model_path=model_path) runner = OvisRunner(runner_args) def process_pdf(pdf_file): # Convertir le PDF en images images = convert_from_path(pdf_file.name) # Initialiser une liste pour stocker les résultats de chaque page pdf_results = [] for i, image in enumerate(images): # Effectuer l'inférence avec Ovis sur chaque image result = runner.run([image, prompt]) # Convertir le résultat en JSON try: page_result = json.loads(result) except json.JSONDecodeError: page_result = {"error": f"Impossible de décoder la page {i + 1} en JSON", "raw_result": result} # Ajouter les résultats de la page à la liste pdf_results.append({"page": i + 1, "result": page_result}) # Retourner le résultat JSON complet return json.dumps(pdf_results, ensure_ascii=False, indent=4) # Configurer Gradio Interface demo = gr.Interface( fn=process_pdf, inputs="file", outputs="text", title="Traitement des Factures avec Ovis", description="Téléchargez un PDF de facture pour extraire les produits et les références via Ovis" ) demo.launch()