File size: 2,507 Bytes
b9e2109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
Central configuration module for the Oculus server.
All environment variables and configuration settings are defined here.
"""

import os
from typing import Dict, Any, Tuple

# OCR Configuration
OCR_BACKEND = os.getenv("OCR_BACKEND", "easyocr")  # Options: "easyocr" or "google"
OCR_NUM_WORKERS = int(os.getenv("OCR_NUM_WORKERS", "1"))
OCR_CONFIDENCE_THRESHOLD = float(os.getenv("OCR_CONFIDENCE_THRESHOLD", "0.2"))
GOOGLE_APPLICATION_CREDENTIALS = os.getenv("GOOGLE_APPLICATION_CREDENTIALS")

# UI Element Detection Configuration
UI_MODEL_PATH = os.getenv("UI_MODEL_PATH", "weights/best.pt")

# Image Annotation Configuration
ANNOTATION_DIR = os.getenv("ANNOTATION_DIR", "annotated")
FONT_SIZE = int(os.getenv("FONT_SIZE", "30"))
JPEG_QUALITY = int(os.getenv("JPEG_QUALITY", "85"))
# Whether to display code labels/annotations for text (OCR) elements
ANNOTATE_TEXT = os.getenv("ANNOTATE_TEXT", "1").lower() in ("1", "true", "yes", "on")
# Whether to draw bounding boxes around text (OCR) elements
DRAW_TEXT_BOXES = os.getenv("DRAW_TEXT_BOXES", "1").lower() in ("1", "true", "yes", "on")
# Whether to draw arrows from code labels to their bounding boxes
DRAW_ARROWS = os.getenv("DRAW_ARROWS", "1").lower() in ("1", "true", "yes", "on")
# Arrow line width
ARROW_WIDTH = int(os.getenv("ARROW_WIDTH", "2"))
# Element code label border width
LABEL_BORDER_WIDTH = int(os.getenv("LABEL_BORDER_WIDTH", "3"))

# Server Configuration
PORT = int(os.getenv("PORT", "8000"))
WORKERS = int(os.getenv("WORKERS", "1"))

# Hardware Acceleration Settings
PYTORCH_ENABLE_MPS_FALLBACK = os.getenv("PYTORCH_ENABLE_MPS_FALLBACK", "1")

# Ensure annotation directory exists
os.makedirs(ANNOTATION_DIR, exist_ok=True)

def get_all_config() -> Dict[str, Any]:
    """Return all configuration values as a dictionary."""
    return {
        "OCR_BACKEND": OCR_BACKEND,
        "OCR_NUM_WORKERS": OCR_NUM_WORKERS,
        "OCR_CONFIDENCE_THRESHOLD": OCR_CONFIDENCE_THRESHOLD,
        "GOOGLE_APPLICATION_CREDENTIALS": GOOGLE_APPLICATION_CREDENTIALS,
        "UI_MODEL_PATH": UI_MODEL_PATH,
        "ANNOTATION_DIR": ANNOTATION_DIR,
        "FONT_SIZE": FONT_SIZE,
        "JPEG_QUALITY": JPEG_QUALITY,
        "ANNOTATE_TEXT": ANNOTATE_TEXT,
        "DRAW_TEXT_BOXES": DRAW_TEXT_BOXES,
        "DRAW_ARROWS": DRAW_ARROWS,
        "ARROW_WIDTH": ARROW_WIDTH,
        "LABEL_BORDER_WIDTH": LABEL_BORDER_WIDTH,
        "PORT": PORT,
        "WORKERS": WORKERS,
        "PYTORCH_ENABLE_MPS_FALLBACK": PYTORCH_ENABLE_MPS_FALLBACK
    }