Spaces:
Running
Running
| import gradio as gr | |
| from PIL import Image | |
| import torch | |
| from transformers import AutoProcessor, AutoModel | |
| # Load model and processor once on startup | |
| model_name = "Graf-J/captcha-conv-transformer-finetuned" | |
| processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True) | |
| model = AutoModel.from_pretrained(model_name, trust_remote_code=True) | |
| model.eval() | |
| def predict_captcha(image): | |
| if image is None: | |
| return "No image uploaded" | |
| # Convert to PIL Image | |
| img = Image.fromarray(image).convert("RGB") | |
| inputs = processor(img) | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| logits = outputs.logits | |
| decoded = processor.batch_decode(logits) | |
| return decoded[0] if decoded else "Failed to decode" | |
| # Create Gradio interface | |
| demo = gr.Interface( | |
| fn=predict_captcha, | |
| inputs=gr.Image(type="numpy", label="Upload CAPTCHA"), | |
| outputs=gr.Textbox(label="Decoded CAPTCHA"), | |
| title="CAPTCHA Solver API", | |
| description="Upload a CAPTCHA image to solve it using Graf-J/captcha-conv-transformer-finetuned." | |
| ) | |
| demo.launch() | |