|
import gradio as gr |
|
from transformers import AutoProcessor, LayoutLMForSequenceClassification |
|
from PIL import Image |
|
import torch |
|
|
|
|
|
model_name = "impira/layoutlm-document-classifier" |
|
processor = AutoProcessor.from_pretrained(model_name) |
|
model = LayoutLMForSequenceClassification.from_pretrained(model_name) |
|
|
|
def classify_document(image): |
|
|
|
inputs = processor(images=image, return_tensors="pt") |
|
|
|
|
|
with torch.no_grad(): |
|
logits = model(**inputs).logits |
|
|
|
|
|
probabilities = torch.nn.functional.softmax(logits, dim=-1) |
|
predicted_class = torch.argmax(probabilities, dim=-1).item() |
|
|
|
|
|
return f"Classe prédite : {model.config.id2label[predicted_class]}" |
|
|
|
|
|
interface = gr.Interface( |
|
fn=classify_document, |
|
inputs=gr.Image(type="pil", label="Téléchargez votre document"), |
|
outputs="text", |
|
title="Classification de Documents avec LayoutLM", |
|
description="Ce modèle classifie les documents en fonction de leur contenu et de leur mise en page." |
|
) |
|
|
|
|
|
interface.launch() |