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