import gradio as gr import torch from PIL import Image import numpy as np from transformers import AutoModel, AutoConfig from model import Pix2TextModel, Pix2TextConfig import os # Model yükleme fonksiyonu def load_model(): try: # Hugging Face'den model yükle config = AutoConfig.from_pretrained("./", trust_remote_code=True) model = AutoModel.from_pretrained("./", trust_remote_code=True) return model except Exception as e: print(f"Model yükleme hatası: {e}") # Yerel model oluştur config = Pix2TextConfig() model = Pix2TextModel(config) return model model = load_model() def predict_text(image): """Görüntüden metin çıkarma fonksiyonu""" try: if image is None: return "Lütfen bir görüntü yükleyin." # PIL Image'a çevir if isinstance(image, np.ndarray): image = Image.fromarray(image) # Model ile tahmin yap result = model.predict(image) return f"Çıkarılan Metin: {result}" except Exception as e: return f"Hata oluştu: {str(e)}" def create_demo(): """Gradio demo arayüzü oluştur""" with gr.Blocks(title="Pix2Text - Görüntüden Metin Çıkarma") as demo: gr.Markdown("# 🔤 Pix2Text Model Test Arayüzü") gr.Markdown("Görüntü yükleyerek metin çıkarma işlemini test edebilirsiniz.") with gr.Row(): with gr.Column(): image_input = gr.Image( label="Görüntü Yükleyin", type="pil", height=400 ) predict_btn = gr.Button("Metni Çıkar", variant="primary") with gr.Column(): output_text = gr.Textbox( label="Çıkarılan Metin", lines=10, placeholder="Sonuç burada görünecek..." ) # Event handlers predict_btn.click( fn=predict_text, inputs=[image_input], outputs=[output_text] ) # Örnek görüntüler gr.Examples( examples=[ ["example1.jpg"], ["example2.png"] ], inputs=[image_input], outputs=[output_text], fn=predict_text, cache_examples=False ) gr.Markdown("### Model Bilgileri") gr.Markdown(""" - **Model Tipi**: Pix2Text (Görüntüden Metin Çıkarma) - **Framework**: PyTorch + Transformers - **Desteklenen Formatlar**: JPG, PNG, JPEG - **Maksimum Görüntü Boyutu**: 2048x2048 piksel """) return demo if __name__ == "__main__": demo = create_demo() demo.launch( server_name="0.0.0.0", server_port=7860, share=True )