import sys,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/candidates.csv'); vids=sys.argv[1:] or list(d.vid.unique()) def job(v): s=sorted(set(d.loc[d.vid==v,'entry_off_s'].astype(int)+5)); fs=grab(v,s); return v,len(s),len(fs) with cf.ThreadPoolExecutor(3) as ex: for r in ex.map(job,vids): print(r,flush=True) rows=[] for _,r in d.iterrows(): f=f"frames/{r.vid}/{int(r.entry_off_s)+5:05d}.png" try: L=labels(f) except Exception as e: L={'top':[],'bot':[]} rows.append(dict(cid=r.cid,frame=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/candidates_ocr.csv',index=False); print('ocr done')