Spaces:
Paused
Paused
| # -*- coding: utf-8 -*- | |
| """ | |
| خدمة استخراج النص من المستندات | |
| هذا الملف يحتوي على الفئة المسؤولة عن استخراج النص من أنواع مختلفة من المستندات. | |
| """ | |
| import os | |
| import logging | |
| class TextExtractor: | |
| """فئة استخراج النص من المستندات""" | |
| def __init__(self, config=None): | |
| """ | |
| تهيئة مستخرج النص | |
| المعلمات: | |
| config (dict): إعدادات مستخرج النص | |
| """ | |
| self.config = config or {} | |
| self.logger = logging.getLogger(__name__) | |
| def extract(self, file_path): | |
| """ | |
| استخراج النص من ملف بناءً على نوع الملف | |
| المعلمات: | |
| file_path (str): مسار الملف | |
| العوائد: | |
| str: النص المستخرج | |
| """ | |
| _, ext = os.path.splitext(file_path) | |
| ext = ext.lower() | |
| if ext == '.pdf': | |
| return self.extract_from_pdf(file_path) | |
| elif ext in ('.doc', '.docx'): | |
| return self.extract_from_docx(file_path) | |
| elif ext in ('.jpg', '.jpeg', '.png'): | |
| return self.extract_from_image(file_path) | |
| else: | |
| self.logger.warning(f"نوع ملف غير مدعوم: {ext}") | |
| return f"نوع ملف غير مدعوم: {ext}" | |
| def extract_from_pdf(self, file_path): | |
| """ | |
| استخراج النص من ملف PDF | |
| المعلمات: | |
| file_path (str): مسار ملف PDF | |
| العوائد: | |
| str: النص المستخرج | |
| """ | |
| self.logger.info(f"جاري استخراج النص من ملف PDF: {file_path}") | |
| try: | |
| # في البيئة الحقيقية، استخدم مكتبة مناسبة مثل PyPDF2 أو pdfplumber | |
| # محاكاة الاستخراج للعرض | |
| return f"هذا نص مستخرج من ملف PDF: {os.path.basename(file_path)}\n\nيتم استخراج النص من الملف باستخدام مكتبة مناسبة في البيئة الحقيقية." | |
| except Exception as e: | |
| self.logger.error(f"خطأ في استخراج النص من PDF: {str(e)}") | |
| return f"حدث خطأ أثناء استخراج النص: {str(e)}" | |
| def extract_from_docx(self, file_path): | |
| """ | |
| استخراج النص من ملف Word | |
| المعلمات: | |
| file_path (str): مسار ملف Word | |
| العوائد: | |
| str: النص المستخرج | |
| """ | |
| self.logger.info(f"جاري استخراج النص من ملف Word: {file_path}") | |
| try: | |
| # في البيئة الحقيقية، استخدم مكتبة مناسبة مثل python-docx | |
| # محاكاة الاستخراج للعرض | |
| return f"هذا نص مستخرج من ملف Word: {os.path.basename(file_path)}\n\nيتم استخراج النص من الملف باستخدام مكتبة مناسبة في البيئة الحقيقية." | |
| except Exception as e: | |
| self.logger.error(f"خطأ في استخراج النص من Word: {str(e)}") | |
| return f"حدث خطأ أثناء استخراج النص: {str(e)}" | |
| def extract_from_image(self, file_path): | |
| """ | |
| استخراج النص من ملف صورة باستخدام OCR | |
| المعلمات: | |
| file_path (str): مسار ملف الصورة | |
| العوائد: | |
| str: النص المستخرج | |
| """ | |
| self.logger.info(f"جاري استخراج النص من ملف صورة: {file_path}") | |
| try: | |
| # في البيئة الحقيقية، استخدم مكتبة مناسبة مثل pytesseract | |
| # محاكاة الاستخراج للعرض | |
| return f"هذا نص مستخرج من ملف صورة: {os.path.basename(file_path)}\n\nيتم استخراج النص من الصورة باستخدام تقنية OCR في البيئة الحقيقية." | |
| except Exception as e: | |
| self.logger.error(f"خطأ في استخراج النص من الصورة: {str(e)}") | |
| return f"حدث خطأ أثناء استخراج النص: {str(e)}" |