Spaces:
Sleeping
Sleeping
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 | |
import pathlib | |
import os | |
import check_hkid_validity as chv | |
import search_engine as se | |
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) | |
if 'hkid_image_validity' not in st.session_state: | |
st.session_state.hkid_image_validity = False | |
if 'data' not in st.session_state: | |
st.session_state['data'] = {} | |
st.header("I. Similarity Check") | |
image_file = st.file_uploader("Upload Image", type=['jpg', 'png', 'jpeg', 'pdf'], accept_multiple_files=True) | |
if len(image_file) == 1: | |
image1 = Image.open(image_file[0]) | |
st.text("HKID card") | |
st.image(image1) | |
image1.save('image/hkid.jpg', 'JPEG') | |
if chv.check_hkid('image/hkid.jpg'): | |
st.text("Valid HKID card.") | |
st.session_state.hkid_image_validity = True | |
else: | |
st.text("Invalid HKID card. Please upload again!") | |
st.session_state.hkid_image_validity = False | |
elif len(image_file) == 2: | |
image1 = Image.open(image_file[0]) | |
st.text("HKID card") | |
st.image(image1) | |
image2 = Image.open(image_file[1]) | |
# image2 = image_file[1] | |
# image2.save('image/hkid.jpg', 'JPEG') | |
# file_name = image_file[1].name | |
st.text("Bank statement") | |
st.image(image2) | |
print(f"the id is: {st.session_state.hkid_image_validity}") | |
# 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) | |
# se.get_data_link(data['chi_name_id'], data["name_on_id"], data["address"]) | |
if 'data' in st.session_state: | |
st.session_state['data'] = data | |
st.success('Done!') | |
score = int(st.session_state['data']['similarity_score']) | |
st.text(f'score: {score}') | |
if (score>85): | |
st.text(f'matched') | |
else: | |
st.text(f'unmatched') | |
data = st.session_state['data'] | |
st.header("IIa. HKID Data Extraction") | |
st.text(f'English Name: {data["name_on_id"]}') # name is without space | |
st.text(f'Chinese Name: {data["chi_name_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.text(f'Name: {data["nameStatement"]}') | |
st.text(f'Address: {data["address"]}') | |
st.text(f'Bank: {data["bank"]}') | |
st.text(f'Date: {data["statementDate"]}') | |
st.text(f'Asset: {data["totalAsset"]} hkd') | |
st.text(f'Liabilities: {data["totalLiability"]} hkd') | |
if 'data' in st.session_state: | |
tempout = st.session_state['data'] | |
print(f'hello: {tempout}') | |
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(avg_score) | |
# st.write(f'{demo.convert_distance_to_percentage(avg_score, 0.45)}') | |
camera.release() | |
run = not run | |
st.session_state['data']['avg_score'] = str(avg_score) | |
else: | |
st.write('Stopped') | |
if st.button("Confirm"): | |
st.experimental_set_query_params( | |
verified=True, | |
) | |
with st.spinner('Sending data...'): | |
print(st.session_state['data']) | |
sbt.split_data(st.session_state['data']) | |
st.success('Done!') | |
if __name__ == '__main__': | |
main() | |