text-extraction-api / DEPLOYMENT.md
krishnachoudhary-hclguvi
Deploy text extraction API files
52a0fe9 unverified
# Alldocex - Deployment Guide
This guide provides three main options for deploying the Alldocex application to a production environment.
## 🏗️ Option 1: Docker (Recommended)
Docker is the best choice because it packages all the AI models, dependencies, and system libraries into a single container.
### 1. Build the image
```bash
docker build -t alldocex-app .
```
### 2. Run with Docker Compose
```bash
docker-compose up -d
```
The application will be available at `http://localhost:8000`.
---
## ☁️ Option 2: Cloud Deployment (Render / Railway / Fly.io)
### **Render Deployment (Recommended)**
1. **Connect GitHub**: Push your code to a GitHub repository.
2. **Create Web Service**: Select "Web Service" in Render.
3. **Docker Environment**: Render will automatically detect the `Dockerfile`.
4. **Resource Plan**: Ensure you select a plan with at least **4GB RAM** (e.g., Starter or Pro).
5. **Environment Variables**: Add `PORT = 8000` if required.
---
## 🖥️ Option 3: Manual Deployment (Ubuntu/Debian Server)
If you are deploying directly to a Linux VPS (without Docker):
### 1. Install System Dependencies
```bash
sudo apt-get update
sudo apt-get install -y tesseract-ocr libgl1-mesa-glx libglib2.0-0 build-essential python3-venv
```
### 2. Set Up Environment
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_sm
```
### 3. Run with Gunicorn (Production Server)
```bash
pip install gunicorn
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000
```
---
## ⚠️ Important Considerations
* **RAM**: AI models (EasyOCR, Torch, spaCy) are memory-intensive. Do NOT deploy on a "Free Tier" instance with only 512MB or 1GB of RAM.
* **Disk Space**: The first time you run the app, it will download several hundred megabytes of model weights.
* **Permissions**: Ensure the `uploads/` directory has write permissions for the user running the application.
* **Reverse Proxy**: For public deployment, it is highly recommended to use **Nginx** as a reverse proxy with SSL (Let's Encrypt).