| 123456789101112131415161718192021222324252627282930313233 |
- import os
- import base64
- from openai import OpenAI
- from dotenv import load_dotenv
- from schemas import ExtractionResponse
- load_dotenv()
- client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
- async def extract_receipt_data(image_content: bytes, user_name: str, department: str) -> ExtractionResponse:
- base64_image = base64.b64encode(image_content).decode("utf-8")
-
- prompt = f"You are an HR data entry assistant. Extract the requested fields from the provided medical receipt image. The employee submitting this is {user_name} from {department}. If the date is missing, look for a 'Payment Date' as a fallback."
-
- completion = client.beta.chat.completions.parse(
- model="gpt-4o",
- messages=[
- {
- "role": "user",
- "content": [
- {"type": "text", "text": prompt},
- {
- "type": "image_url",
- "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"},
- },
- ],
- }
- ],
- response_format=ExtractionResponse,
- )
-
- return completion.choices[0].message.parsed
|