Reza-galaxy21 commited on
Commit
b12cc17
·
verified ·
1 Parent(s): 4b3582a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -112
app.py CHANGED
@@ -1,119 +1,38 @@
1
  import gradio as gr
 
2
  import pandas as pd
3
- import json
4
- import re
5
-
6
- # فایل دیتابیس JSON
7
- DATABASE_FILE = 'material_db.json'
8
-
9
- # تابع برای استخراج اطلاعات از متن
10
- def extract_info_from_text(text):
11
- """
12
- Extract item description, code, and calculation formula from the provided text.
13
- """
14
- extracted_info = []
15
-
16
- # الگوهای جستجو برای استخراج آیتم‌ها و فرمول‌ها
17
- item_pattern = r'([^\d]+)\s+(\d{6})'
18
- formula_pattern = r'([^\d]+)\s*=\s*([^\d]+)'
19
-
20
- # استخراج آیتم‌ها و کدها
21
- items = re.findall(item_pattern, text)
22
-
23
- # استخراج فرمول‌ها
24
- formulas = re.findall(formula_pattern, text)
25
-
26
- # اضافه کردن اطلاعات به لیست
27
- for item in items:
28
- description, code = item
29
- extracted_info.append({
30
- 'description': description.strip(),
31
- 'code': code.strip()
32
- })
33
-
34
- for formula in formulas:
35
- description, formula_text = formula
36
- extracted_info.append({
37
- 'description': description.strip(),
38
- 'formula': formula_text.strip()
39
- })
40
-
41
- return extracted_info
42
-
43
- # تابع برای ذخیره اطلاعات در دیتابیس JSON
44
- def save_to_database(info):
45
- """
46
- Save the extracted info into the JSON database.
47
- """
48
- try:
49
- # خواندن دیتابیس موجود
50
- with open(DATABASE_FILE, 'r') as db_file:
51
- db_data = json.load(db_file)
52
- except FileNotFoundError:
53
- db_data = []
54
-
55
- # افزودن اطلاعات جدید
56
- db_data.append(info)
57
-
58
- # ذخیره به فایل
59
- with open(DATABASE_FILE, 'w') as db_file:
60
- json.dump(db_data, db_file, indent=4)
61
-
62
- # تابع برای پردازش فایل اکسل
63
- def process_excel_file(excel_file):
64
- """
65
- Reads the Excel file and extracts necessary data for calculation.
66
- """
67
- df = pd.read_excel(excel_file)
68
- # فرض می‌کنیم فایل اکسل دارای ساختار مشخصی است.
69
- # در اینجا به طور فرضی داده‌های مورد نیاز را استخراج می‌کنیم.
70
- return df
71
-
72
- # تابع برای برآورد و محاسبه
73
- def calculate_estimation(text, excel_file=None):
74
- """
75
- Calculate the estimation based on extracted info and Excel data (if available).
76
- """
77
- extracted_info = extract_info_from_text(text)
78
-
79
- if excel_file:
80
- excel_data = process_excel_file(excel_file)
81
- # فرض می‌کنیم که اطلاعات از اکسل باید در محاسبات استفاده شوند
82
- estimation = f"براورد با استفاده از فایل اکسل انجام شد. {len(excel_data)} ردیف داده استفاده شده."
83
- else:
84
- estimation = "براورد فقط با استفاده از توضیحات انجام شد."
85
-
86
- # ذخیره‌سازی اطلاعات در دیتابیس
87
- save_to_database(extracted_info)
88
-
89
- return estimation
90
-
91
- # رابط کاربری با Gradio
92
  def create_ui():
93
- with gr.Blocks() as demo:
94
- gr.Markdown("### برنامه برآورد پروژه")
95
-
96
- # صفحه 1: وارد کردن توضیحات و فایل اکسل
97
- with gr.Box():
98
- gr.Markdown("### وارد کردن توضیحات پروژه")
99
- text_input = gr.Textbox(placeholder="توضیحات پروژه را وارد کنید", lines=5)
100
- excel_input = gr.File(label="فایل اکسل", type="file")
101
- submit_button = gr.Button("ثبت")
102
- output_text = gr.Textbox(label="خروجی برآورد", lines=5)
103
-
104
- submit_button.click(calculate_estimation, inputs=[text_input, excel_input], outputs=output_text)
105
-
106
- # نمایش اطلاعات از دیتابیس در صفحه 2
107
- with gr.Box():
108
- gr.Markdown("### مشاهده اطلاعات ذخیره‌شده")
109
- show_db_button = gr.Button("نمایش اطلاعات دیتابیس")
110
- db_output = gr.Textbox(label="دیتابیس ذخیره‌شده", lines=10)
111
-
112
- show_db_button.click(lambda: open(DATABASE_FILE, 'r').read(), outputs=db_output)
113
-
114
- return demo
115
 
116
- # اجرای رابط کاربری
117
  demo = create_ui()
118
  demo.launch()
119
 
 
1
  import gradio as gr
2
+ import openai
3
  import pandas as pd
4
+ import numpy as np
5
+ from langchain.vectorstores import FAISS
6
+ from langchain.chains import LLMChain
7
+ from langchain.prompts import PromptTemplate
8
+ import easyocr
9
+ import fitz # PyMuPDF
10
+
11
+ # تنظیمات OpenAI API
12
+ openai.api_key = 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
13
+
14
+ # تابع برای پردازش ورودی و تولید پاسخ
15
+ def process_input(user_input):
16
+ # پردازش ورودی کاربر (مراحل مختلف پردازش فایل‌ها و قوانین)
17
+ # اینجا از مدل‌های هوش مصنوعی برای تحلیل اطلاعات استفاده می‌شود.
18
+ # فقط برای نمونه:
19
+ response = openai.Completion.create(
20
+ model="gpt-4",
21
+ prompt=user_input,
22
+ max_tokens=150
23
+ )
24
+ return response.choices[0].text.strip()
25
+
26
+ # تابع ایجاد رابط کاربری
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  def create_ui():
28
+ with gr.Column(): # استفاده از gr.Column به جای gr.Box
29
+ gr.Textbox(label="Enter your input here", lines=2, placeholder="Enter your text...")
30
+ gr.Button("Submit")
31
+
32
+ # عملکرد فرم برای ارسال ورودی و دریافت پاسخ
33
+ return gr.Interface(fn=process_input, inputs=gr.Textbox(label="User Input"), outputs=gr.Textbox(label="AI Response"))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
+ # راه‌اندازی رابط کاربری
36
  demo = create_ui()
37
  demo.launch()
38