
    Ng=                        d dl Z d dl mZmZ d dlm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 e j        	 	 	 d]d
ededededef
d            Z	 d^d
eeej        f         dee         fdZ ej        g g dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dg dJg dKg dLg dMg dNg dg dOg dPg dQg dRg dSg dg dTg dUg dVg dWg dXg dYg dZg dg d[g d\                              ej                  ZdS )_    N)OptionalUnion)	ImageFont)Image)	ImageDraw)
TextRegionred   Fimageelementcolordetailsreturnc                     	 |                                  }t          |          }|j        j        \  }}}	}t	          |d|          }
|rUt	          |dd          }t	          |dd          }t          j        dd          }|                    || d| |
|	           |                    ||	f|
|
           nU# t          $ r$ t          d           t          | |||          }Y n(t          $ r}t          d|            Y d}~nd}~ww xY w|S )zDraws bounding box in imager   sourceUnknowntype zKeyboard.ttf    )textfillfont)outlinewidthz+Failed to find font file. Skipping details.zFailed to draw bounding box: N)copyr   bboxcoordinatesgetattrr   truetyper   	rectangleOSErrorprint	draw_bbox	Exception)r   r   r   r   r   imgdrawtopleft_bottomrightcr   r   kbdes                  \/var/www/html/ai-engine/env/lib/python3.11/site-packages/unstructured_inference/visualize.pyr$   r$      sJ   3jjll~~%,\%="KGWe,, 	JWh	::F7FB//D$^R88CIIgt$6$6f$6$6QSIIII-qFFFF 6 6 6;<<<wu55 3 3 31a11222222223Js   B6B9 9+D&	D/DDdesired_widthc                 z   t          | t                    r| j        \  }}n5t          | t          j                  r| j        \  }}}nt          d          |r%||z  }||z  }t          j        ||f          \  }}nt          j                    \  }}|	                    |            t          j
                     dS )a  
    Display an image using matplotlib with an optional desired width while maintaining the aspect
     ratio.

    Parameters:
    - image (Union[Image, np.ndarray]): An image in PIL Image format or a numpy ndarray format.
    - desired_width (Optional[int]): Desired width for the display size of the image.
        If provided, the height is calculated based on the original aspect ratio.
        If not provided, the image will be displayed with its original dimensions.

    Raises:
    - ValueError: If the provided image type is neither PIL Image nor numpy ndarray.

    Returns:
    - None: The function displays the image using matplotlib but does not return any value.
    zUnsupported Image Type)figsizeN)
isinstancer   sizenpndarrayshape
ValueErrorpltsubplotsimshowshow)	r   r/   image_widthimage_heightr)   aspect_ratiodesired_heightfigaxs	            r.   	show_plotrB   ,   s    ( % 3$)J!\\	E2:	&	& 3',{$k111222 	!"\1&5 ,~'FGGGRR ,..RIIeHJJJJJ    )        gS㥛?ʡE?)g333333?g?gJ+?)g|?5^?gh|?5?g      ?)gV-?Zd;O?gn?)gm?g rh?gMb?)g$C?gףp=
?gB`"?)gRQ?g+?rF   )333333?rG   rG   )333333?rH   rH   )      ?rD   rD   )rI         ?rD   )+?rK   rD   )rD   rI   rD   )rD   rD   rI   )MbX?rD   rI   )Zd;O?rM   rD   )rM   rL   rD   )rM   rI   rD   )rL   rM   rD   )rL   rL   rD   )rL   rI   rD   )rI   rM   rD   )rI   rL   rD   )rI   rI   rD   )rD   rM   rJ   )rD   rL   rJ   )rD   rI   rJ   )rM   rD   rJ   )rM   rM   rJ   )rM   rL   rJ   )rM   rI   rJ   )rL   rD   rJ   )rL   rM   rJ   )rL   rL   rJ   )rL   rI   rJ   )rI   rD   rJ   )rI   rM   rJ   )rI   rL   rJ   )rI   rI   rJ   )rD   rM   rI   )rD   rL   rI   )rD   rI   rI   )rM   rD   rI   )rM   rM   rI   )rM   rL   rI   )rM   rI   rI   )rL   rM   rI   )rL   rL   rI   )rL   rI   rI   )rI   rD   rI   )rI   rM   rI   )rI   rL   rI   )rM   rD   rD   )rJ   rD   rD   )rL   rD   rD   )-?rD   rD   )rD   K7A`?rD   )rD   rM   rD   )rD   rJ   rD   )rD   rL   rD   )rD   rN   rD   )rD   rD   rO   )rD   rD   rM   )rD   rD   rJ   )rD   rD   rL   )rD   rD   rN   )rD   rD   rD   )M?rP   rP   )M?rQ   rQ   )~jt?rR   rR   )ʡE?rS   rS   )+?rT   rT   )Cl?rU   rU   )gjt?gl?rE   )rJ   rJ   r   )r	   r
   F)N)typingr   r   matplotlib.pyplotpyplotr8   numpyr4   PILr   	PIL.Imager   PIL.ImageDrawr   )unstructured_inference.inference.elementsr   no_type_checkstrboolr$   r5   intrB   arrayastypefloat32_COLORS rC   r.   <module>rg      s    " " " " " " " "                       # # # # # # @ @ @ @ @ @  
  
     : $(' '
"#'C=' ' ' 'T "(QQQ 	Q 		Q
 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q  	!Q" 	#Q$ 	%Q& 	'Q( 	)Q* 	+Q, 	-Q. 	/Q0 	1Q2 	3Q4 	5Q6 	7Q8 	9Q: 	;Q< 	=Q> 	?Q@ 	AQB 	CQD 	EQF 	GQH 	IQJ 	KQL 	MQN 	OQP 	QQR 	SQT 	UQV 	WQX 	YQZ 	[Q\ 	]Q^ 	_Q` 	aQb 	cQd 	eQf 	gQh 	iQj 	kQl 	mQn 	oQp 	qQr 	sQt 	uQv 	wQx 	yQz 	{Q| 	}Q~ 	Q@ 	AQB 	CQD 	EQF 	GQH 	IQJ 	KQL 	MQN 	OQP 	QQR 	SQT 	UQV 	WQX 	YQZ 	[Q\ 	]Q^ 	_Q` 	aQS Sf 	&g rC   