import json from pathlib import Path from PIL import Image, ImageEnhance, ImageOps base=Path(r"C:\Apache24\htdocs\.codex_tmp") rows=json.loads((base/'ocr_merged.json').read_text(encoding='utf-8')) missing={r['id'] for r in rows if not r['chosen']} src=Path(r"C:\Apache24\htdocs\mikrotik\admin\assets\id_cards") outs={a:base/f'ocr_rot{a}' for a in (90,180,270)} for d in outs.values(): d.mkdir(exist_ok=True) for path in src.glob('bulk_*_both_*.jpg'): sid=int(path.name.split('_')[1]) if sid not in missing: continue original=Image.open(path).convert('L') for angle,out in outs.items(): img=original.rotate(angle,expand=True) img=ImageOps.autocontrast(img) img.thumbnail((1800,2400)) img=ImageEnhance.Contrast(img).enhance(1.5) img.save(out/f'{path.stem}.png') print(len(missing))