| 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() | |