
    Ph              
       >   d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZ  e         ee      Z e j,                  d      ej.                  d<   d	ej.                  d
<   dej.                  d<   dej.                  d<    e j0                  d      Z e j0                  d      Z e j0                  d      Z e j0                  d      Z e j0                  d      Zde de de de de 
ej.                  d<   dej.                  d<    ej<                  e        e j>                  ej.                  d
   d        e j>                  ej.                  d   d       h dZ d Z!d Z"ejG                  d      d         Z$ejG                  d!      d"        Z%ejG                  d#      d$        Z&ejG                  d%      d&        Z'ejG                  d'd(g)      d*        Z(ejG                  d+d(g)      d,        Z)ed-k(  rejU                  dd./       yy)0    N)Flaskrequestrender_templateredirecturl_forjsonifysend_from_directory)secure_filename)load_dotenv)db	OcrResult)combine_images_to_pdfdetect_and_extract_facecall_gemini_ocr   
SECRET_KEYuploadsUPLOAD_FOLDERextracted_facesEXTRACTED_FACES_FOLDERi   MAX_CONTENT_LENGTHDB_USERDB_PASSWORDDB_HOSTDB_PORTDB_NAMEzpostgresql://:@/SQLALCHEMY_DATABASE_URIFSQLALCHEMY_TRACK_MODIFICATIONST)exist_ok>   jpgpdfpngjpegc                 `    d| v xr) | j                  dd      d   j                         t        v S )N.   )rsplitlowerALLOWED_EXTENSIONSfilenames    /root/ocr/app.pyallowed_filer0   '   s0    (?WxsA6q9??AEWWW    c                    | j                  d      }| j                  d      }| j                  d      }d }d}d }|r|j                  dk7  rt        |j                        rt        |j                        }t        j
                  j                  t        j                  d   |      }|j                  |       |}|}|j                  dd      d   j                         dk7  r|}n|r|rt        |j                        rt        |j                        rt        |j                        }	t        |j                        }
t        j
                  j                  t        j                  d   |	      }t        j
                  j                  t        j                  d   |
      }|j                  |       |j                  |       |}t        ||t        j                  d         \  }}|r|}|}nd	d
idfS d	didfS t        |      }d	|v r|dfS d }|rt        |t        j                  d         }t        |||      }t         j"                  j%                  |       t         j"                  j'                          d|||j(                  ddfS )Nsingle_file
side1_file
side2_file r   r(   r)   r$   errorz!Failed to combine images into PDF  zIInvalid file submission. Please provide a single file or two side images.i  r   )original_filenameextracted_dataface_image_pathT)successdata
face_imageid   )getr.   r0   r
   ospathjoinappconfigsaver*   r+   r   r   r   r   r   sessionaddcommitr?   )filesr3   r4   r5   file_to_processr9   face_source_image_pathr.   filepaths1_filenames2_filenames1_filepaths2_filepathpdf_pathpdf_filenamer:   	face_path
new_results                     r/   process_filesrW   +   sG   ))M*K<(J<(JO!{++r1l;CWCW6X";#7#7877<<

? ;XF""$??3"1%++-6%-"	
|J4G4G'H\ZdZmZmMn%j&9&9:%j&9&9:ggll3::o#>Lggll3::o#>L$$ "- "7{KQTQ[Q[\kQl!m,&O ,@A3FFdegjjj %_5N. s"" I+,BCJJOgDhi	 +%!J
 JJNN:JJ^9T^TaTabdgggr1   c                      t        d      S )Nz
index.html)r    r1   r/   indexrZ   i   s    <((r1   z/historyc                      t         j                  j                  t         j                  j	                               j                         } t        d|       S )Nzhistory.htmlresults)r   queryorder_byprocessed_atdescallr   r\   s    r/   historyrc   m   s;    oo&&y'='='B'B'DEIIKG>7;;r1   z/uploads/<path:filename>c                 <    t        t        j                  d   |       S )Nr   r	   rE   rF   r-   s    r/   serve_uploadrf   r   s    szz/:HEEr1   z /extracted_faces/<path:filename>c                 <    t        t        j                  d   |       S )Nr   re   r-   s    r/   
serve_facerh   v   s    szz*BCXNNr1   z/uploadPOST)methodsc                  :   t         j                  syt         j                  j                  d      t         j                  j                  d      t         j                  j                  d      d} t        |       \  }}|dk(  rt	        t        d            S |d   |fS )	N)zNo file partr8   r3   r4   r5   r3   r4   r5   r@   rc   r7   )r   rK   rA   rW   r   r   rK   resultstatus_codes      r/   upload_from_formrp   z   s    ==" }}((7mm''5mm''5E (.FKc	*++g++r1   z/api/ocrc                  0   t         j                  st        ddi      dfS t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      d} t	        |       \  }}t        |      |fS )Nr7   zNo file part in the requestr8   fileside1side2rl   )r   rK   r   rA   rW   rm   s      r/   upload_from_apiru      s~    ==!>?@#EE }}((0mm''0mm''0E (.FK6?K''r1   __main__z0.0.0.0)debughost)+rB   flaskr   r   r   r   r   r   r	   werkzeug.utilsr
   dotenvr   modelsr   r   utilsr   r   r   __name__rE   urandomrF   getenvdb_userdb_passdb_hostdb_portdb_nameinit_appmakedirsr,   r0   rW   routerZ   rc   rf   rh   rp   ru   runrY   r1   r/   <module>r      sC   	 b b b *    Q Q  Ho &2::b>

< '

? '8

# $#3

   "))I

"))M
"
"))I

"))I

"))I
*7y'!G9TUV]U^^_`g_h(i

$ %/4

+ , C  CJJ'$ 7 CJJ/04 @2 X:h| 3) ) :< < %&F 'F -.O /O 9vh', (," :x(( )( zGG$YG' r1   