57 lines
2 KiB
Markdown
57 lines
2 KiB
Markdown
# extractors
|
|
|
|
Consolidated **lightweight feature-extraction** service for the DiDi AI platform
|
|
(LOT 1, Modul 2 — Extractoare ML). Hosts the CPU-only / LLM-delegating feature
|
|
extractors that do **not** warrant a dedicated GPU model server.
|
|
|
|
> Heavy model services stay separate: **deepfake/BusterX** → `video-analysis`,
|
|
> **speech-to-text/Whisper** → `audio`. They require GPU at runtime and are not
|
|
> folded in here.
|
|
|
|
## Capabilities
|
|
|
|
| Endpoint | Status | Type | Notes |
|
|
|----------|--------|------|-------|
|
|
| `POST /v1/metadata` | ✅ implemented | CPU, deterministic | EXIF, video metadata (ffprobe), spectrogram, ELA, integrity/signature |
|
|
| `POST /v1/sentiment` | ✅ implemented | LLM-delegated | LLM gateway + Romanian-aware prompt (irony/sarcasm) |
|
|
| `POST /v1/ocr` | ✅ implemented | LLM vision | verbatim text from images via the vision model |
|
|
| `POST /v1/ner` | ✅ implemented | model (`.[ml]`) | GLiNER multilingual, configurable entity types, GPU-capable |
|
|
| `POST /v1/detect` | ✅ implemented | model (`.[ml]`) | YOLO object detection (COCO), boxes+conf, GPU-capable |
|
|
|
|
The metadata extractors are selected automatically from the detected media type
|
|
(image / video / audio).
|
|
|
|
## Prerequisites
|
|
|
|
- Python 3.10+
|
|
- **ffmpeg/ffprobe** on PATH (provided by the container image) — required for
|
|
video metadata and non-WAV audio decoding. Image extractors (EXIF/ELA/
|
|
integrity) work without it.
|
|
|
|
## Run (local)
|
|
|
|
```bash
|
|
uv sync
|
|
uv run uvicorn extractors.app:app --port 54400
|
|
```
|
|
|
|
## Test
|
|
|
|
```bash
|
|
uv run pytest # local (needs deps)
|
|
./deploy/deploy.sh test # or build the wheel in Docker
|
|
```
|
|
|
|
In the container image, ffmpeg-dependent paths run for real; the unit tests are
|
|
fixture-driven so they pass without the binaries.
|
|
|
|
## Deploy
|
|
|
|
```bash
|
|
cp .env.example .env # set EXTRACTORS_TAG / PORT / MAX_UPLOAD_MB
|
|
./deploy/deploy.sh up
|
|
```
|
|
|
|
Ports follow the datacenter convention: `54400` (dev), `14400` (prod).
|
|
|
|
See `API.md` for the full request/response contract.
|