Reza-galaxy21's picture
Rename app.py to 002
e3cf94c verified
import os
import gradio as gr
import faiss
os.system("pip install pymupdf")
import fitz # PyMuPDF
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import OpenAIEmbeddings
from sentence_transformers import SentenceTransformer
# مدل برای embeddings
print("⏳ در حال بارگذاری مدل embeddings...")
model = SentenceTransformer("all-MiniLM-L6-v2")
print("✅ مدل embeddings بارگذاری شد.")
# تولید embeddings اولیه
try:
sample_text = ["نمونه متن برای تست"]
embeddings = model.encode(sample_text)
print(f"✅ Embeddings اولیه تولید شد: {embeddings.shape}")
except Exception as e:
print(f"❌ خطا در تولید embeddings: {e}")
embeddings = None
# بررسی دیتابیس FAISS
def load_database():
global embeddings
if embeddings is None or len(embeddings) == 0:
print("⚠️ خطا: لیست embeddings خالی است. FAISS مقداردهی نمی‌شود.")
return None
print("⏳ در حال مقداردهی FAISS...")
try:
faiss_db = FAISS.from_embeddings(embeddings, model)
print("✅ FAISS مقداردهی شد.")
return faiss_db
except Exception as e:
print(f"❌ خطا در مقداردهی FAISS: {e}")
return None
# بررسی اینکه دیتابیس از قبل وجود دارد یا خیر
if not os.path.exists("faiss_index"):
print("❌ دیتابیس وجود ندارد. ایجاد دیتابیس جدید...")
global_vector_db = load_database()
else:
print("✅ دیتابیس FAISS موجود است.")
# تابع پردازش فایل
def process_pdf(file):
try:
doc = fitz.open(file.name)
text = "\n".join([page.get_text() for page in doc])
print(f"✅ فایل پردازش شد. {len(text)} کاراکتر استخراج شد.")
return text
except Exception as e:
print(f"❌ خطا در پردازش PDF: {e}")
return "⚠️ خطا در پردازش فایل"
# رابط گرافیکی
with gr.Blocks() as demo:
gr.Markdown("# 🚀 ابزار تحلیل اسناد توزیع برق")
file_input = gr.File(label="آپلود فایل PDF", type="filepath")
output_text = gr.Textbox(label="📄 محتوای پردازش شده")
file_input.change(process_pdf, inputs=file_input, outputs=output_text)
# اجرای برنامه
if __name__ == "__main__":
print("🚀 برنامه در حال اجرا است...")
demo.launch()