CoolFace
Apppublic

CultriX/Generate-Knowledge-Graphs

sourceHugging Facemitupdated 1y agoView on Hugging Face
3likes
document_processor.cpython-312.pyc28 linesDownload Raw Back to __pycache__
12o�oh���\�ddlZddlZddlmZmZmZddlZddlmZddl	m3Z4Gd�d�Zy)�N)�List�Dict�Any)�Document)�Configc5��eZdZd�Zdedefd�Zdedefd�Zdedefd�Zdedefd�Z	dedefd�Z6dedefd	�Zd7edeefd�Z
ddeed
edeeeeffd�Zy)�DocumentProcessorc�"�t�|_y)N)r�config)�selfs �IC:\Users\jesse\Documents\Cline\knowledge-graphs\src\document_processor.py�__init__zDocumentProcessor.__init__	s���h����	file_path�returnc�x�tjj|�dz}||jjkS)z$Validate file size is within limits.i)�os�path�getsizer�MAX_FILE_SIZE_MB)rr�file_size_mbs   r
�validate_file_sizez$DocumentProcessor.validate_file_sizes.���w�w���y�1�[�A���t�{�{�;�;�;�;rc��|j|�s#td|jj�d���tj8j
|�dj�}|dk(r|j|�S|dk(r|j|�S|dk(r|j|�S|dk(r|j|�Std|����)	z.Load document content based on file extension.zFile size exceeds zMB limit�z.pdfz.docxz.txtz.jsonzUnsupported file format: )r�9ValueErrorrrrr�splitext�lower�	_load_pdf�10_load_docx�	_load_txt�11_load_json)rr�file_exts   r
�
load_documentzDocumentProcessor.load_documents����&�&�y�1��1�$�+�+�2N�2N�1O�x�X�Y�Y��7�7�#�#�I�.�q�1�7�7�9���v���>�>�)�,�,�
��
 ��?�?�9�-�-�
��
��>�>�)�,�,�
��
 ��?�?�9�-�-��8��12�C�D�Drc��d}tj|�5}|jD]}|j�}|s�||dzz
}�	ddd�|S#1swY|SxYw)zLoad PDF content.��13N)�14pdfplumber�open�pages�extract_text)rr�text�pdf�page�	page_texts      r
rzDocumentProcessor._load_pdf#s\����
�_�_�Y�
'�3��	�	�� �-�-�/�	���I��,�,�D�"�(�15��(�16��s�"A�17A�Ac�f�t|�}d}|jD]}||jdzz
}�|S)zLoad DOCX content.r%r&)r�18paragraphsr+)rr�docr+�	paragraphs     r
rzDocumentProcessor._load_docx-s7���y�!�������I��I�N�N�T�)�)�D�(��rc�j�t|dd��5}|j�cddd�S#1swYyxYw)zLoad TXT content.�r�utf-8��encodingN)r(�read)rr�files   r
r zDocumentProcessor._load_txt5s%��
�)�S�7�
3�t��9�9�;�4�
3�
3�s�)�2c��t|dd��5}tj|�}tj|d��cddd�S#1swYyxYw)z&Load JSON content and convert to text.r4r5r6�)�indentN)r(�json�load�dumps)rrr9�datas    r
r!zDocumentProcessor._load_json:s7��
�)�S�7�
3�t��9�9�T�?�D��:�:�d�1�-�4�
3�
3�s�,A�Ar+c�X�t|�|jjkr|gSg}d}|t|�kr�||jjz}|t|�krl|jd||�}|dk(r|jd||�}|dk(r|jd||�}|dk7r$|||jjdzzkDr|dz}|||j	�}|r|j|�||jjz19}|t|�k\r	|S|t|�kr��|S)z2Split text into overlapping chunks for processing.r�.������!�?r;r)�lenr�20CHUNK_SIZE�rfind�strip�append�
CHUNK_OVERLAP)rr+�chunks�start�end�sentence_end�chunks       r
�21chunk_textzDocumentProcessor.chunk_text@s*���t�9����.�.�.��6�M������c�$�i���$�+�+�0�0�0�C��S��Y��#�z�z�#�u�c�:���2�%�#'�:�:�c�5�#�#>�L��2�%�#'�:�:�c�5�#�#>�L��2�%�,�����AW�AW�[\�A\�9\�*\�&��*�C���s�O�)�)�+�E���
�
�e�$��$�+�+�3�3�3�E���D�	�!���
�/�c�$�i��.�
r�22file_paths�23batch_modec��g}|D]@}	|j|�}|j|�}|j|||dd��|s|S�B|S#t$r*}|j|dgdt	|�d��Yd}~�sd}~wwxYw)zProcess multiple documents.�success)r�contentrL�statusr%�error)rrVrLrWrXN)r#rQrJ�	Exception�str)rrRrS�resultsrrVrL�es        r
�process_documentsz#DocumentProcessor.process_documentsas�����#�I�
��,�,�Y�7������1�����!*�&�$�'�	 ��"����"�$�0����
����!*�!� �%� ��V� ����
�s�:A24�25	A=� A8�8A=N)F)�__name__�26__module__�__qualname__rrZ�boolrr#rrr r!rrQrrr]�rr
r	r	s����<�C�<�D�<�27E�s�E�s�E�$�3��3���C��C���3��3��28.�C�.�C�.��s��t�C�y��B�D��I��4��TX�Y]�^a�cf�^f�Yg�Th�rr	)rr=�typingrrrr'�docxr�config.settingsrr	rbrr
�<module>rfs&��	��"�"���"�u�ur