import os import gradio as gr from transformers import TrOCRProcessor, TrOCRForConditionalGeneration from PIL import Image import torch # đĄïž Configuration du proxy si nĂ©cessaire os.environ["HTTP_PROXY"] = "http://meditelproxy.meditel.int:80" os.environ["HTTPS_PROXY"] = "http://meditelproxy.meditel.int:80" # đ Chargement du modĂšle et du processor model_name = "microsoft/trocr-base-handwritten" model = TrOCRForConditionalGeneration.from_pretrained(model_name) processor = TrOCRProcessor.from_pretrained(model_name) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) model.eval() # đ§ Fonction OCR def ocr_from_image(image_file, ocr_type): if image_file is None: return "Veuillez importer une image." # PrĂ©traitement de l'image image = Image.open(image_file.name).convert("RGB") pixel_values = processor(images=image, return_tensors="pt").pixel_values.to(device) # GĂ©nĂ©ration de texte with torch.no_grad(): generated_ids = model.generate(pixel_values) # DĂ©codage du texte gĂ©nĂ©rĂ© generated_text = processor.tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] return generated_text # đ Types dâOCR (juste pour lâinterface ici) ocr_types = ["ocr", "format"] # đš Interface Gradio iface = gr.Interface( fn=ocr_from_image, inputs=[ gr.File(label="Importer une image", file_types=[".jpg", ".jpeg", ".png"]), gr.Radio(ocr_types, label="Type dâOCR", value="ocr") ], outputs="text", title="đ§ OCR manuscrit avec TrOCR", description="Importez une image manuscrite pour extraire le texte avec le modĂšle Microsoft TrOCR." ) # đ Lancement if __name__ == "__main__": iface.launch()