Spaces:
Runtime error
Runtime error
| 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() |