API HTTP per rimuovere lo sfondo dalle immagini utilizzando la libreria rembg con modello birefnet-general ottimizzato per foto di prodotti.
- β API HTTP protetta da chiave API
- β Download automatico delle immagini da URL
- β Rimozione dello sfondo usando RMBG-2.0 (BriaAI) o fallback rembg
- β Metadata dettagliati incorporati nell'immagine processata
- β Ottimizzato per foto di prodotti e oggetti
- β Supporto credenziali HuggingFace per modelli privati
- β Cache persistente per modelli AI
- β Pulizia automatica dei file temporanei
- β Gestione degli errori completa
- β Logging strutturato con timing di processamento
- β Documentazione API automatica (Swagger/OpenAPI)
- 
Clona o crea la directory del progetto: cd /path/to/your/project
- 
Installa le dipendenze: pip install -r requirements.txt 
- 
Configura le variabili d'ambiente: cp .env.example .env Modifica il file .envcon le tue configurazioni:API_KEY=your-secret-api-key-here HOST=0.0.0.0 PORT=8000 DEBUG=false # Opzionale: Token HuggingFace per modelli migliori HF_TOKEN=your-huggingface-token-here
python main.pyIl server sarΓ  disponibile su http://localhost:8000
Rimuove lo sfondo da un'immagine specificata tramite URL.
Parametri:
- image_url(query parameter): URL dell'immagine da processare
- X-API-Key(header): Chiave API per l'autenticazione
Esempio di richiesta:
curl -X GET "http://localhost:8000/remove-background?image_url=https://example.com/image.jpg" \
     -H "X-API-Key: your-api-key-here" \
     --output result.pngAlternativa POST per URL molto lunghi.
Esempio di richiesta:
curl -X POST "http://localhost:8000/remove-background" \
     -H "X-API-Key: your-api-key-here" \
     -H "Content-Type: application/json" \
     -d '{"image_url": "https://example.com/very-long-url..."}' \
     --output result.png- GET /- Informazioni sull'API
- GET /health- Health check
- GET /docs- Documentazione Swagger (solo in debug mode)
L'API supporta i seguenti formati di immagine:
- JPEG (.jpg, .jpeg)
- PNG (.png)
- BMP (.bmp)
- GIF (.gif)
- TIFF (.tiff)
- WebP (.webp)
import requests
# Configurazione
api_url = "http://localhost:8000/remove-background"
api_key = "your-api-key-here"
image_url = "https://example.com/image.jpg"
# Richiesta
response = requests.get(
    api_url,
    params={"image_url": image_url},
    headers={"X-API-Key": api_key}
)
if response.status_code == 200:
    with open("result.png", "wb") as f:
        f.write(response.content)
    print("Immagine processata con successo!")
else:
    print(f"Errore: {response.status_code} - {response.text}")const apiUrl = 'http://localhost:8000/remove-background';
