Spaces:
Sleeping
Sleeping
only for Image to Text
Browse files
app.py
CHANGED
|
@@ -12,7 +12,7 @@ if not _omp_threads.isdigit() or int(_omp_threads) < 1:
|
|
| 12 |
|
| 13 |
import torch
|
| 14 |
from dotenv import load_dotenv
|
| 15 |
-
from fastapi import FastAPI,
|
| 16 |
from fastapi.exceptions import RequestValidationError
|
| 17 |
from fastapi.responses import JSONResponse
|
| 18 |
from PIL import Image, UnidentifiedImageError
|
|
@@ -354,17 +354,26 @@ def insert_record(collection, payload: dict) -> str:
|
|
| 354 |
|
| 355 |
|
| 356 |
@app.post("/generate-caption")
|
| 357 |
-
async def generate_caption(
|
| 358 |
-
file: UploadFile | None = File(default=None),
|
| 359 |
-
files: list[UploadFile] | None = File(default=None),
|
| 360 |
-
):
|
| 361 |
_ensure_db_ready()
|
| 362 |
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 368 |
if not uploads:
|
| 369 |
raise AppError("At least one image is required.", 400)
|
| 370 |
if len(uploads) > MAX_IMAGES:
|
|
|
|
| 12 |
|
| 13 |
import torch
|
| 14 |
from dotenv import load_dotenv
|
| 15 |
+
from fastapi import FastAPI, Request, UploadFile
|
| 16 |
from fastapi.exceptions import RequestValidationError
|
| 17 |
from fastapi.responses import JSONResponse
|
| 18 |
from PIL import Image, UnidentifiedImageError
|
|
|
|
| 354 |
|
| 355 |
|
| 356 |
@app.post("/generate-caption")
|
| 357 |
+
async def generate_caption(request: Request):
|
|
|
|
|
|
|
|
|
|
| 358 |
_ensure_db_ready()
|
| 359 |
|
| 360 |
+
try:
|
| 361 |
+
form = await request.form()
|
| 362 |
+
except Exception as exc:
|
| 363 |
+
raise AppError("Invalid request payload.", 422) from exc
|
| 364 |
+
|
| 365 |
+
uploads: list[UploadFile] = []
|
| 366 |
+
for key in ("files", "files[]", "file"):
|
| 367 |
+
for value in form.getlist(key):
|
| 368 |
+
if isinstance(value, UploadFile):
|
| 369 |
+
uploads.append(value)
|
| 370 |
+
|
| 371 |
+
# Fallback for clients that send non-standard multipart keys.
|
| 372 |
+
if not uploads:
|
| 373 |
+
for _, value in form.multi_items():
|
| 374 |
+
if isinstance(value, UploadFile):
|
| 375 |
+
uploads.append(value)
|
| 376 |
+
|
| 377 |
if not uploads:
|
| 378 |
raise AppError("At least one image is required.", 400)
|
| 379 |
if len(uploads) > MAX_IMAGES:
|