Spaces:
Sleeping
Sleeping
Upload game_engine.py
Browse files- game_engine.py +25 -25
game_engine.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
# ==========================================
|
| 2 |
-
# game_engine.py - Calcul OCR v3.0 CLEAN (Modifié)
|
| 3 |
# ==========================================
|
| 4 |
|
| 5 |
"""
|
|
@@ -31,7 +31,7 @@ from utils import (
|
|
| 31 |
cleanup_memory,
|
| 32 |
decode_image_from_dataset,
|
| 33 |
validate_ocr_result,
|
| 34 |
-
analyze_calculation_complexity
|
| 35 |
)
|
| 36 |
|
| 37 |
# Auto-détection propre : GPU OU CPU uniquement
|
|
@@ -93,14 +93,14 @@ except Exception as e:
|
|
| 93 |
print(f"⚠️ Impossible de récupérer les infos OCR: {e}")
|
| 94 |
ocr_info = {"model_name": "Error", "device": "Unknown"}
|
| 95 |
|
| 96 |
-
# Imports dataset avec gestion d'erreur
|
| 97 |
try:
|
| 98 |
-
from datasets import Dataset, load_dataset
|
| 99 |
-
DATASET_AVAILABLE = True
|
| 100 |
-
print("✅ Modules dataset disponibles")
|
| 101 |
except ImportError as e:
|
| 102 |
-
DATASET_AVAILABLE = False
|
| 103 |
-
print(f"⚠️ Modules dataset non disponibles: {e}")
|
| 104 |
|
| 105 |
# Nom du dataset cohérent avec le space
|
| 106 |
DATASET_NAME = "hoololi/calcul_ocr_dataset"
|
|
@@ -737,21 +737,21 @@ def export_to_clean_dataset(session_data: list[dict], dataset_name: str = None)
|
|
| 737 |
sample_entry = clean_entries[0]
|
| 738 |
print(f"🔍 Structure première entrée: {list(sample_entry.keys())}")
|
| 739 |
|
| 740 |
-
# Charger dataset existant et combiner (IMPORTANT!)
|
| 741 |
try:
|
| 742 |
-
existing_dataset = load_dataset(dataset_name, split="train")
|
| 743 |
-
existing_data = existing_dataset.to_list()
|
| 744 |
-
print(f"📊 {len(existing_data)} entrées existantes trouvées")
|
| 745 |
|
| 746 |
-
# Combiner ancien + nouveau
|
| 747 |
-
combined_data = existing_data + clean_entries
|
| 748 |
-
clean_dataset = Dataset.from_list(combined_data)
|
| 749 |
-
print(f"📊 Dataset combiné: {len(existing_data)} existantes + {len(clean_entries)} nouvelles = {len(combined_data)} total")
|
| 750 |
|
| 751 |
except Exception as e:
|
| 752 |
print(f"📊 Dataset non trouvé, création nouveau: {e}")
|
| 753 |
# Si le dataset n'existe pas, créer depuis les nouvelles entrées
|
| 754 |
-
clean_dataset = Dataset.from_list(clean_entries)
|
| 755 |
print(f"📊 Nouveau dataset créé avec {len(clean_entries)} entrées")
|
| 756 |
|
| 757 |
print(f"✅ Dataset créé - Features:")
|
|
@@ -766,14 +766,14 @@ def export_to_clean_dataset(session_data: list[dict], dataset_name: str = None)
|
|
| 766 |
|
| 767 |
operations_summary = ", ".join([f"{op}: {count}" for op, count in operations_count.items()])
|
| 768 |
|
| 769 |
-
# Push vers HuggingFace
|
| 770 |
-
print(f"📤 Push vers {dataset_name}...")
|
| 771 |
-
clean_dataset.push_to_hub(
|
| 772 |
-
dataset_name,
|
| 773 |
-
private=False,
|
| 774 |
-
token=hf_token,
|
| 775 |
-
commit_message=f"Add {len(clean_entries)} handwriting samples for math OCR ({operations_summary})"
|
| 776 |
-
)
|
| 777 |
|
| 778 |
cleanup_memory()
|
| 779 |
|
|
|
|
| 1 |
# ==========================================
|
| 2 |
+
# game_engine.py - Calcul OCR v3.0 CLEAN (Modifié - sans marqueurs)
|
| 3 |
# ==========================================
|
| 4 |
|
| 5 |
"""
|
|
|
|
| 31 |
cleanup_memory,
|
| 32 |
decode_image_from_dataset,
|
| 33 |
validate_ocr_result,
|
| 34 |
+
analyze_calculation_complexity
|
| 35 |
)
|
| 36 |
|
| 37 |
# Auto-détection propre : GPU OU CPU uniquement
|
|
|
|
| 93 |
print(f"⚠️ Impossible de récupérer les infos OCR: {e}")
|
| 94 |
ocr_info = {"model_name": "Error", "device": "Unknown"}
|
| 95 |
|
| 96 |
+
# Imports dataset avec gestion d'erreur
|
| 97 |
try:
|
| 98 |
+
from datasets import Dataset, load_dataset
|
| 99 |
+
DATASET_AVAILABLE = True
|
| 100 |
+
print("✅ Modules dataset disponibles")
|
| 101 |
except ImportError as e:
|
| 102 |
+
DATASET_AVAILABLE = False
|
| 103 |
+
print(f"⚠️ Modules dataset non disponibles: {e}")
|
| 104 |
|
| 105 |
# Nom du dataset cohérent avec le space
|
| 106 |
DATASET_NAME = "hoololi/calcul_ocr_dataset"
|
|
|
|
| 737 |
sample_entry = clean_entries[0]
|
| 738 |
print(f"🔍 Structure première entrée: {list(sample_entry.keys())}")
|
| 739 |
|
| 740 |
+
# Charger dataset existant et combiner (IMPORTANT!)
|
| 741 |
try:
|
| 742 |
+
existing_dataset = load_dataset(dataset_name, split="train")
|
| 743 |
+
existing_data = existing_dataset.to_list()
|
| 744 |
+
print(f"📊 {len(existing_data)} entrées existantes trouvées")
|
| 745 |
|
| 746 |
+
# Combiner ancien + nouveau
|
| 747 |
+
combined_data = existing_data + clean_entries
|
| 748 |
+
clean_dataset = Dataset.from_list(combined_data)
|
| 749 |
+
print(f"📊 Dataset combiné: {len(existing_data)} existantes + {len(clean_entries)} nouvelles = {len(combined_data)} total")
|
| 750 |
|
| 751 |
except Exception as e:
|
| 752 |
print(f"📊 Dataset non trouvé, création nouveau: {e}")
|
| 753 |
# Si le dataset n'existe pas, créer depuis les nouvelles entrées
|
| 754 |
+
clean_dataset = Dataset.from_list(clean_entries)
|
| 755 |
print(f"📊 Nouveau dataset créé avec {len(clean_entries)} entrées")
|
| 756 |
|
| 757 |
print(f"✅ Dataset créé - Features:")
|
|
|
|
| 766 |
|
| 767 |
operations_summary = ", ".join([f"{op}: {count}" for op, count in operations_count.items()])
|
| 768 |
|
| 769 |
+
# Push vers HuggingFace
|
| 770 |
+
print(f"📤 Push vers {dataset_name}...")
|
| 771 |
+
clean_dataset.push_to_hub(
|
| 772 |
+
dataset_name,
|
| 773 |
+
private=False,
|
| 774 |
+
token=hf_token,
|
| 775 |
+
commit_message=f"Add {len(clean_entries)} handwriting samples for math OCR ({operations_summary})"
|
| 776 |
+
)
|
| 777 |
|
| 778 |
cleanup_memory()
|
| 779 |
|