o
    $Ē	iUA  ã                   @   sę   d dl mZmZmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
Zd dlZd dlZd dlmZ e Zdddd	Zd
dddZdgddgdgdZdgddgdgdZdd Zdd Zdd Zdd Ze dĄedfd efd!d"ZdS )#é    )ÚFastAPIÚFileÚ
UploadFile)ÚJSONResponse)Úconvert_from_bytesN)ÚTemporaryDirectoryÚownÚleaseÚjoint)u   āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻŽāĻŋu#   āĻ˛āĻŋāĻ āĻ¨ā§āĻā§āĻž āĻāĻŽāĻŋu5   āĻ¯ā§āĻĨ āĻŽāĻžāĻ˛āĻŋāĻāĻžāĻ¨āĻžāĻ§ā§āĻ¨ āĻāĻŽāĻŋub   āĻā§āĻˇāĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻŽāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻāĻļui   āĻā§āĻˇāĻā§āĻ° āĻ˛āĻŋāĻ āĻ¨ā§āĻā§āĻž āĻāĻŽāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻāĻļuh   āĻ¯ā§āĻĨ āĻŽāĻžāĻ˛āĻŋāĻāĻžāĻ¨āĻžāĻ§ā§āĻ¨ āĻāĻŽāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻāĻļ)r   r	   r
   u   āĻā§āĻˇāĻā§āĻ° āĻ¨āĻžāĻŽu,   āĻāĻŽāĻŋāĻ° āĻŽāĻžāĻ˛āĻŋāĻā§āĻ° āĻ¨āĻžāĻŽu>   āĻāĻžāĻˇāĻžāĻŦāĻžāĻĻāĻāĻžāĻ°ā§ āĻā§āĻˇāĻā§āĻ° āĻ¨āĻžāĻŽu8   āĻĒāĻ°āĻŋāĻŦāĻžāĻ°ā§āĻ° āĻ¸āĻĻāĻ¸ā§āĻ¯ā§āĻ° āĻ¨āĻžāĻŽu+   āĻā§āĻˇāĻā§āĻ° āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°u;   āĻāĻŽāĻŋāĻ° āĻŽāĻžāĻ˛āĻŋāĻā§āĻ° āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°uM   āĻāĻžāĻˇāĻžāĻŦāĻžāĻĻāĻāĻžāĻ°ā§ āĻā§āĻˇāĻā§āĻ° āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°uG   āĻĒāĻ°āĻŋāĻŦāĻžāĻ°ā§āĻ° āĻ¸āĻĻāĻ¸ā§āĻ¯ā§āĻ° āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°c                 C   sx   t dd |  Ą D d}|sd S | ddĄ ddĄ ddĄ Ą }d|v r.d	|vr.d
|vr.dS d	|v r4dS d
|v r:dS d S )Nc                 s   s    | ]	}d |v r|V  qdS )u/   āĻāĻŽāĻŋ āĻŽāĻžāĻ˛āĻŋāĻāĻžāĻ¨āĻžāĻ° āĻ§āĻ°āĻŖNŠ )Ú.0Úlr   r   ú/var/www/html/ocr-read/main.pyÚ	<genexpr>&   s    z-detect_ownership_from_text.<locals>.<genexpr>Ú ú:Ú_ú u   āĻāĻ°u	   āĻ¨āĻŋāĻu	   āĻ˛āĻŋāĻu	   āĻ¯ā§āĻĨr   r	   r
   )ÚnextÚ
splitlinesÚreplaceÚstrip)ÚtextÚliner   r   r   Údetect_ownership_from_text%   s    r   c           	      C   s   t j| dt jjd}t|d D ]6\}}||v rF|d | |d | |d | |d | f\}}}}| |d |d	 |d |d	 f   S qd S )
NÚben)ÚlangÚoutput_typer   ÚleftÚtopÚwidthÚheighté2   iX  )ÚpytesseractÚimage_to_dataÚOutputÚDICTÚ	enumerate)	ÚimageÚheader_textÚdataÚiÚwordÚxÚyÚwÚhr   r   r   Úfind_section4   s   4(ūr1   c                 C   s2   t j| dd}t | d|Ą}|r| dĄS dS )Nr   Šr   z[:\-]?\s*(\S+)é   z	Not found)r#   Úimage_to_stringÚreÚsearchÚgroup)Úsegment_imageÚ
label_textr   Úmatchr   r   r   Úextract_name<   s   r;   c                 C   sÆ   t  | t jĄ}t  |ddt jĄ\}}t  |t jt jĄ\}}d}g }|D ]=}	t  |	Ą\}
}}}|dkr`|dk r`| ||| |
|
| f }t	j
 || d| dĄ}t  ||Ą | |Ą |d7 }q#|S )Né   é˙   r   éd   Ú_signature_z.jpgr3   )Úcv2ÚcvtColorÚCOLOR_BGR2GRAYÚ	thresholdÚTHRESH_BINARY_INVÚfindContoursÚRETR_EXTERNALÚCHAIN_APPROX_SIMPLEÚboundingRectÚosÚpathÚjoinÚimwriteÚappend)r8   ÚlabelÚ
output_dirÚgrayr   ÚthreshÚcontoursÚcountÚpathsÚcntr-   r.   r/   r0   ÚsigrJ   r   r   r   Úextract_signatureA   s   
rW   z/extract.Úfilec                 Ã   sP  t  }|  Ą I d H }t|dd}g i i d}|D ]z}t t |ĄtjĄ}tj	|dd}t
|}|r@||d vr@|d  |Ą |rKt|t |dĄnd }	|	d urS|	n|}
t |g ĄD ]}||d vrnt|
|}||d |< q[t |g ĄD ]}t|
||}||d	 v r|d	 |  |Ą qu||d	 |< quq|W  d    S 1 sĄw   Y  d S )
Ni,  )Údpi)Úownership_typesÚnamesÚ
signatureszben+engr2   rZ   r   r[   r\   )r   Úreadr   r@   rA   ÚnpÚarrayÚCOLOR_RGB2BGRr#   r4   r   rM   r1   Úsection_headersÚgetÚname_labelsr;   Úsignature_labelsrW   Úextend)rX   ÚtmpdirÚ	pdf_bytesÚimagesÚresultÚimgÚimg_cvr   Ú	ownershipÚsectionÚtargetrN   ÚnameÚ	sig_pathsr   r   r   Úextract_fieldsR   s:   ũ
û$ßrq   )Úfastapir   r   r   Úfastapi.responsesr   Ú	pdf2imager   r#   r@   Únumpyr^   r5   rI   Útempfiler   ÚappÚownership_labelsra   rc   rd   r   r1   r;   rW   Úpostrq   r   r   r   r   Ú<module>   s@    ũũũũ