
    NgL                     N   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ ej                            d ed           ed	          g          d
             Zd Zd Zd Zd Zej                            dg d          d             Zd Zd Zd Zd Zd Zd ZdS )    )mockN)example_doc_path)TableAlignment)TableEvalProcessor)eval_table_transformer_for_fileimage_or_pdf_to_dataframefilename$img/table-multi-row-column-cells.pngz$pdf/table-multi-row-column-cells.pdfc                 >    t          |           }g d|j        v sJ d S )N)Blind514z
34.5%, n=1z1199 sec, n=1)r   values)r	   dfs     j/var/www/html/ai-engine/env/lib/python3.11/site-packages/test_unstructured/metrics/test_table_structure.pytest_image_or_pdf_to_dataframer      s0     
#8	,	,BBBBbiOOOOOO    c                  |    t          t          d          t          d                    } d| cxk     rdk     sn J d S )Nr
   z'table-multi-row-column-cells-actual.csvg?   )r   r   )scores    r   $test_eval_table_transformer_for_filer      sJ    +?@@BCC E
 ????????????r   c                  F   dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t          | |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )NTabletext_as_htmlz<table><thead><tr><th>r1c1</th><th>r1c2</th></tr></thead>
                    <tbody><tr><td>r2c1</td><td>r2c2</td></tr></tbody></table>typemetadata$ee862c7a-d27e-4484-92de-4faa42a63f3br   r   r1c1idxywhcontent$6237ac7b-bfc8-40d2-92f2-d138277205e2r2c1$9d0933a9-5984-4cad-80d9-6752bf9bc4dfr1c2$1152d043-5ead-4ab8-8b88-888d48831ac2r2c2r   text      ?r   process_filetotal_tablestable_level_accelement_row_level_index_accelement_col_level_index_accelement_row_level_content_accelement_col_level_content_acc
predictionground_truthte_processorresults       r    test_table_eval_processor_simpler>   $   s^     !R	
 	
J  A%  A%  A%  A% 3!$	
 $	
&LP &j,??L&&((F!####!S((((-4444-4444/36666/3666666r   c                     ddddddddddddddddddddddddd	dgid
g} ddddddddddddddddddddd	ddddddddgdg}t          | |d          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   table_as_cellsr   r-   )r#   r$   r%   r&   r'   r   r    r)   r+   r   r   r!   r(   r*   r,   r.   cellssource_typer0   r1   r9   s       r   4test_table_eval_processor_simple_when_input_as_cellsrD   a   s     #)  #)  #)  #) -#"	
 "	
$JP  A%  A%  A%  A% 3!$	
 $	
&LP &j,GTTTL&&((F!####!S((((-4444-4444/36666/3666666r   c                      ddg idg} dg dg}t          | |d          }t          j        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Nr   r@   r   r.   
wrong_typerB   )r   pytestraises
ValueErrorr2   )r:   r;   r<   s      r   0test_table_eval_processor_when_wrong_source_typerJ      s     )2.	
 	
J 	
 	
L &j,LYYYL	z	"	" $ $!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AA #A r   )a1  
<table>
    <thead>
        <tr>
            <th>r1c1</th>
            <th>r1c2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
a  
<table>
    <tr>
        <th>r1c1</th>
        <th>r1c2</th>
    </tr>
    <tbody>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
a  
<table>
    </tbody>
        <tr>
            <td>r1c1</td>
            <td>r1c2</td>
        </tr>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
c                 f   dd| idg}ddddddddd	ddddd
dddddddddddddddddddddddddddddgdg}t          ||          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   r   r   r   r   r    r!   r(   r)   r*   r+   r,   r-   z$364f4a17-2979-4506-ae77-e8adf8e3f554   r3c1z$30f87503-ac1f-4db1-b924-b316af585702r3c2r.   r0   r1   )r   r:   r;   r<   r=   s        r   7test_table_eval_processor_various_table_html_structuresrO      s   | #0NOOPJ  A%  A%  A%  A%  A%  A% S14	
 4	
