MISSAOUI commited on
Commit
79c8c22
·
verified ·
1 Parent(s): 4889036

Update app.py

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