Spaces:
Paused
Paused
| """ | |
| خدمة استخراج النصوص من المستندات | |
| """ | |
| import os | |
| import PyPDF2 | |
| import docx | |
| import pandas as pd | |
| from pathlib import Path | |
| import config | |
| class TextExtractor: | |
| """استخراج النصوص من المستندات المختلفة""" | |
| def __init__(self): | |
| pass | |
| def extract_from_pdf(self, file_path): | |
| """استخراج النص من ملف PDF""" | |
| text = "" | |
| try: | |
| with open(file_path, 'rb') as file: | |
| pdf_reader = PyPDF2.PdfReader(file) | |
| for page_num in range(len(pdf_reader.pages)): | |
| page = pdf_reader.pages[page_num] | |
| text += page.extract_text() + "\n\n" | |
| except Exception as e: | |
| print(f"خطأ في استخراج النص من PDF: {str(e)}") | |
| return "" | |
| return text | |
| def extract_from_docx(self, file_path): | |
| """استخراج النص من ملف Word""" | |
| text = "" | |
| try: | |
| doc = docx.Document(file_path) | |
| for para in doc.paragraphs: | |
| text += para.text + "\n" | |
| except Exception as e: | |
| print(f"خطأ في استخراج النص من DOCX: {str(e)}") | |
| return "" | |
| return text | |
| def extract_from_excel(self, file_path): | |
| """استخراج البيانات من ملف Excel""" | |
| try: | |
| # قراءة جميع الصفحات | |
| excel_data = pd.read_excel(file_path, sheet_name=None) | |
| # تجميع البيانات من جميع الصفحات | |
| text = "" | |
| for sheet_name, sheet_data in excel_data.items(): | |
| text += f"صفحة: {sheet_name}\n" | |
| text += sheet_data.to_string(index=False) + "\n\n" | |
| except Exception as e: | |
| print(f"خطأ في استخراج النص من Excel: {str(e)}") | |
| return "" | |
| return text | |
| def extract_from_text(self, file_path): | |
| """استخراج النص من ملف نصي""" | |
| try: | |
| with open(file_path, 'r', encoding='utf-8') as file: | |
| text = file.read() | |
| except Exception as e: | |
| print(f"خطأ في استخراج النص من الملف النصي: {str(e)}") | |
| return "" | |
| return text | |
| def extract_text(self, file_path): | |
| """استخراج النص من أي نوع ملف مدعوم""" | |
| file_ext = Path(file_path).suffix.lower() | |
| if file_ext == '.pdf': | |
| return self.extract_from_pdf(file_path) | |
| elif file_ext in ['.docx', '.doc']: | |
| return self.extract_from_docx(file_path) | |
| elif file_ext in ['.xlsx', '.xls']: | |
| return self.extract_from_excel(file_path) | |
| elif file_ext == '.txt': | |
| return self.extract_from_text(file_path) | |
| else: | |
| print(f"نوع الملف غير مدعوم: {file_ext}") | |
| return "" |