§
    �Øj…  ã                   óL   — d Z ddlZddlZddlmZmZ ddlmZ d	d„Zd„ Z	d
d„Z
dS )uË  
PDF processing utilities - Main integration module
This module combines base PDF parsing and experimental feature extraction.

Interface:
    create_input_data_from_page(page, options=None)
    create_input_data_by_pymupdf(pdf_path=None, document=None, page_no=0, options=None)

Options dict keys (with defaults):
    input_type          : tuple   = ('text',)       â€” Element types: 'text', 'image', 'picture_clusters', 'vec_line', 'seg-image'
    feature_set_name    : str     = 'rf+imf'        â€” Features to extract: 'rf', 'imf', 'yf', 'jf' (combined with '+')
    max_image_num       : int     = 500             â€” Maximum number of images to extract
    max_vec_line_num    : int     = 200             â€” Maximum number of vector lines to extract
    feature_extractor   : object  = None            â€” ONNX model for image-based feature extraction
    bbox_num_threshold  : int     = 0               â€” Return early if bbox count exceeds this (0 = disabled)
é    Né   )Úextract_base_elementsÚmake_custom_feature)Úapply_feature_extractorsc                 ó¦  — |€i }|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      dd	¦  «        }|                      d
d¦  «        }|                      dd¦  «        }t          | |||¬¦  «        }t          |d         ¦  «        |cxk    rdk    rn nt          |¦  «         |S d}	|	rªt	          d¦  «         t          |d         |d         |d         ¦  «        }
t          |
¦  «        D ]Y\  }}|d         }|d         }|d         }t	          |› d|d         › d|d         › d|d         › d|d         › d|› d|› d�¦  «         ŒZt	          d¦  «         |rdd}d|v sd|v rD|                      d¦  «        }|�-|                      d|¬ ¦  «        }|d!         |d"<   |d#         |d$<   t          ||||| |¬%¦  «        }nt          |¦  «         d}|rÚddl	}| 
                    |¦  «         t          j        | j        j        ¦  «        }|| j                 }t          |d         |d         ¦  «        }d&}t          |¦  «        D ]S\  }}|d         }|d         }|                     ||d¬'¦  «         |                     |dd…         |› d(|› �|d)¬*¦  «         ŒT|                     d+¦  «         |S ),a@  
    Create input data from a PDF page with optional feature extraction.

    Pipeline:
    1. Extract base PDF elements (text, images, vectors, checkboxes)
    2. Optionally apply feature extractors (RF, IMF, YF, JF)

    Args:
        page: PyMuPDF page object
        options: Configuration dict. See module docstring for available keys.

    Returns:
        data_dict with guaranteed keys:
            bboxes, text, custom_features, page_width, page_height, image, file_path
        Optional keys (depending on options):
            stext_page, feature_map, box_type
    NÚ
