| |
| """ |
| خدمة استخراج النص من المستندات |
| |
| هذا الملف يحتوي على الفئة المسؤولة عن استخراج النص من أنواع مختلفة من المستندات. |
| """ |
|
|
| 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: |
| |
| |
| 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: |
| |
| |
| 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: |
| |
| |
| return f"هذا نص مستخرج من ملف صورة: {os.path.basename(file_path)}\n\nيتم استخراج النص من الصورة باستخدام تقنية OCR في البيئة الحقيقية." |
| except Exception as e: |
| self.logger.error(f"خطأ في استخراج النص من الصورة: {str(e)}") |
| return f"حدث خطأ أثناء استخراج النص: {str(e)}" |