Ë
    �Ìi÷	  ã                   óˆ   — d dl Z d dlZd dlZd dlZd dlmZ  ej                  e«      Zde	de
fd„Zde	de
fd„Zde	de
de
fd„Zy)	é    N)ÚUnionÚfile_contentÚreturnc                 óØ  — 	 t        j                  t        j                  | «      «      }d}t	        |j
                  «      D ]:  \  }}	 |j                  «       }|r	||dz   z  }nt        j                  d|› d�«       Œ< |S # t        $ r'}t        j                  d|› d|› �d¬«       Y d	}~Œjd	}~ww xY w# t        $ r-}t        j                  d
|› �d¬«       t        d|› �«      ‚d	}~ww xY w)z<
    Extracts text from a PDF file with error handling.
    Ú Ú
z No text extracted from PDF page ú.z$Error extracting text from PDF page ú: T©Úexc_infoNzFailed to parse PDF file: z&Invalid PDF format or corrupted file: )ÚPyPDF2Ú	PdfReaderÚioÚBytesIOÚ	enumerateÚpagesÚextract_textÚloggerÚwarningÚ	ExceptionÚerrorÚ
ValueError)r   Ú
pdf_readerÚtextÚiÚpageÚ	page_textÚpage_errÚes           ú6/var/www/html/strategist-ai/app/services/extraction.pyÚextract_text_from_pdfr!   	   sþ   € ðGÜ×%Ñ%¤b§j¡j°Ó&>Ó?ˆ
ØˆÜ  ×!1Ñ!1Ó2ò 	d‰GˆAˆtðdØ ×-Ñ-Ó/�	ÙØ˜I¨Ñ,Ñ,‘Dä—N‘NÐ%EÀaÀSÈÐ#JÔKøð	dð ˆøô ò dÜ—‘ÐCÀAÀ3ÀbÈÈ
ÐSÐ^b�×cÑcûðdûô ò GÜ�‰Ð1°!°Ð5ÀˆÔEÜÐAÀ!ÀÐEÓFÐFûðGúsB   ‚AB3 Á4B Á<B3 Â 	B0Â	B+Â&B3 Â+B0Â0B3 Â3	C)Â<(C$Ã$C)c                 ó  — 	 t        j                  t        j                  | «      «      }d}|j                  D ]  }||j
                  dz   z  }Œ |S # t        $ r-}t        j                  d|› �d¬«       t        d|› �«      ‚d}~ww xY w)z=
    Extracts text from a DOCX file with error handling.
    r   r   zFailed to parse DOCX file: Tr   z'Invalid DOCX format or corrupted file: N)
ÚdocxÚDocumentr   r   Ú
paragraphsr   r   r   r   r   )r   Údocr   Úparar   s        r    Úextract_text_from_docxr(      sŒ   € ðHÜ�m‰mœBŸJ™J |Ó4Ó5ˆØˆØ—N‘Nò 	%ˆDØ�D—I‘I Ñ$Ñ$‰Dð	%àˆøÜò HÜ�‰Ð2°1°#Ð6ÀˆÔFÜÐBÀ1À#ÐFÓGÐGûðHús   ‚AA Á	BÁ(BÂBÚfilenamec                 ó&  — t         j                  d|› �«       |j                  «       j                  d«      d   }|dk(  rt	        | «      S |dk(  rt        | «      S |dv r	 | j                  d«      S t         j                  d|› d|› �«       t        d|› d�«      ‚# t        $ rl t         j                  d|› d	�«       	 | j                  d
d¬«      cY S # t        $ r0}t         j                  d|› d|› �d¬«       t        d|› �«      ‚d}~ww xY ww xY w)zD
    Dispatcher for content extraction based on file extension.
    zExtracting content from: r	   éÿÿÿÿÚpdfr#   )ÚtxtÚmdÚjsonÚcsvzutf-8zUTF-8 decode failed for z, trying latin-1...zlatin-1Úignore)ÚerrorszFailed to decode text file r
   Tr   z$Unsupported encoding for text file: NzUnsupported file extension: z
 for file zUnsupported file format: z1. Supported types: PDF, DOCX, TXT, MD, JSON, CSV.)r   ÚinfoÚlowerÚsplitr!   r(   ÚdecodeÚUnicodeDecodeErrorr   r   r   r   )r   r)   Úextr   s       r    Úextract_text_from_bytesr9   ,   s4  € ô ‡K�KÐ+¨H¨:Ð6Ô7Ø
�.‰.Ó
×
 Ñ
  Ó
% bÑ
)€Cà
ˆe‚|Ü$ \Ó2Ð2Ø	�ŠÜ% lÓ3Ð3Ø	Ð,Ñ	,ð	TØ×&Ñ& wÓ/Ð/ô 	�‰Ð3°C°5¸
À8À*ÐMÔNÜÐ4°S°EÐ9jÐkÓlÐløô "ò 	TÜ�N‰NÐ5°h°ZÐ?RÐSÔTðTØ#×*Ñ*¨9¸XÐ*ÓFÒFøÜò TÜ—‘Ð:¸8¸*ÀBÀqÀcÐJÐUY�ÔZÜ Ð#GÈÀzÐ!RÓSÐSûðTúð		Tús0   Á B Â"DÂ>CÃDÃ	DÃ+DÄDÄD)r   r   r#   ÚloggingÚtypingr   Ú	getLoggerÚ__name__r   ÚbytesÚstrr!   r(   r9   © ó    r    ú<module>rB      sp   ðÛ 	Û Û Û Ý à	ˆ×	Ñ	˜8Ó	$€ðG¨ð G°#ó Gð*H¨ð H°3ó Hðm¨%ð m¸3ð mÀ3ô mrA   