pierrelissope commited on
Commit
5e0990b
·
1 Parent(s): 94f7100

feat: c'est carré on a fini

Browse files
front/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
  <title>Vite + React + TS</title>
8
- <script type="module" crossorigin src="/assets/index-Cqst1UVv.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-DBF5kfs0.css">
10
  </head>
11
  <body>
12
  <div id="root"></div>
 
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
  <title>Vite + React + TS</title>
8
+ <script type="module" crossorigin src="/assets/index-D1zI8xqC.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-FOeRIyQ0.css">
10
  </head>
11
  <body>
12
  <div id="root"></div>
front/src/VerificationScene.tsx CHANGED
@@ -5,6 +5,8 @@ import VideoWrapper from "@/components/VideoWrapper.tsx";
5
  import ResultContainer from "@/components/ResultContainer.tsx";
6
  import DarkVideoWrapper from "@/components/DarkVideoWrapper.tsx";
7
 
 
 
8
  enum StepType {
9
  takeId,
10
  verifyId,
@@ -39,7 +41,7 @@ export default function VerificationScene() {
39
  const sendImageToServer = async (
40
  idCard: string,
41
  profileImage: string,
42
- setLoading: (n: boolean) => void,
43
  ) => {
44
  try {
45
  const response = await fetch("http://0.0.0.0:7860/uploadids", {
@@ -56,10 +58,10 @@ export default function VerificationScene() {
56
 
57
  const data = await response.json();
58
  console.log("Image envoyée avec succès:", data);
59
- setLoading(false);
60
  } catch (error) {
61
  console.error("Erreur:", error);
62
- setLoading(false);
63
  }
64
  };
65
 
 
5
  import ResultContainer from "@/components/ResultContainer.tsx";
6
  import DarkVideoWrapper from "@/components/DarkVideoWrapper.tsx";
7
 
8
+ export type fetchResult = "Valid" | "Not Valid" | "Fetching" | "Error";
9
+
10
  enum StepType {
11
  takeId,
12
  verifyId,
 
41
  const sendImageToServer = async (
42
  idCard: string,
43
  profileImage: string,
44
+ setLoading: (n: fetchResult) => void,
45
  ) => {
46
  try {
47
  const response = await fetch("http://0.0.0.0:7860/uploadids", {
 
58
 
59
  const data = await response.json();
60
  console.log("Image envoyée avec succès:", data);
61
+ setLoading(data.message === "Valid" ? "Valid" : "Not Valid");
62
  } catch (error) {
63
  console.error("Erreur:", error);
64
+ setLoading("Error");
65
  }
66
  };
67
 
front/src/components/ResultContainer.tsx CHANGED
@@ -1,4 +1,5 @@
1
  import { useEffect, useState } from "react";
 
2
 
3
  export default function ResultContainer({
4
  sendImageToServer,
@@ -8,22 +9,26 @@ export default function ResultContainer({
8
  sendImageToServer: (
9
  pic: string,
10
  pic2: string,
11
- setLoading: (n: boolean) => void,
12
  ) => void;
13
  idCardPicture: string;
14
  profileImage: string;
15
  }) {
16
- const [loading, setLoading] = useState<boolean>(true);
17
 
18
  useEffect(() => {
19
  sendImageToServer(idCardPicture ?? "", profileImage ?? "", setLoading);
20
  }, []);
21
  return (
22
  <div className="flex w-full h-full items-center justify-center">
23
- {loading ? (
24
  <h1 className="text-2xl font-bold text-orange-600">Fetching....</h1>
 
 
 
 
25
  ) : (
26
- <h1 className="text-2xl font-bold text-green-800">Process Completed</h1>
27
  )}
28
  </div>
29
  );
 
1
  import { useEffect, useState } from "react";
2
+ import { fetchResult } from "@/VerificationScene.tsx";
3
 
4
  export default function ResultContainer({
5
  sendImageToServer,
 
9
  sendImageToServer: (
10
  pic: string,
11
  pic2: string,
12
+ setLoading: (n: fetchResult) => void,
13
  ) => void;
14
  idCardPicture: string;
15
  profileImage: string;
16
  }) {
17
+ const [loading, setLoading] = useState<fetchResult>("Fetching");
18
 
19
  useEffect(() => {
20
  sendImageToServer(idCardPicture ?? "", profileImage ?? "", setLoading);
21
  }, []);
22
  return (
23
  <div className="flex w-full h-full items-center justify-center">
24
+ {loading === "Fetching" ? (
25
  <h1 className="text-2xl font-bold text-orange-600">Fetching....</h1>
26
+ ) : loading === "Valid" ? (
27
+ <h1 className="text-2xl font-bold text-green-800">Valid</h1>
28
+ ) : loading === "Not Valid" ? (
29
+ <h1 className="text-2xl font-bold text-green-800">Not Valid</h1>
30
  ) : (
31
+ <h1 className="text-2xl text-red-700">Error</h1>
32
  )}
33
  </div>
34
  );
main.py CHANGED
@@ -7,6 +7,7 @@ from pydantic import BaseModel
7
  import time
8
  from facenet_pytorch import InceptionResnetV1, MTCNN
9
  import warnings
 
10
  import face_compare
11
 
12
  warnings.filterwarnings('ignore', category=FutureWarning, module='facenet_pytorch')
@@ -53,15 +54,26 @@ async def upload_pdf(data: ImageData):
53
 
54
  @router.post("/uploadids")
55
  async def upload_ids(data: ImagesData):
 
56
  header, encoded1 = data.idCard.split(',', 1)
57
  binary_data1 = base64.b64decode(encoded1)
58
  header, encoded2 = data.profileImage.split(',', 1)
59
  binary_data2 = base64.b64decode(encoded2)
60
- output = face_compare.compare_faces(binary_data1, binary_data2)
 
 
 
 
 
 
 
 
 
 
61
  if output > 0.6:
62
- return {"message": "Les images correspondent"}
63
  else:
64
- return {"message": "Les images ne correspondent pas"}
65
 
66
  app.include_router(router)
67
 
 
7
  import time
8
  from facenet_pytorch import InceptionResnetV1, MTCNN
9
  import warnings
10
+ import os
11
  import face_compare
12
 
13
  warnings.filterwarnings('ignore', category=FutureWarning, module='facenet_pytorch')
 
54
 
55
  @router.post("/uploadids")
56
  async def upload_ids(data: ImagesData):
57
+
58
  header, encoded1 = data.idCard.split(',', 1)
59
  binary_data1 = base64.b64decode(encoded1)
60
  header, encoded2 = data.profileImage.split(',', 1)
61
  binary_data2 = base64.b64decode(encoded2)
62
+
63
+ with open("id_card_image.png", "wb") as id_card_file:
64
+ id_card_file.write(binary_data1) # Save as PNG (or use correct extension based on header)
65
+
66
+ with open("profile_image.png", "wb") as profile_file:
67
+ profile_file.write(binary_data2) # Save as PNG (or use correct extension based on header)
68
+
69
+ id_card_abs_path = os.path.abspath("id_card_image.png")
70
+ profile_image_abs_path = os.path.abspath("profile_image.png")
71
+
72
+ output = face_compare.compare_faces(id_card_abs_path, profile_image_abs_path)
73
  if output > 0.6:
74
+ return {"message": "Valid"}
75
  else:
76
+ return {"message": "Not Valid"}
77
 
78
  app.include_router(router)
79