
    wi                     *   d dl mZmZmZ d dlZd dlZdej        deeef         de	de	dej        f
dZ
d	ej        deeef         d
ededeej        eeef         f         f
dZde	de	d
edede	f
dZd	ej        dej        dej        fdZd	ej        dededeej        eef         fdZ	 dd	ej        dedeej        eef         fdZ	 dd	ej        dedeej        eef         fdZd	ej        dee	e	e	e	f         dej        fdZ G d de          ZdS )    )AnyDictTupleNdt_boxes	op_recordori_hori_wreturnc                    t          t          |                                                    D ]}||         }d|v rY|                    d          |                    d          }}| d d d d dfxx         |z  cc<   | d d d d dfxx         |z  cc<   gd|v rX|                    d          }|                    d          }	| d d d d dfxx         |	z  cc<   | d d d d dfxx         |z  cc<   t	          j        | dk     d|           } t	          j        | d	         |k    || d	                   | d	<   t	          j        | d
         |k    || d
                   | d
<   | S )Npaddingtopleftr      
preprocessratio_hratio_w).r   ).r   )reversedlistkeysgetnpwhere)
r   r   r   r	   opvr   r   r   r   s
             r/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/rapidocr/utils/process_img.pymap_boxes_to_originalr   
   s    tINN,,--.. 
) 
)bM??eaeeFmmCQQQ1W%QQQ1W$ReeI&&GeeI&&GQQQ1W(QQQ1W(x1a22Hx 05 8%&AQRRHVx 05 8%&AQRRHVO    imgwidth_height_ratio
min_heightc                     | j         d d         \  }}|dk    rd}n	||z  |k    }||k    s|r2t          ||||          }t          | ||ddf          }|dd|d<   ||fS ddd|d<   | |fS )N   Fr   )r   r   	padding_1)shapeget_padding_hadd_round_letterbox)	r   r   r   r    hwuse_limit_ratio	padding_h	block_imgs	            r   apply_vertical_paddingr-      s     9RaR=DAqRa%"44J/!!Q(:JGG	'iAq-IJJ	)2A!>!>	+)##%&22Ik	>r   r(   r)   c                     t          t          ||z            |          dz  }t          t          || z
            dz            }|S )Nr"   )maxintabs)r(   r)   r   r    new_hr+   s         r   r&   r&   6   sF    A**++Z881<EC	NNQ&''Ir   pointsc           
      @   t          t          t          j                            |d         |d         z
            t          j                            |d         |d         z
                                }t          t          t          j                            |d         |d         z
            t          j                            |d         |d         z
                                }t          j        ddg|dg||gd|gg                              t          j                  }t          j	        ||          }t          j
        | |||ft          j        t          j                  }|j        dd         \  }}|dz  |z  dk    rt          j        |          }|S )Nr   r   r"      )
borderModeflags      ?g      ?)r0   r/   r   linalgnormarrayastypefloat32cv2getPerspectiveTransformwarpPerspectiveBORDER_REPLICATEINTER_CUBICr%   rot90)	r   r3   img_crop_widthimg_crop_heightpts_stdMdst_imgdst_img_heightdst_img_widths	            r   get_rotate_crop_imagerK   <   s   INN6!9vay011INN6!9vay011	
 	
 N INN6!9vay011INN6!9vay011	
 	
 O hFQ_- 		
  fRZ  	#FG44A!		)'o  G %,M!A#$6!NMm+s22(7##Nr   min_side_lenmax_side_lenc                    | j         d d         \  }}t          ||          }dx}}||k    rt          | |          \  } }}| j         d d         \  }}t          ||          }||k     rt	          | |          \  } }}| ||fS )Nr"   r8   )r%   r/   reduce_max_sideminincrease_min_side)	r   rL   rM   r(   r)   	max_valuer   r   	min_values	            r   resize_image_within_boundsrT   _   s     9RaR=DAqAq		IGg< /\ B BWg9RaR=DAqAq		I< 1#| D DWg  r     c                 t   | j         d d         \  }}d}t          ||          |k    r+||k    rt          |          |z  }nt          |          |z  }t          ||z            }t          ||z            }t          t	          |dz            dz            }t          t	          |dz            dz            }	 t          |          dk    st          |          dk    rt          d          t          j        | ||f          } n!# t          $ r}t                      |d }~ww xY w||z  }||z  }	| ||	fS Nr"   r8       r   z/resize_w or resize_h is less than or equal to 0)	r%   r/   floatr0   roundResizeImgErrorr>   resize	Exception)
r   rM   r(   r)   ratioresize_hresize_wexcr   r   s
             r   rO   rO   o   S    9RaR=DAqE
1ayy<q55,''!+EE,''!+E1u9~~H1u9~~H5B''",--H5B''",--H(x==AX!!3!3 !RSSSjx233 ( ( (C'( (lG(lG     =AD
 

D(D##D(   c                 t   | j         d d         \  }}d}t          ||          |k     r+||k     rt          |          |z  }nt          |          |z  }t          ||z            }t          ||z            }t          t	          |dz            dz            }t          t	          |dz            dz            }	 t          |          dk    st          |          dk    rt          d          t          j        | ||f          } n!# t          $ r}t                      |d }~ww xY w||z  }||z  }	| ||	fS rW   )	r%   rP   rY   r0   rZ   r[   r>   r\   r]   )
r   rL   r(   r)   r^   r_   r`   ra   r   r   s
             r   rQ   rQ      rb   rc   padding_tuplec           	          t          j        | |d         |d         |d         |d         t           j        d          }|S )Nr   r   r"   r5   )r   r   r   )value)r>   copyMakeBorderBORDER_CONSTANT)r   rf   
padded_imgs      r   r'   r'      sO     #aaaa  J r   c                       e Zd ZdS )r[   N)__name__
__module____qualname__ r   r   r[   r[      s        Dr   r[   )rU   )rd   )typingr   r   r   r>   numpyr   ndarraystrr0   r   rY   r-   r&   rK   rT   rO   rQ   r'   r]   r[   rp   r   r   <module>ru      s   $ # # # # # # # # # 



    j%)#s(^<?HKZ   *	CH~  	
 2:tCH~%&   .S S e  SV     rz  2:  "*        F!	!#(!8=!
2:ue#$! ! ! !" ,0! !	!#(!
2:ue#$! ! ! !> ,.! !	!#(!
2:ue#$! ! ! !<	$)#sC*<$=Z   	 	 	 	 	Y 	 	 	 	 	r   