Spaces:
Runtime error
Runtime error
File size: 2,574 Bytes
81ad41f c4a1d8e 3f1f23f bf83b33 24952a9 3be32e1 3f1f23f c4a1d8e 3f1f23f 24952a9 3be32e1 3f1f23f 029ed15 3f1f23f 029ed15 3f1f23f 24952a9 3f1f23f 029ed15 3be32e1 3f1f23f 029ed15 3f1f23f 029ed15 3f1f23f fc7f76e 3f1f23f c4a1d8e 029ed15 3f1f23f 3be32e1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
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() |