import streamlit as st import similarity_check as sc import cv2 from PIL import Image import numpy as np import tempfile from streamlit_webrtc import VideoTransformerBase, webrtc_streamer import demo import time import streamlit as st import requests import json import request_json.sbt_request_generator as sbt global data data = {} def main(): # st.title("SBT Web Application") # today's date = get_today_date # global data html_temp = """

SBT Web Application

""" st.markdown(html_temp, unsafe_allow_html=True) st.header("I. Similarity Check") image_file = st.file_uploader("Upload Image", type=['jpg', 'png', 'jpeg'], accept_multiple_files=True) if len(image_file) == 1: # print(image_file[0].name) image1 = Image.open(image_file[0]) st.text("HKID card") st.image(image1) elif len(image_file) == 2: image1 = Image.open(image_file[0]) st.text("HKID card") st.image(image1) image2 = Image.open(image_file[1]) file_name = image_file[1].name st.text("Bank statement") st.image(image2) # if image_file2 is not None: # image2 = Image.open(image_file) # st.text("Bank statement") # st.image(image2) # path1 = 'IMG_4495.jpg' # path2 = 'hangseng_page-0001.jpg' # image1 = save_image(image1) # image2 = save_image(image2) data = {} if st.button("Recognise"): with st.spinner('Wait for it...'): # global data data = sc.get_data(image1, image2, file_name) with open('data1.txt', 'w') as f: f.write(json.dumps(data)) # data.update(sc.get_data(image1, image2, file_name)) print(f'data inside {data}') # sbt.split_data(data) st.success('Done!') score = data["similarity_score"] #print(score) st.text(f'score: {score}') if (score>85): st.text(f'matched') else: st.text(f'unmatched') st.header("IIa. HKID Data Extraction") st.text(f'Name: {data["name_on_id"]}') # name is without space st.text(f'HKID: {data["hkid"]} and validity: {data["validity"]}') st.text(f'Date of issue: {data["issue_date"]}') st.header("IIb. Bank Statement Data Extraction") # st.write('------------From bank statement------------') st.text(f'Name: {data["name_on_bs"]}') st.text(f'Address: {data["address"]}') st.text(f'Bank: {data["bank"]}') st.text(f'Date: {data["date"]}') st.text(f'Asset: {data["asset"]} hkd') st.text(f'Liabilities: {data["liabilities"]} hkd') # result_img= detect_faces(our_image) # st.image(result_img) # print(f'data outside 1 {data}') st.header("II. Facial Recognition") run = st.checkbox('Run') # webrtc_streamer(key="example") # 1. Web Rtc # webrtc_streamer(key="jhv", video_frame_callback=video_frame_callback) # # init the camera face_locations = [] # face_encodings = [] face_names = [] process_this_frame = True score = [] faces = 0 FRAME_WINDOW = st.image([]) camera = cv2.VideoCapture(0) while run: # Capture frame-by-frame # Grab a single frame of video ret, frame = camera.read() result, process_this_frame, face_locations, faces, face_names, score = demo.process_frame(frame, process_this_frame, face_locations, faces, face_names, score) # Display the resulting image FRAME_WINDOW.image(result) print(score) if len(score) > 20: avg_score = sum(score) / len(score) st.write(f'{avg_score}') with open('data1.txt', 'w') as f: data_raw = f.read() data = json.loads(data_raw) data['avg_score'] = str(avg_score) f.write(json.dumps(data)) # update_text(f'{demo.convert_distance_to_percentage(score, 0.45)}') else: st.write('Stopped') # print(f'the data is {data}') # st.header("IIIa. HKID Data Extraction") # st.text(f'Name: {data["name_on_id"]}') # name is without space # st.text(f'HKID: {data["hkid"]} and validity: {data["validity"]}') # st.text(f'Date of issue: {data["issue_date"]}') # st.header("IIIb. Bank Statement Data Extraction") # # st.write('------------From bank statement------------') # st.text(f'Name: {data["name_on_bs"]}') # st.text(f'Address: {data["address"]}') # st.text(f'Bank: {data["bank"]}') # st.text(f'Date: {data["date"]}') # st.text(f'Asset: {data["asset"]} hkd') # st.text(f'Liabilities: {data["liabilities"]} hkd') # print(f'data outside 2 {data}') if st.button("Confirm"): # print(f'data outside 3 {data}') with st.spinner('Sending data...'): sbt.split_data(data) st.success('Done!') if __name__ == '__main__': main() # def save_image(image): # try: # temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.jpg') # Image.save(temp_file.name) # return temp_file.name # except IOError: # print("Unable to save image to temporary file") # return None # json_file = 'request json\request_legalDocument.json' # file = open(json_file, 'r') # data = json.load(file) # file.close() # # Update data # data.update(new_data) # file = open(json_file, 'w') # for item in data['request']['body']['formdata']: # if item["key"] == "requestId": # item["value"] = "" # elif item["key"] == "userId": # item["value"] = generate_token_id(2048) # elif item["key"] == "endpoint": # item["value"] = "" # elif item["key"] == "apiType": # item["value"] = "" # elif item["key"] == "docType": # item["value"] = "HKID" # elif item["key"] == "nameDoc": # item["value"] = new_data["name_on_id"] # elif item["key"] == "docID": # item["value"] = new_data["name_on_id"] # elif item["key"] == "docValidity": # item["value"] = new_data["validity"] # elif item["key"] == "dateOfIssue": # item["value"] = new_data["date_issue"] # elif item["key"] == "matchingScore": # item["value"] = new_data["similarity_score"] # json.dump(data, file) # file.close()