# 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= FAVICON_PATH=favicon.png INTRO_TEXT=intros/short_intro.txt # PI agent Gradio UI (agent-redact/pi/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 # 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= # --- 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=