annotating with checks : support sinle file

master
Sébastien Miquel 2026-02-25 15:04:17 +01:00
parent 6d17633108
commit a682e21e8b
2 changed files with 33 additions and 5 deletions

View File

@ -198,7 +198,7 @@ def process_student(args):
c.drawImage(temp_img_path, 0, 0, width=w, height=h)
c.save()
print("Debug : size", w, h)
# print("Debug : size", w, h)
# Ancien code, avec du drift
# concat_img.save(os.path.join(output_dir, "Concat.pdf"), "PDF", resolution=DPI)
# concat_img.save(os.path.join(output_dir, "Reference.png"))
@ -209,12 +209,34 @@ def process_student(args):
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python annotating_with_checks.py <Dir>")
print("Usage: python annotating_with_checks.py <Dir> or <File>")
sys.exit(1)
root_dir = sys.argv[1]
input_path = sys.argv[1]
target_id = None
# Detect if input is a specific file
if os.path.isfile(input_path):
root_dir = os.path.dirname(input_path) or "."
# Extract ID from filename (e.g., Copie40.pdf -> 40)
match = re.search(r'Copie(\d+)', os.path.basename(input_path))
if match:
target_id = match.group(1)
else:
print("Error: Could not extract student ID from filename.")
sys.exit(1)
else:
root_dir = input_path
results = annotating.make_dictionary(root_dir)
# Filter results if a specific target ID was requested
if target_id:
if target_id in results:
results = {target_id: results[target_id]}
else:
print(f"Student ID {target_id} not found in directory scan.")
results = {}
tasks = [(root_dir, sid, lbls) for sid, lbls in results.items()]

View File

@ -2,6 +2,7 @@ import os
import sys
import json
import ezodf
from pathlib import Path
# Configuration
ODS_PATH = "/home/sebastien/Rust/gestion_classe/Staging/current_eval.ods"
@ -14,6 +15,7 @@ def main():
else:
work_dir = os.path.abspath(sys.argv[1])
all_labels = [l for l in (Path(work_dir) / "labels").read_text().split("\n") if l!=""]
a_rendre_path = os.path.join(work_dir, TARGET_DIR_NAME)
if not os.path.isdir(a_rendre_path):
@ -95,14 +97,18 @@ def main():
# Start filling from Row 2 (index 2), immediately below the name line
start_row = 2
for i, key in enumerate(scores_data.keys()):
# for i, key in enumerate(scores_data.keys()):
for i, key in enumerate(all_labels):
row_idx = start_row + i
# Ensure we don't go out of bounds
if row_idx >= sheet.nrows():
sheet.append_rows(1)
val_str = str(scores_data[key])
if key in scores_data:
val_str = str(scores_data[key])
else:
val_str = ""
# Logic: if "" -> "NT"
new_val = "NT" if val_str == "" else val_str