import base64 import io import cv2 import requests import json import gradio as gr import os from PIL import Image # Accessing a specific environment variable api_key = os.environ.get('PXiVision') # Checking if the environment variable exists if not api_key: print("PXiVision environment variable is not set.") exit() # Define a function to call the API and get the results def get_results(image): threshold = 0.5 # Convert the NumPy array to PIL image image = Image.fromarray(image) # Convert the image to base64 string with io.BytesIO() as output: image.save(output, format="JPEG") base64str = base64.b64encode(output.getvalue()).decode("utf-8") # Prepare the payload payload = json.dumps({"base64str": base64str, "threshold": threshold}) # Send the request to the API response = requests.put(api_key, data=payload) # Parse the JSON response data = response.json() # data = json.loads(data) # Access the values firstName = data['firstName'] secondName = data['secondName'] address1 = data['address1'] address2 = data['address2'] nationalIdNumber = data['nationalIdNumber'] timeOfResponse = data['timeOfResponse'] requestInfo = data['requestInfo'] return [firstName, secondName, address1, address2, nationalIdNumber, timeOfResponse, requestInfo] # Define the input component for Gradio image_input = gr.inputs.Image() # Adjust the shape according to your requirements # Define the output components for Gradio output_components = [] for label in ["First Name", "Second Name", "Address 1", "Address 2", "National ID Number", "Time of Response", "Request Info"]: output_components.append(gr.outputs.Textbox(label=label)) # Launch the Gradio interface gr.Interface(fn=get_results,examples=["khaled-ID.jpg"], inputs=image_input, outputs=output_components).launch(share=False)