Optional Google Vision secret mount works when key file exists
Container image size is reasonable (document final size)
Relates to #115
Update Docker configuration, secrets, and compose files for PaddleOCR engine and optional cloud fallback.
## Changes
- Update `ocr/Dockerfile` - Add PaddlePaddle CPU and PaddleOCR, download PP-OCRv4 models during build
- Update `docker-compose.yml` - Add environment vars for engine config, optional secret mount for Google Vision key
- Update `docker-compose.staging.yml` - Same overrides if needed
- Create `secrets/app/google-vision-key.json` placeholder (gitignored)
- Remove Tesseract as required system dependency (keep optional for backward compat)
## Acceptance Criteria
- [ ] Dockerfile builds successfully with PaddleOCR + PP-OCRv4 models
- [ ] Container starts and serves health endpoint
- [ ] PaddleOCR models included in image (no runtime download)
- [ ] Docker Compose configures engine environment variables
- [ ] Optional Google Vision secret mount works when key file exists
- [ ] Container image size is reasonable (document final size)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Relates to #115
Update Docker configuration, secrets, and compose files for PaddleOCR engine and optional cloud fallback.
Changes
ocr/Dockerfile- Add PaddlePaddle CPU and PaddleOCR, download PP-OCRv4 models during builddocker-compose.yml- Add environment vars for engine config, optional secret mount for Google Vision keydocker-compose.staging.yml- Same overrides if neededsecrets/app/google-vision-key.jsonplaceholder (gitignored)Acceptance Criteria