File size: 5,772 Bytes
517919c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Main application settings (copy to config/app_config.env β€” do not commit secrets).
#
# Loaded at startup by tools/config.py (APP_CONFIG_PATH defaults to config/app_config.env).
# Variables already set in the process environment (e.g. Docker compose environment:)
# are not overridden by this file.
#
# Full list of supported keys: tools/config.py and the user guide.
# For Docker Compose-only overrides on redaction-app services, see docker_app_config.env.example.
# Optional separate AWS keys file: set AWS_CONFIG_PATH=config/aws_config.env

# --- Local dependencies (Windows/Linux paths if not on PATH) ---
TESSERACT_FOLDER=tesseract/
POPPLER_FOLDER=poppler/poppler-24.02.0/Library/bin/
# TESSERACT_DATA_FOLDER=

# --- Input / output folders ---
# GRADIO_INPUT_FOLDER=input/
# GRADIO_OUTPUT_FOLDER=output/
SESSION_OUTPUT_FOLDER=True

# --- Gradio / FastAPI ---
GRADIO_SERVER_NAME=127.0.0.1
GRADIO_SERVER_PORT=7860
RUN_FASTAPI=False
# RUN_MCP_SERVER=False
# ROOT_PATH=
# FASTAPI_ROOT_PATH=/
# ALLOWED_HOSTS=
# MAX_DOC_PAGES=3000
# MAX_FILE_SIZE=250mb
# AGENT_API_KEY=

# --- Intro / branding ---
USER_GUIDE_URL=<ENTER_URL>
FAVICON_PATH=favicon.png
INTRO_TEXT=intros/short_intro.txt
# PI agent Gradio UI (agent-redact/shared/gradio_app.py) β€” separate from INTRO_TEXT above
# AGENT_INTRO_TEXT=intros/pi_intro.txt

# --- GUI visibility ---
SHOW_QUICKSTART=False
SHOW_SUMMARISATION=True
SHOW_EXAMPLES=True
SHOW_DIFFICULT_OCR_EXAMPLES=True
SHOW_LANGUAGE_SELECTION=True
SHOW_ALL_OUTPUTS_IN_OUTPUT_FOLDER=True
SHOW_PII_IDENTIFICATION_OPTIONS=True
SHOW_LOCAL_PII_DETECTION_OPTIONS=True
SHOW_OCR_GUI_OPTIONS=True
EXTRACTION_AND_PII_OPTIONS_OPEN_BY_DEFAULT=True
SHOW_LOCAL_OCR_MODEL_OPTIONS=True
SHOW_AWS_TEXT_EXTRACTION_OPTIONS=True
SHOW_AWS_PII_DETECTION_OPTIONS=True
SHOW_AWS_EXAMPLES=True
SHOW_HYBRID_MODELS=False
SHOW_CUSTOM_VLM_ENTITIES=False
SHOW_VLM_MODEL_OPTIONS=True
SHOW_INFERENCE_SERVER_PII_OPTIONS=False
SHOW_INFERENCE_SERVER_VLM_OPTIONS=False
SHOW_TRANSFORMERS_LLM_PII_DETECTION_OPTIONS=False
SHOW_BEDROCK_VLM_MODELS=False
SHOW_AWS_BEDROCK_LLM_MODELS=False

# --- OCR / redaction processing ---
DEFAULT_LOCAL_OCR_MODEL=tesseract
OVERWRITE_EXISTING_OCR_RESULTS=False
PREPROCESS_LOCAL_OCR_IMAGES=False
MAX_WORKERS=4
EFFICIENT_OCR=True
INCLUDE_OCR_VISUALISATION_IN_OUTPUT_FILES=True
# Local OCR reading order: column | legacy | paddle_native
LOCAL_OCR_READING_ORDER=column
CONVERT_LINE_TO_WORD_LEVEL=True
MERGE_BOUNDING_BOXES=True

# --- Redaction box appearance ---
CUSTOM_BOX_COLOUR=(128, 128, 128)
USE_GUI_BOX_COLOURS_FOR_OUTPUTS=False

# --- Image save options ---
SAVE_PAGE_OCR_VISUALISATIONS=True
SAVE_PREPROCESS_IMAGES=True

# --- PaddleOCR ---
SHOW_PADDLE_MODEL_OPTIONS=False
LOAD_PADDLE_AT_STARTUP=False  # On ZeroGPU, Paddle loads in the GPU worker on first OCR (not at Space startup).
PADDLE_DEVICE=gpu:0  # transformers backend device (cpu, gpu, gpu:0). Auto-defaults to gpu:0 on ZeroGPU.
PADDLE_MAX_WORKERS=4

