#!/usr/bin/env python
"""
find_broken_images.py
────────────────────────────────────────────
COCO JSON을 읽어 이미지가 손상됐는지 실제로 열어 보며 검사.
깨진 파일은 리스트로 저장하거나 바로 삭제하도록 선택 가능.
"""
import cv2, json, os
from pathlib import Path
from tqdm import tqdm

JSON_PATH = Path("/data/ai-hub/ppe-dataset/105.공사현장_안전장비_인식_데이터/train_safety_dataset_coco.json")
DELETE    = False   # True 로 두면 깨진 파일을 바로 삭제

broken = []
coco = json.load(JSON_PATH.open())
for img in tqdm(coco["images"]):
    f = img["file_name"]
    if cv2.imread(f) is None:
        broken.append(f)
        if DELETE:
            try: Path(f).unlink()
            except Exception as e: print("삭제 실패:", e)

print(f"\n🔎  broken = {len(broken):,}")
if broken:
    outfile = JSON_PATH.with_suffix(".broken.txt")
    outfile.write_text("\n".join(broken))
    print("목록 저장 →", outfile)
