|
|
|
""" |
|
خدمة استخراج النص من المستندات |
|
|
|
هذا الملف يحتوي على الفئة المسؤولة عن استخراج النص من أنواع مختلفة من المستندات. |
|
""" |
|
|
|
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)}" |