# --- VLM / LLM β€” local Transformers ---
SELECTED_LOCAL_TRANSFORMERS_VLM_MODEL=Qwen3.5-9B
QUANTISE_VLM_MODELS=False
USE_TRANSFORMERS_VLM_MODEL_AS_LLM=True
LOCAL_TRANSFORMERS_LLM_PII_MODEL_CHOICE=None
QUANTISE_TRANSFORMERS_LLM_MODELS=False
LOAD_TRANSFORMERS_LLM_PII_MODEL_AT_START=False
LOAD_TRANSFORMERS_VLM_MODEL_AT_START=True

# --- VLM / LLM β€” inference server (vLLM / llama.cpp) ---
INFERENCE_SERVER_API_URL=http://192.168.0.220:8080
USE_LLAMA_SWAP=True
INFERENCE_SERVER_LLM_PII_MODEL_CHOICE=qwen_3_5_27b

# --- VLM / LLM β€” general / cloud backend ---
VLM_DISABLE_QWEN3_5_THINKING=True
LLM_MAX_NEW_TOKENS=8192
CUSTOM_VLM_BACKEND=bedrock_vlm
HYBRID_TEXTRACT_BEDROCK_VLM=False
CLOUD_LLM_PII_MODEL_CHOICE=amazon.nova-pro-v1:0
CLOUD_LLM_PII_CUSTOM_INSTRUCTIONS_MODEL_CHOICE=anthropic.claude-sonnet-4-6
CLOUD_VLM_MODEL_CHOICE=amazon.nova-pro-v1:0
CLOUD_SUMMARISATION_MODEL_CHOICE=amazon.nova-lite-v1:0

# --- AWS (core) ---
RUN_AWS_FUNCTIONS=True
PRIORITISE_SSO_OVER_AWS_ENV_ACCESS_KEYS=True
AWS_REGION=example-region
# AWS_ACCESS_KEY=
# AWS_SECRET_KEY=
DOCUMENT_REDACTION_BUCKET=example-bucket
# SCAN_UPLOADS_FOR_MALWARE=False
# MALWARE_SCAN_S3_BUCKET=
# MALWARE_SCAN_S3_PREFIX=upload-staging/
# MALWARE_SCAN_POLL_INTERVAL_SEC=2.0
# MALWARE_SCAN_TIMEOUT_SEC=120.0
# MALWARE_SCAN_SHOW_CHECKING_INFO=True  # also shows success toast when scan is clean
# S3_OUTPUTS_BUCKET=
# S3_OUTPUTS_FOLDER=
# SAVE_OUTPUTS_TO_S3=False
RUN_ALL_EXAMPLES_THROUGH_AWS=True

# --- AWS Textract ---
SHOW_WHOLE_DOCUMENT_TEXTRACT_CALL_OPTIONS=True
LOAD_PREVIOUS_TEXTRACT_JOBS_S3=True
TEXTRACT_WHOLE_DOCUMENT_ANALYSIS_BUCKET=example-bucket-output
INCLUDE_FORM_EXTRACTION_TEXTRACT_OPTION=False
INCLUDE_LAYOUT_EXTRACTION_TEXTRACT_OPTION=False
INCLUDE_TABLE_EXTRACTION_TEXTRACT_OPTION=False
INCLUDE_FACE_IDENTIFICATION_TEXTRACT_OPTION=False

# --- Logging ---
SAVE_LOGS_TO_CSV=True
SAVE_LOGS_TO_DYNAMODB=True
DISPLAY_FILE_NAMES_IN_LOGS=False
ACCESS_LOG_DYNAMODB_TABLE_NAME=example-dynamodb-access-log
USAGE_LOG_DYNAMODB_TABLE_NAME=example-dynamodb-usage
FEEDBACK_LOG_DYNAMODB_TABLE_NAME=example-dynamodb-feedback

# --- Cost codes ---
SHOW_COSTS=True
GET_COST_CODES=True
COST_CODES_PATH=config/cost_codes.csv
ENFORCE_COST_CODES=True
DEFAULT_COST_CODE=example_cost_code
S3_COST_CODES_PATH=cost_codes.csv

# --- Cognito / hosted auth (when RUN_FASTAPI=True) ---
# COGNITO_AUTH=False
# AWS_USER_POOL_ID=
# AWS_CLIENT_ID=
# AWS_CLIENT_SECRET=
# SHOW_LOGOUT_BUTTON=False
# LOGOUT_BUTTON_URL=https://your-domain.auth.region.amazoncognito.com/logout?client_id=...&logout_uri=...
# LOGOUT_BUTTON_LABEL=Log out

# --- Post-redaction Pass 1 QA (pre-review_apply sanity checks) ---
# POST_REDACT_PASS1_QA=False
# POST_REDACT_PASS1_AUTO_PRUNE=False
# POST_REDACT_PASS1_USE_DENY_ALLOW_LISTS=True
# POST_REDACT_PASS1_MUST_REDACT_PATH=
# POST_REDACT_PASS1_MUST_NOT_REDACT_PATH=