import gradio as gr from transformers import TrOCRProcessor, VisionEncoderDecoderModel from PIL import Image import torch # Carregando o modelo da Microsoft processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-printed") model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-printed") device = "cuda" if torch.cuda.is_available() else "cpu" model.to(device) def ocr_trocr(image): if image is None: return "Envie uma imagem válida." # Pré-processa a imagem pixel_values = processor(images=image, return_tensors="pt").pixel_values pixel_values = pixel_values.to(device) # Geração do texto generated_ids = model.generate(pixel_values) generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] return generated_text # Interface Gradio interface = gr.Interface( fn=ocr_trocr, inputs=gr.Image(type="pil", label="Envie uma imagem com texto impresso"), outputs=gr.Textbox(label="Texto detectado"), title="OCR com TrOCR (Microsoft)", description="Reconhecimento de texto impresso usando o modelo TrOCR da Microsoft." ) if __name__ == "__main__": interface.launch()