import sys,os,pandas as pd,concurrent.futures as cf; sys.path.insert(0,'scripts'); from grab import grab; from ocr import labels d=pd.read_csv('data/review_adjudicated.csv'); d=d[d.label=='F'] def job(v): s=sorted(set(d.loc[d.vid==v,'entry_off_s'].astype(int)+5)); return v,len(s),len(grab(v,s)) with cf.ThreadPoolExecutor(4) as ex: for r in ex.map(job,list(d.vid.unique())): print(r,flush=True) rows=[] for r in d.itertuples(): f=f"frames/{r.vid}/{int(r.entry_off_s)+5:05d}.png" L=labels(f) if os.path.exists(f) else {'top':[],'bot':[]} rows.append(dict(cid=r.cid,frame=f,exists=os.path.exists(f),top=';'.join(a+b for a,b in L['top']),bot=';'.join(a+b for a,b in L['bot']))) pd.DataFrame(rows).to_csv('data/F_ocr.csv',index=False); print('ocr done')