|
import gradio as gr |
|
import requests |
|
from io import BytesIO |
|
import os |
|
|
|
def call_predict_api(image, private_key=None): |
|
if private_key != os.environ["password"]: |
|
return "Invalid API key. Please check your key and try again." |
|
|
|
src_buffer = BytesIO() |
|
image.save(src_buffer, format='PNG') |
|
src_buffer.seek(0) |
|
|
|
|
|
files = { |
|
"image": ("src_image.png", src_buffer, "image/png"), |
|
} |
|
headers = {"X-API-Key": os.environ["api_key"]} |
|
response = requests.get(os.environ["endpoint"], |
|
files=files, |
|
headers=headers, |
|
stream=True |
|
) |
|
accumulated = "" |
|
for line in response: |
|
if line: |
|
accumulated += line.decode("utf-8") |
|
yield accumulated |
|
|
|
return accumulated |
|
|
|
if __name__ == "__main__": |
|
iface = gr.Interface( |
|
fn=call_predict_api, |
|
inputs=[ |
|
gr.Image( |
|
sources=["upload"], |
|
type="pil", |
|
label="Garment Image", |
|
width=512, |
|
height=512, |
|
), |
|
gr.Textbox( |
|
label="private-key", |
|
placeholder="Enter your private key", |
|
type="password", |
|
lines=1, |
|
), |
|
], |
|
outputs=[ |
|
gr.Markdown(label="Result") |
|
], |
|
title="BBC-OCR", |
|
description="A simple OCR tool to extract text from images.", |
|
) |
|
iface.launch(show_api=False) |