Mitul Mohammad Abdullah Al Mukit
second commit
d357ee3
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 = """
<body style="background-color:red;">
<div style="background-color:teal ;padding:10px">
<h2 style="color:white;text-align:center;">SBT Web Application</h2>
</div>
</body>
"""
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()