File size: 4,463 Bytes
25d2b3e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# -*- 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)}" |