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

docker build -t alldocex-app .

2. Run with Docker Compose

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

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

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)

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).