card_id_counter / app.py
alexneakameni's picture
Update app.py
a60e50a verified
raw
history blame
2.55 kB
import gradio as gr
from PIL import Image
import sqlite3
from ocr_engine import ocr_model
def initialize_database():
db_connection = sqlite3.connect("voter_cards.db")
cursor = db_connection.cursor()
cursor.execute(
"""
CREATE TABLE IF NOT EXISTS voter_cards (
id INTEGER PRIMARY KEY AUTOINCREMENT,
card_number TEXT UNIQUE
)
"""
)
db_connection.commit()
db_connection.close()
class VoterCardVerifier:
def __init__(self):
initialize_database()
def verify_card(self, image, card_number):
# Convertir l'image pour Groq
if isinstance(image, str):
image = Image.open(image)
# Préparer la requête pour le modèle et l'appeler
message = ocr_model.chat(image).strip().lower()
# valider les entrées
is_valid = ("camer" in message) and (card_number in message)
if is_valid:
# Sauvegarder dans Firebase
return self.save_card_number(card_number)
else:
return "Numéro de carte non trouvé sur l'image"
def save_card_number(self, card_number):
db_connection = sqlite3.connect("voter_cards.db")
cursor = db_connection.cursor()
# Ajouter le numéro à Firestore
# Sauvegarder dans la base de données
try:
cursor.execute(
"INSERT INTO voter_cards (card_number) VALUES (?)", (card_number,)
)
db_connection.commit()
return f"Numéro vérifié et sauvegardé : {card_number}"
except sqlite3.IntegrityError:
return f"Le numéro {card_number} existe déjà dans la base."
finally:
db_connection.close()
# Interface Gradio
def create_interface():
verifier = VoterCardVerifier()
def process(image, card_number):
if not card_number.strip():
return "Veuillez entrer un numéro de carte"
return verifier.verify_card(image, card_number)
interface = gr.Interface(
fn=process,
inputs=[
gr.Image(type="pil", label="Image de la carte d'électeur"),
gr.Textbox(label="Numéro de carte"),
],
outputs=gr.Textbox(label="Résultat"),
title="Vérification de Carte d'Électeur",
description="Uploadez une image de votre carte d'électeur et entrez son numéro pour vérification",
)
return interface
if __name__ == "__main__":
# Créer et lancer l'interface
demo = create_interface()
demo.launch()