import gradio as gr from transformers import AutoModel, AutoTokenizer from PIL import Image import torch # Load model and tokenizer model_name = "rednote-hilab/dots.ocr" print("Loading dots.ocr model...") tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModel.from_pretrained( model_name, trust_remote_code=True, torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32, device_map="auto" ) print("Model loaded!") def process_image(image): """Process image with dots.ocr""" if image is None: return "Please upload an image" try: # Run OCR result = model.generate(image, tokenizer) return result except Exception as e: return f"Error: {str(e)}" # Create Gradio interface iface = gr.Interface( fn=process_image, inputs=gr.Image(type="pil", label="Upload Image"), outputs=gr.Textbox(label="OCR Result", lines=10), title="dots.ocr - Multilingual OCR", description="Upload an image to extract text using dots.ocr. Supports 100+ languages, tables, formulas, and complex layouts.", examples=[ ["examples/example1.jpg"], ["examples/example2.png"] ], theme="soft" ) if __name__ == "__main__": iface.launch()