Financeironovo / app.py
Diegobrons's picture
Create app.py
d639a63 verified
raw
history blame
3.35 kB
import gradio as gr
import cv2
import numpy as np
import pandas as pd
from paddleocr import PaddleOCR
# Função OCR com PaddleOCR
def ocr_with_paddle(img):
ocr = PaddleOCR(lang='en', use_angle_cls=True)
result = ocr.ocr(img, cls=True)
finaltext = ''
for line in result:
for word in line:
finaltext += ' ' + word[1][0]
return finaltext
# Função para categorizar despesa (exemplo simples)
def categorize_expense(text):
if "gas" in text.lower():
return "Combustível"
elif "restaurant" in text.lower():
return "Alimentação"
elif "shopping" in text.lower():
return "Compras"
else:
return "Outros"
# Função para processar a imagem e salvar as informações
def process_image(image, method):
if method == "PaddleOCR":
text = ocr_with_paddle(image)
else:
raise ValueError("Método OCR não suportado")
category = categorize_expense(text)
return f"Texto reconhecido: {text}\nCategoria: {category}"
# Função para adicionar projeto
def add_project(name, budget, items):
project = {
"name": name,
"budget": budget,
"items": items,
"spent": 0,
"balance": budget
}
projects.append(project)
return f"Projeto {name} adicionado com sucesso."
# Função para adicionar item ao projeto
def add_item_to_project(project_name, item_name, item_cost):
for project in projects:
if project["name"] == project_name:
project["items"].append({"name": item_name, "cost": item_cost})
project["balance"] -= item_cost
return f"Item {item_name} adicionado ao projeto {project_name}. Saldo atual: {project['balance']}"
return "Projeto não encontrado."
# Inicializando a lista de projetos
projects = []
# Interface Gradio
with gr.Blocks() as demo:
gr.Markdown("# Controle Financeiro com OCR")
with gr.Tab("OCR"):
img_input = gr.Image(label="Upload da imagem")
method_input = gr.Radio(["PaddleOCR"], value="PaddleOCR", label="Método OCR")
ocr_output = gr.Textbox(label="Resultado OCR")
process_button = gr.Button("Processar Imagem")
process_button.click(fn=process_image, inputs=[img_input, method_input], outputs=[ocr_output])
with gr.Tab("Projetos"):
project_name_input = gr.Textbox(label="Nome do Projeto")
project_budget_input = gr.Number(label="Orçamento do Projeto")
project_items_input = gr.Textbox(label="Itens do Projeto (separados por vírgula e espaço)")
add_project_button = gr.Button("Adicionar Projeto")
add_project_button.click(fn=add_project, inputs=[project_name_input, project_budget_input, project_items_input], outputs=[gr.Textbox(label="Resultado")])
project_select = gr.Dropdown(choices=[], label="Selecione o Projeto")
item_name_input = gr.Textbox(label="Nome do Item")
item_cost_input = gr.Number(label="Custo do Item")
add_item_button = gr.Button("Adicionar Item ao Projeto")
add_item_button.click(fn=add_item_to_project, inputs=[project_select, item_name_input, item_cost_input], outputs=[gr.Textbox(label="Resultado")])
project_select.change(lambda: [p["name"] for p in projects], None, project_select)
# Iniciar a demo
demo.launch()