Docker Hub - Jonesckevin/ocr-webapp
A Docker-based web application for OCR text extraction with AI-powered translation support. This app is meant to work offline using local LLMs (Ollama, LM Studio) with optional online cloud LLM support (OpenAI, Anthropic, Google Gemini, etc.). Great for your HALp needs!
- OCR Processing: Extract text from images (PNG, JPG, TIFF, etc.) and PDF files
- Multi-language OCR: Support for 100+ languages with top 10 pre-installed
- AI Translation: Translate extracted text using local (Ollama, LM Studio) or cloud LLMs
- Multiple Upload Methods: Drag & drop, file select, or paste from clipboard
- File Management: Manage uploaded files and OCR results through the web interface
- Configurable: Customize titles, file limits, LLM settings via config file
- Secure API Keys: Server-side environment variables or client-side browser storage
docker run -d -p 8202:5000 \
-v ./data/uploaded:/data/uploaded \
-v ./data/output:/data/output \
-v ./config.json:/app/config.json:ro \
jonesckevin/ocr-webapp-
Clone the repository:
git clone https://github.com/Jonesckevin/OCR-WebApp.git cd OCR-WebApp -
Start the application:
docker compose up -d
-
Portainer:
services: ocr-webapp: image: jonesckevin/ocr-webapp:latest container_name: ocr-webapp restart: unless-stopped ports: - "8202:5000" volumes: - ./data/uploaded:/data/uploaded - ./data/output:/data/output - ./data/logs:/data/logs environment: - FLASK_ENV=production - SECRET_KEY=change-this-to-a-secure-random-string - ALLOW_LIVE_LANG_INSTALL=true - ALLOW_CLIENT_API_KEYS=true - LOG_MAX_BYTES=10485760 # 10MB default - LOG_BACKUP_COUNT=5 - LOG_LEVEL=INFO - OLLAMA_HOST=http://host.docker.internal:11434 - LMSTUDIO_HOST=http://host.docker.internal:1234
-
Open your browser to
http://localhost:8202
docker compose up --build
# or
docker build -t ocr-webapp .
docker run -d -p 8202:5000 \
ocr-webappPriority languages (highlighted in UI):
- English (eng)
- French (fra)
- Ukrainian (ukr)
- Russian (rus)
Additional languages:
- German (deu)
- Spanish (spa)
- Italian (ita)
- Portuguese (por)
- Chinese Simplified (chi_sim)
- Japanese (jpn)
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Main application page |
/health |
GET | Health check endpoint |
/api/config |
GET | Get application configuration |
/api/progress/<task_id> |
GET | Get progress for a specific task |
/api/logs |
GET | Get application logs |
/api/logs/download |
GET | Download complete log file |
/api/logs/clear |
POST | Clear log file |
/api/upload |
POST | Upload file |
/api/upload/paste |
POST | Upload pasted image (base64) |
/api/files |
GET | List uploaded files |
/api/files/<filename> |
GET | Download uploaded file |
/api/files/<filename> |
DELETE | Delete uploaded file |
/api/languages |
GET | List installed OCR languages |
/api/languages/install |
POST | Install new language pack |
/api/ocr |
POST | Perform OCR on a file |
/api/results |
GET | List OCR result files |
/api/results/<result_id> |
GET | Get specific OCR result |
/api/results/<result_id> |
DELETE | Delete OCR result |
/api/results/<result_id>/edit |
POST | Save edited OCR text |
/api/results/<result_id>/download/<format> |
GET | Download result (json/txt/translation) |
/api/llm/test |
POST | Test LLM provider connection |
/api/llm/models |
POST | Get available models for provider |
/api/llm/translate |
POST | Translate text using LLM |
/static/<path:filename> |
GET | Serve static files |

