Spaces:
Sleeping
Sleeping
| 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 | |
| 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)}") | |