muhammadravi251001's picture
update relative import
9dd4e8f
import gradio as gr
from .ocr import extract_receipt_text, parse_receipt
from .db import init_db, insert_receipt
from .nlp import run_sql
from datetime import datetime
init_db()
def upload_receipt(path: str) -> dict:
text = extract_receipt_text(path)
data = parse_receipt(text)
insert_receipt(
items=data["items"],
merchant=data["merchant"],
date=data["date"] or datetime.now().strftime("%d-%m-%Y")
)
return data
def ask_ai(question: str) -> str:
if question.strip():
results = run_sql(question)
return results
return "Please add the question first."
def ask_ai_with_status(question: str):
yield "Processing your question..."
result = run_sql(question)
yield result
with gr.Blocks() as demo:
gr.Markdown("## Upload your food receipt")
with gr.Row():
img_input = gr.Image(type="filepath")
output = gr.JSON()
upload_btn = gr.Button("Upload")
upload_btn.click(upload_receipt, inputs=img_input, outputs=output)
gr.Markdown("## Ask about your receipts")
question_input = gr.Textbox(label="Ask a question")
answer_output = gr.Markdown()
ask_btn = gr.Button("Ask")
ask_btn.click(ask_ai_with_status, inputs=question_input, outputs=answer_output)