
    Ng                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ erd dlmZ 	 	 d%d&dZ	 	 	 d'd(dZ	 	 d)d*d!Zd+d$ZdS ),    )annotations)TYPE_CHECKINGOptional)Source)
TextRegionTextRegions)LayoutElementpartition_groups_from_regions)ElementType)	RectangleNx1int | floaty1x2y2textOptional[str]sourceOptional[Source]returnr   c                6    t          j        | |||||          S ) )r   r   )r   from_coords)r   r   r   r   r   r   s         l/var/www/html/ai-engine/env/lib/python3.11/site-packages/unstructured/partition/pdf_image/inference_utils.pybuild_text_region_from_coordsr      s"     !"b"btFKKKK    bbox'Rectangle'element_typer	   c                (    t          | |||          S )r   )r   r   r   type)r	   r   r   r   r   s       r   build_layout_elementr#      s     df<PPPPr   Focr_regionslist[TextRegion]ocr_textgroup_by_ocr_textboollist[LayoutElement]c                   |r|                     d          }g }|D ]}g }|                    dd                                           }| D ]>}|s n9|j        |v r/|                    |           |                    |j                   ?|sp|D ]}	|                     |	           |                    t          j        |                     n!t          t          j        |                     }d |D             }
d |
D             S )z.
    Get layout elements from OCR regions
    z


 c                ,    g | ]}t          |          S  )merge_text_regions).0groups     r   
<listcomp>z:build_layout_elements_from_ocr_regions.<locals>.<listcomp>I   s!    MMME(//MMMr   c                f    g | ].}t          |j        |j        |j        t          j                   /S )r"   )r#   r   r   r   r   UNCATEGORIZED_TEXT)r0   rs     r   r2   z:build_layout_elements_from_ocr_regions.<locals>.<listcomp>J   sK         	afQXKDb	
 	
 	
  r   )splitreplacer   appendremover   	from_listr
   )r$   r&   r'   text_sectionsgrouped_regionstext_sectionregionswords
ocr_regionr5   merged_regionss              r   &build_layout_elements_from_ocr_regionsrB   )   sS     \ v..) 	C 	CLG ((s3399;;E) 2 2
 E?e++NN:...LL111  & &""1%%%%"";#8#A#ABBBB!	C$ 88Mk8Z8Z[[MM_MMMN   	   r   r>   r   c                4   | st          d          | j                                                            t                    }| j                                                            t                    }| j                                                            t                    }| j                                                            t                    }d	                    d | j
        D                       }| j        }t          j        ||||||          S )z
    Merge a list of TextRegion objects into a single TextRegion.

    Parameters:
    - group (TextRegions): A group of TextRegion objects to be merged.

    Returns:
    - TextRegion: A single merged TextRegion object.
    z/The text regions to be merged must be provided.r,   c                    g | ]}||S r.   r.   )r0   r   s     r   r2   z&merge_text_regions.<locals>.<listcomp>e   s    CCCTdCDCCCr   )
ValueErrorr   minastypefloatr   r   maxr   jointextsr   r   r   )r>   min_x1min_y1max_x2max_y2merged_textr   s          r   r/   r/   R   s      LJKKKZ^^$$U++FZ^^$$U++FZ^^$$U++FZ^^$$U++F((CCW]CCCDDK^F!&&&&+vVVVr   )NN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNN)
r   r   r   r   r   r   r   r   r   r	   )NF)r$   r%   r&   r   r'   r(   r   r)   )r>   r   r   r   )
__future__r   typingr   r    unstructured_inference.constantsr   )unstructured_inference.inference.elementsr   r   .unstructured_inference.inference.layoutelementr	   r
   unstructured.documents.elementsr   r   r   r#   rB   r/   r.   r   r   <module>rW      sE   " " " " " " * * * * * * * * 3 3 3 3 3 3 M M M M M M M M       
 8 7 7 7 7 7 DCCCCCC #	L 	L 	L 	L 	L #"&	Q Q Q Q Q ##& & & & &RW W W W W Wr   