const apiKey = 'your-api-key-here';
const imageUrl = 'https://example.com/image.jpg';
fetch(`${apiUrl}?image_url=${encodeURIComponent(imageUrl)}`, {
    headers: {
        'X-API-Key': apiKey
    }
})
.then(response => {
    if (response.ok) {
        return response.blob();
    }
    throw new Error('Errore nella richiesta');
})
.then(blob => {
    const url = URL.createObjectURL(blob);
    const img = document.createElement('img');
    img.src = url;
    document.body.appendChild(img);
})
.catch(error => console.error('Errore:', error));- API_KEY: Chiave API per l'autenticazione (obbligatoria)
- HOST: Host su cui avviare il server (default: 0.0.0.0)
- PORT: Porta su cui avviare il server (default: 8000)
- DEBUG: ModalitΓ debug (default: false)
- TEMP_DIR: Directory per i file temporanei (opzionale)
- HF_TOKEN: Token HuggingFace per accedere ai modelli migliori (opzionale)
Per ottenere prestazioni migliori, puoi configurare un token HuggingFace:
- Registrati su HuggingFace
- Vai alle impostazioni token
- Crea un nuovo token con permessi di lettura
- Aggiungi il token al tuo file .env:HF_TOKEN=hf_your_token_here 
Vantaggi del token HF:
- Accesso ai modelli RMBG-2.0 (migliori prestazioni)
- Nessun limite di rate per il download dei modelli
- Accesso a modelli privati e premium
Ogni immagine processata include metadata dettagliati incorporati nel file PNG:
Metadata standard:
- Titolo e descrizione del processamento
- Software utilizzato e versione API
- Timestamp di processamento
- URL dell'immagine originale
Metadata tecnici:
- Modello AI utilizzato (RMBG-2.0 o rembg)
- Dispositivo di processamento (CPU/GPU)
- Tempo di processamento in secondi
- Formato e dimensioni originali
- Informazioni sul canale alpha
Metadata strutturati JSON:
{
  "processing": {
    "timestamp": "2024-01-01T12:00:00",
    "model": "RMBG-2.0 (Transformers)",
    "device": "cpu",
    "processing_time_seconds": 2.45,
    "success": true
  },
  "original": {
    "url": "https://example.com/image.jpg",
    "format": "JPEG",
    "width": 1920,
    "height": 1080,
    "file_size_bytes": 234567
  },
  "output": {
    "format": "PNG",
    "has_alpha": true,
    "width": 1920,
    "height": 1080
  }
}Come leggere i metadata:
from PIL import Image
# Apri l'immagine processata
img = Image.open('processed_image.png')
# Leggi i metadata
print("Modello utilizzato:", img.text.get('Processing Model'))
print("Tempo di processamento:", img.text.get('Processing Time'))
print("URL originale:", img.text.get('Source URL'))
print("Metadata JSON:", img.text.get('Processing Info JSON'))Il sistema include logging strutturato che registra:
- Richieste API ricevute
- Errori di validazione
- Errori di processamento
- Informazioni di debug (in modalitΓ debug)
- Autenticazione tramite API Key
- Validazione degli URL delle immagini
- Verifica del content-type delle immagini
- Pulizia automatica dei file temporanei
- Timeout per le richieste HTTP
L'API restituisce i seguenti codici di stato HTTP:
- 200 OK: Immagine processata con successo
- 400 Bad Request: URL non valido o parametri mancanti
- 401 Unauthorized: API Key non valida
- 500 Internal Server Error: Errore interno del server
- Le immagini vengono scaricate e processate in memoria quando possibile
- I file temporanei vengono automaticamente eliminati dopo il processamento
- Timeout di 30 secondi per il download delle immagini
- Supporto per immagini di dimensioni ragionevoli (limitato dalla memoria disponibile)
# Esegui lo script automatico
./docker-build.sh# Copia e configura le variabili d'ambiente
cp .env.example .env
# Edita .env con le tue configurazioni
# Build e avvio con cache persistente
docker-compose up -d
# Per vedere i logs
docker-compose logs -f
# Per fermare
docker-compose down# Build dell'immagine con token HF (opzionale)
docker build \
  --build-arg HF_TOKEN=your-hf-token-here \
  -t removebg-api:latest .
# Run del container con volumi per cache
docker run -d \
  --name removebg-api \
  -p 8000:8000 \
  -e API_KEY=your-api-key-here \
  -e HF_TOKEN=your-hf-token-here \
  -e DEBUG=false \
  -v hf_cache:/app/.cache/huggingface \
  -v torch_cache:/app/.cache/torch \
  removebg-api:latest
# Verifica che sia in esecuzione
docker ps
# Logs
docker logs -f removebg-apiSetup completo con token HF:
# File .env
API_KEY=your-secure-api-key
HF_TOKEN=hf_your_token_here
DEBUG=false
# Build con pre-download dei modelli
docker-compose build --build-arg HF_TOKEN=$HF_TOKEN
# Avvio con cache persistente
docker-compose up -dVantaggi della configurazione avanzata:
- β Pre-download modelli durante il build (primo avvio piΓΉ veloce)
- β Cache persistente tra riavvii del container
- β Modelli RMBG-2.0 per qualitΓ superiore
- β Memoria aumentata per gestire modelli AI (4GB in produzione)
Variabili d'ambiente per Docker:
- API_KEY: Chiave API (default: demo-api-key-123)
- HF_TOKEN: Token HuggingFace per modelli migliori (opzionale)
- DEBUG: ModalitΓ debug (default: false)
- HOST: Host interno (sempre 0.0.0.0 in Docker)
- PORT: Porta interna (sempre 8000 in Docker)
Volumi Docker:
- hf_cache: Cache modelli HuggingFace (persistente)
- torch_cache: Cache PyTorch (persistente)
- ./temp_images: Directory immagini temporanee (opzionale)
File di configurazione:
- Dockerfile: Configurazione dell'immagine
- docker-compose.yml: Orchestrazione dei servizi
- .dockerignore: File da escludere dal build
- docker-build.sh: Script automatico di build e deploy
βββ main.py              # Entry point dell'applicazione
βββ image_processor.py   # Logica di processamento delle immagini
βββ requirements.txt     # Dipendenze Python
βββ Dockerfile          # Configurazione Docker
βββ docker-compose.yml  # Orchestrazione Docker
βββ docker-build.sh     # Script automatico Docker
βββ .dockerignore       # File da escludere da Docker
βββ .env                # Configurazione locale
βββ .env.example        # Template di configurazione
βββ .env.docker         # Template per Docker
βββ README.md           # Questa documentazione
Per abilitare la modalitΓ  debug, imposta DEBUG=True nel file .env. Questo abiliterΓ :
- Ricaricamento automatico del codice
- Documentazione Swagger su /docs
- Logging dettagliato
Questo progetto Γ¨ distribuito sotto licenza MIT.