# apps/vision — the ANPR microservice's own env (copy to apps/vision/.env). # This is the PYTHON SERVICE's config only. The Node server has its OWN VISION_* vars # (in apps/server/.env) — keep the two .env files SEPARATE (they share the VISION_ # prefix but are different processes). See wiki/entities/opencv-anpr-service.md "Configuration". # Recognizer: "stub" (no models, recognizes nothing — boots anywhere, for dev/CI) or # "fast_alpr" (the real MIT YOLOv9+CCT/ONNX stack — needs `uv sync --extra alpr`). VISION_RECOGNIZER=fast_alpr # Bind. On the appliance prefer 127.0.0.1 — the Node backend is the only caller, so the # /analyze endpoint should NOT be reachable off-host. (0.0.0.0 only if you must.) VISION_HOST=127.0.0.1 VISION_PORT=8089 # fast-alpr models (only used when recognizer=fast_alpr). The defaults won the Albanian # benchmark; change the OCR to european-plates-mobile-vit-v2-model only to re-test. VISION_DETECTOR_MODEL=yolo-v9-t-384-license-plate-end2end VISION_OCR_MODEL=cct-xs-v2-global-model # Confidence floor — a best plate below this is flagged low_confidence so the Node side # treats it as advisory and falls back to the ticket path. Keep in sync with the server. VISION_MIN_CONFIDENCE=0.5 # Vehicle stage (phase A): a YOLOX ONNX graph (Apache-2.0) run on the same frame after the # plate read; fills /analyze `vehicle.body_type` (car/truck/bus/motorcycle) + confidence for # the Car Wash desk's category suggestion. Unset = off. The Docker image bakes the weights # at /app/models/yolox_s.onnx; locally: curl the release file into apps/vision/models/. # https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.onnx # VISION_VEHICLE_MODEL_PATH=models/yolox_s.onnx # VISION_VEHICLE_INPUT_SIZE=640 # VISION_VEHICLE_MIN_CONFIDENCE=0.4