| import gradio as gr |
| from transformers import AutoModel, AutoTokenizer |
| from PIL import Image |
| import torch |
|
|
| |
| 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: |
| |
| result = model.generate(image, tokenizer) |
| return result |
| except Exception as e: |
| return f"Error: {str(e)}" |
|
|
| |
| 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() |