6Lp &j,??L&&((F!####!S((((-4444-4444/36666/3666666r   c                  F   dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t          | |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   z
<table>
    <thead>
        <tr>
            <th>11</th>
            <th>12</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>21</td>
            <td>22</td>
        </tr>
    </tbody>
</table>r   r   r   r   11r!   r(   21r*   12r,   22r.   r0   r1   r9   s       r   1test_table_eval_processor_non_str_values_in_tablerU   P  s]     !	
 	
J2  A#  A#  A#  A# 3!$	
 $	
&LP &j,??L&&((F!####!S((((-4444-4444/36666/3666666r   c                     dddidg} ddddddd	d
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
gd g}t          | |          }|                                }|j        dk    sJ |j        d!k    sJ |j        d!k    sJ |j        d!k    sJ |j        d!k    sJ |j        d!k    sJ d S )"Nr   r   a  
<table>
    <thead>
        <tr>
            <th rowspan="2">r1c1</th>
            <th>r1c2</th>
            <th colspan="2">r1c3</th>
        </tr>
        <tr>
            <th>r2c2</th>
            <th>r2c3</th>
            <th>r2c4</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
            <td colspan="2" rowspan="2">r3c3</td>
        </tr>
        <tr>
            <td>r4c1</td>
            <td>r4c2</td>
        </tr>
    </tbody>
</table>
r   z$f399ef57-5b88-4509-8971-9cb63246866er   r   rL   r    r!   z$2dfdec2f-e8f3-4be7-a6ac-8ff21c4e8556rM   z$9c771c58-88c7-49d8-9c12-85d0e44b920e   r4c1z$5bd6f3f0-34c5-495b-8a28-c4ac96989ef8r+   z$7b8e6bc2-a310-4dd6-997c-313f951e7f96r-   z$1c152ad4-12fa-4a7b-90de-a992aa6410a4rN   z$55063f64-0003-4217-b6ca-aff5914793ffr4c2z$22852e86-0e22-4d32-b63a-9ba7dd4118a2r1c3z$eae013c5-5597-4a8b-9771-82e28c5c5cbar2c3z$0dea3a42-8523-4d6e-9e70-d65cc2314678r3c3z$60093e2c-d3e2-4146-92b5-97a2fc16c061r2c4r.   r0   r1   r9   s       r   &test_table_eval_processor_merged_cellsr^     s<     !	
 	
!JJ  A%  A%  A%  A%  A%  A%  A%  A%  A%  A%  A% cY\	
 \	
^L@ &j,??L&&((F!####!S((((-4444-4444/36666/3666666r   c                     dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t           j                            t          d          5 }dg|_        t          | |          }|                                }d d d            n# 1 swxY w Y   |j        dk    sJ |j        dk    sJ |j	        dk    sJ |j
        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   *<table><tr><td>Some cell</td></tr></table>r   r   r   r   rQ   r!   r(   rR   r*   rS   r,   rT   r.   get_table_level_alignment)r   patchobjectr   return_valuer   r2   r3   r4   r5   r6   r7   r8   )r:   r;   align_fnr<   r=   s        r   1test_table_eval_processor_when_no_match_with_predrg   (  s    ')YZ	
 	
J  A#  A#  A#  A# 3!$	
 $	
&LP 
		>+F	G	G -8!#)*lCC**,,- - - - - - - - - - - - - - -
 !####!Q&&&&-2222-2222/14444/1444444s   -BBBc                  f   i g} i g}t          | |          }|                                }|j        dk    sJ |j        dk    sJ t	          j        |j                  sJ t	          j        |j                  sJ t	          j        |j                  sJ t	          j        |j	                  sJ d S )Nr   r   )
r   r2   r3   r4   npisnanr5   r6   r7   r8   r9   s       r   (test_table_eval_processor_when_no_tablesrk   e  s    J4L%j,??L&&((F!####!Q&&&&8F6777778F6777778F8999998F89999999r   c                  :   g } dddddddddddddddd	ddddd
ddddddddgdg}t          | |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   r   r   rQ   r!   r(   rR   r*   rS   r,   rT   r.   r1   r9   s       r   &test_table_eval_processor_when_only_gtrm   t  s?   J  A#  A#  A#  A# 3!$	
 $	
&LP &j,??L&&((F!####!Q&&&&-2222-2222/14444/1444444r   c                      dddidg} i g}t          | |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   r`   r   r   r1   r9   s       r   (test_table_eval_processor_when_only_predro     s     ')YZ	
 	
J 4L%j,??L&&((F!####!Q&&&&-2222-2222/14444/1444444r   )unittestr   numpyri   rG   test_unstructured.unit_utilsr   *unstructured.metrics.table.table_alignmentr   %unstructured.metrics.table.table_evalr   $unstructured.metrics.table_structurer   r   markparametrizer   r   r>   rD   rJ   rO   rU   r^   rg   rk   rm   ro    r   r   <module>ry      s              9 9 9 9 9 9 E E E E E E D D D D D D        ?@@?@@ P P P
  :7 :7 :7zV7 V7 V7r$ $ $( 9 9 9< <zB7 B7{< <zB7JG7 G7 G7TK7 K7 K7\:5 :5 :5z: : :35 35 35l5 5 5 5 5r   