File size: 1,446 Bytes
23ce00f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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()