# -*- 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)}"