alexneakameni commited on
Commit
1863f25
·
verified ·
1 Parent(s): a8b8b1e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -14
app.py CHANGED
@@ -61,12 +61,18 @@ class FirebaseConnector:
61
  cred = credentials.Certificate(firebase_config)
62
  firebase_admin.initialize_app(cred)
63
  self.db = firestore.client()
 
64
 
65
  def add(self, ocr: str, key: str):
66
- doc_ref = self.db.collection("id-card").document(key)
67
  if doc_ref.get().exists:
68
  raise ValueError(f"Document with key {key} already exists.")
69
- return self.db.collection("id-card").add({"ocr": ocr}, document_id=key)
 
 
 
 
 
70
 
71
 
72
  def search_element(words: list[str], target: str, thr: float = 60):
@@ -79,8 +85,11 @@ class VoterCardVerifier:
79
  def __init__(self):
80
  self.db = FirebaseConnector()
81
  self.ocr_engine = EasyOCRReader()
 
 
82
 
83
- def verify_card(self, image: Union[str, Image.Image], card_number, thr: float = 60):
 
84
  # Convertir l'image pour Groq
85
  if isinstance(image, str):
86
  image = Image.open(image)
@@ -88,8 +97,8 @@ class VoterCardVerifier:
88
  # Préparer la requête pour le modèle et l'appeler
89
  ocr_data = self.ocr_engine.chat(image)
90
 
91
- score1 = search_element(ocr_data, "camer", thr)
92
- score2 = search_element(ocr_data, card_number, thr)
93
 
94
  ocr_data = score1 + score2
95
  logger.info(str(ocr_data))
@@ -100,25 +109,23 @@ class VoterCardVerifier:
100
  if is_valid:
101
  # Sauvegarder dans Firebase
102
  self.save_card_number(ocr_data, card_number)
103
- return "Your ID Card have been recorded, thank you !!!"
 
104
  else:
105
- return "Numéro de carte non trouvé sur l'image"
106
- except:
107
- return "ID Card already saved in the database"
108
 
109
  def save_card_number(self, ocr_data, card_number):
110
  return self.db.add(str(ocr_data), str(card_number))
111
 
112
  def get_id_counted(self):
113
- docs = self.db.db.collection(collecttion_name).stream()
114
- count = sum(1 for _ in docs)
115
- return count
116
 
117
 
118
  # Interface Gradio
119
  def create_interface():
120
  verifier = VoterCardVerifier()
121
- # n_cards = verifier.get_id_counted()
122
  description = (
123
  "Card ID Counter is an application designed to count voter card numbers "
124
  "by analyzing uploaded images using OCR technology. It ensures accuracy by "
@@ -146,7 +153,6 @@ def create_interface():
146
 
147
 
148
  if __name__ == "__main__":
149
-
150
  # Créer et lancer l'interface
151
  demo = create_interface()
152
  demo.launch()
 
61
  cred = credentials.Certificate(firebase_config)
62
  firebase_admin.initialize_app(cred)
63
  self.db = firestore.client()
64
+ self.collecttion_name = os.getenv("collection", "id-card")
65
 
66
  def add(self, ocr: str, key: str):
67
+ doc_ref = self.db.collection(self.collecttion_name).document(key)
68
  if doc_ref.get().exists:
69
  raise ValueError(f"Document with key {key} already exists.")
70
+ return self.db.collection(self.collecttion_name).add({"ocr": ocr}, document_id=key)
71
+
72
+ def get_id_counted(self):
73
+ docs = self.db.collection(self.collecttion_name).stream()
74
+ count = sum(1 for _ in docs)
75
+ return count
76
 
77
 
78
  def search_element(words: list[str], target: str, thr: float = 60):
 
85
  def __init__(self):
86
  self.db = FirebaseConnector()
87
  self.ocr_engine = EasyOCRReader()
88
+ self.thr = int(os.getenv("thr", 75))
89
+ self.n_cards = 0
90
 
91
+ def verify_card(self, image: Union[str, Image.Image], card_number,):
92
+ self.n_cards = self.get_id_counted()
93
  # Convertir l'image pour Groq
94
  if isinstance(image, str):
95
  image = Image.open(image)
 
97
  # Préparer la requête pour le modèle et l'appeler
98
  ocr_data = self.ocr_engine.chat(image)
99
 
100
+ score1 = search_element(ocr_data, "camer", self.thr)
101
+ score2 = search_element(ocr_data, card_number, self.thr)
102
 
103
  ocr_data = score1 + score2
104
  logger.info(str(ocr_data))
 
109
  if is_valid:
110
  # Sauvegarder dans Firebase
111
  self.save_card_number(ocr_data, card_number)
112
+ self.n_cards += 1
113
+ return f"Your ID Card have been recorded, thank you !!! Num Card: {self.n_cards}"
114
  else:
115
+ return f"Card number not found, please improve the quality of image passed. Num Card: {self.n_cards}"
116
+ except ValueError as ex:
117
+ return f"ID Card already saved in the database. Num Card: {self.n_cards}"
118
 
119
  def save_card_number(self, ocr_data, card_number):
120
  return self.db.add(str(ocr_data), str(card_number))
121
 
122
  def get_id_counted(self):
123
+ return self.db.get_id_counted()
 
 
124
 
125
 
126
  # Interface Gradio
127
  def create_interface():
128
  verifier = VoterCardVerifier()
 
129
  description = (
130
  "Card ID Counter is an application designed to count voter card numbers "
131
  "by analyzing uploaded images using OCR technology. It ensures accuracy by "
 
153
 
154
 
155
  if __name__ == "__main__":
 
156
  # Créer et lancer l'interface
157
  demo = create_interface()
158
  demo.launch()