Spaces:
Sleeping
Sleeping
File size: 1,431 Bytes
197a58a 79c8c22 197a58a 79c8c22 197a58a 79c8c22 197a58a 79c8c22 197a58a 79c8c22 197a58a 79c8c22 8a6ae60 79c8c22 8a6ae60 197a58a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from fastapi import FastAPI, UploadFile, File, HTTPException
from fastapi.responses import FileResponse
from pydantic import BaseModel
from PIL import Image
import io
import os
import google.generativeai as genai
from pdf_generator import create_receipt
genai.configure(api_key=os.environ.get("GOOGLE_API_KEY"))
app = FastAPI()
class OCRResponse(BaseModel):
extracted_text: str
@app.post("/ocr-image/", response_model=OCRResponse)
async def ocr_image(file: UploadFile = File(...)):
if not file.content_type.startswith("image/"):
raise HTTPException(status_code=400, detail="Uploaded file must be an image.")
try:
image_data = await file.read()
image = Image.open(io.BytesIO(image_data))
model = genai.GenerativeModel("gemini-2.0-flash")
prompt = (
"Extraire le texte de cette image et générer un reçu à propos les marchandises, "
"sans aucune information supplémentaire."
)
contents = [prompt, image]
response = model.generate_content(contents)
extracted_text = response.text
# If PDF generation is desired:
create_receipt(extracted_text, file_name="result/receipt.pdf")
return FileResponse("result/receipt.pdf", filename="receipt.pdf", media_type="application/pdf")
except Exception as e:
raise HTTPException(status_code=500, detail=f"OCR failed: {str(e)}")
|