input_type)ÚtextÚfeature_set_namezrf+imfÚmax_image_numiô  Úmax_vec_line_numéÈ   Úfeature_extractorÚbbox_num_thresholdr   )Úpager   r   r   ÚbboxesFzEXTRACTED BBOXESÚbox_typer	   r   é   z: [ú é   z] z "ú"zEND OF BBOXESÚyfÚymfÚ
stext_pageÚdict)ÚtextpageÚ
page_widthÚwidthÚpage_heightÚheight)Ú	data_dictr
   r   r   r   Ú	page_dict)r   r   r   )Úcolorr   z: é   )r"   Úfontsizezlayout_input.pdf)Úgetr   ÚlenÚ_ensure_custom_featuresÚprintÚzipÚ	enumerateÚget_textr   ÚpprintÚppÚpymupdfÚopenÚparentÚnameÚnumberÚ	draw_rectÚinsert_textÚez_save)r   Úoptionsr   r
   r   r   r   r   r    Údebug_extractionÚlistÚiÚinfoÚbboxÚtÚtxtr!   r   Úexport_markedup_imager,   ÚnewdocÚnewpageÚdataÚREDr1   s                            ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/pymupdf/layout/pymupdf_util.pyÚcreate_input_data_from_pagerD      sm  € ð$ €ØˆØ—’˜\¨9Ñ5Ô5€JØ—{’{Ð#5°xÑ@Ô@ÐØ—K’K °Ñ5Ô5€MØ—{’{Ð#5°sÑ;Ô;ÐØŸšÐ$7¸Ñ>Ô>ÐØ ŸšÐ%9¸1Ñ=Ô=Ðõ &ØØØ#Ø)ð	ñ ô €Iõ ˆ9�XÔÑÔÐ"4Ð8Ð8Ò8Ð8°qÒ8Ð8Ð8Ð8Ð8Ý 	Ñ*Ô*Ð*ØÐàÐØð ÝÐ Ñ!Ô!Ð!Ý�9˜XÔ&¨	°*Ô(=¸yÈÔ?PÑQÔQˆÝ  ‘”ð 	Qð 	Q‰GˆAˆtØ˜”7ˆDØ�Q”ˆAØ�q”'ˆCÝ�QÐOÐO˜4 œ7ÐOÐO T¨!¤WÐOÐO¨t°A¬wÐOÐO¸¸a¼ÐOÐOÀAÐOÐOÈÐOÐOÐOÑPÔPÐPÐPÝˆoÑÔÐð ð +àˆ	ØÐ#Ð#Ð# uÐ0@Ð'@Ð'@Ø"Ÿš |Ñ4Ô4ˆJØÐ%Ø ŸMšM¨&¸:˜MÑFÔF�	Ø%.¨|Ô%<�	˜'Ñ"Ø&/°Ô&>�	˜(Ñ#å,ØØ-Ø/Ø!ØØð
ñ 
ô 
ˆ	ˆ	õ 	  	Ñ*Ô*Ð*à!ÐØð +ØˆˆˆØ�	Š	�)ÑÔÐå”˜dœkÔ.Ñ/Ô/ˆØ˜œÔ%ˆÝ�9˜XÔ&¨	°*Ô(=Ñ>Ô>ˆØˆÝ  ‘”ð 	Qð 	Q‰GˆAˆtØ˜”7ˆDØ˜”7ˆDØ×Ò˜d¨#°QÐÑ7Ô7Ð7Ø×Ò  Q R R¤¨Q¨.¨.°$¨.¨.ÀÈaÐÑPÔPÐPÐPØ�ŠÐ)Ñ*Ô*Ð*àÐó    c                 ó:  — d| vr”g | d<   |                       dg ¦  «        }t          t          | d         ¦  «        ¦  «        D ]X}|t          |¦  «        k     r||         nd}| d         |         }| d                              t	          ||¦  «        ¦  «         ŒWdS dS )zŽ
    Ensure custom_features exists in data_dict for backward compatibility.
    Legacy code expects custom_features to always be present.
    Úcustom_featuresr   r   Úunknownr	   N)r%   Úranger&   Úappendr   )r    r   Úrow_idxÚbtr	   s        rC   r'   r'   u   s½   € ð
  	Ð)Ð)Ø')ˆ	Ð#Ñ$Ø—=’= ¨RÑ0Ô0ˆå�S ¨8Ô!4Ñ5Ô5Ñ6Ô6ð 	Oð 	OˆGØ&-µ°H±´Ò&=Ð&=�˜'Ô"Ð"À9ˆBØ˜VÔ$ WÔ-ˆDØÐ'Ô(×/Ò/Õ0CÀBÈÑ0MÔ0MÑNÔNÐNÐNð *Ð)ð	Oð 	OrE   c                 ó  — |€Pt           j                             | ¦  «        st          | › d�¦  «        ‚t	          j        | ¦  «        }||         }d}n|}||         }d}t          ||¬¦  «        }| |d<   |r|                     ¦   «          |S )aÝ  
    Create input data from a PDF file or document object.

    Args:
        pdf_path: Path to PDF file (if document is None)
        document: PyMuPDF document object (if provided, pdf_path is ignored for opening)
        page_no: Page number to process
        options: Configuration dict. See module docstring for available keys.

    Returns:
        data_dict with guaranteed keys:
            bboxes, text, custom_features, page_width, page_height, image, file_path
    Nz does not exist!TF)r   r6   Ú	file_path)ÚosÚpathÚexistsÚ	Exceptionr.   r/   rD   Úclose)Úpdf_pathÚdocumentÚpage_nor6   Údocr   Úshould_closer    s           rC   Úcreate_input_data_by_pymupdfrY   „   s    € ð ÐÝŒw�~Š~˜hÑ'Ô'ð 	;Ý˜xÐ9Ð9Ð9Ñ:Ô:Ð:ÝŒl˜8Ñ$Ô$ˆØ�7Œ|ˆØˆˆàˆØ�7Œ|ˆØˆå+°¸wÐGÑGÔG€IØ%€IˆkÑàð Ø�	Š	‰ŒˆàÐrE   )N)NNr   N)Ú__doc__rO   r.   Úpymupdf_util_baser   r   Úpymupdf_util_extr   rD   r'   rY   © rE   rC   ú<module>r^      s–   ððð ð" 
€	€	€	Ø €€€à IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 6Ð 6Ð 6Ð 6Ð 6Ð 6ðYð Yð Yð YðxOð Oð Oðð ð ð ð ð rE   