U
    bh                     @   s  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mZ e  eeZe dejd< d	ejd
< dejd< dejd< e jejd
 dd e jejd dd ddddhZdd Zdd Zeddd Zeddd Zedd d! Z ed"d#d$ Z!ejd%d&gd'd(d) Z"ejd*d&gd'd+d, Z#ed-kr|ej$dd.d/ dS )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convert_pdf_first_page_to_image   
SECRET_KEYZuploadsUPLOAD_FOLDERZextracted_facesEXTRACTED_FACES_FOLDERi   MAX_CONTENT_LENGTHT)exist_okpngjpgjpegpdfc                 C   s    d| ko|  ddd  tkS )N.   )rsplitlowerALLOWED_EXTENSIONSfilename r"   */var/www/html/id_scanner_app_1-main/app.pyallowed_file'   s    r$   c                 C   s  |  d}|  d}|  d}d }d}d }|r|jdkrt|jrt|j}tjtjd |}|	| |}|}|
ddd  }	|	dkr|}n,|	d	krtd
 t|tjd }|std n|rn|rnt|jrnt|jrnt|j}
t|j}tjtjd |
}tjtjd |}|	| |	| |}t||tjd \}}|r`|}|}nddidfS nddidfS |sddidfS t|}d|kr|dfS d }|rt|tjd }t|||d}tj| tj  d|||jddfS )Nsingle_file
side1_file
side2_file r   r   r   )r   r   r   r   zDPDF detected, attempting to convert first page for face detection...z4Could not extract image from PDF for face detection.errorz!Failed to combine images into PDF  zIInvalid file submission. Please provide a single file or two side images.z(File to process could not be determined.i  r   )original_filenameextracted_dataZface_image_pathT)ZsuccessdataZ
face_imageid   )getr!   r$   r	   ospathjoinappconfigsaver   r   printr   r   r   r   r   r   sessionaddZcommitr.   )filesr%   r&   r'   Zfile_to_processr+   Zface_source_image_pathr!   filepathZfile_extensionZs1_filenameZs2_filenameZs1_filepathZs2_filepathZpdf_pathZpdf_filenamer,   Z	face_pathZ
new_resultr"   r"   r#   process_files+   sj    





$





r<   /c                   C   s   t dS )Nz
index.html)r   r"   r"   r"   r#   indexr   s    r>   z/historyc                  C   s"   t jt j  } td| dS )Nzhistory.htmlresults)r   queryZorder_byZprocessed_atZdescallr   r?   r"   r"   r#   historyv   s    rC   z/uploads/<path:filename>c                 C   s   t tjd | S )Nr   r   r4   r5   r    r"   r"   r#   serve_upload{   s    rE   z /extracted_faces/<path:filename>c                 C   s   t tjd | S )Nr   rD   r    r"   r"   r#   
serve_face   s    rF   z/uploadPOST)methodsc                  C   s   t js
dS t jdt jdt jdd} t| \}}|dkrNttdS d}t|trnd	|krn|d	 }nt|tr||}||fS d S )
N)zNo file partr*   r%   r&   r'   r%   r&   r'   r/   rC   zAn unknown error occurred.r)   )	r   r:   r0   r<   r   r   
isinstancedictstr)r:   resultstatus_codeZerror_messager"   r"   r#   upload_from_form   s    




rO   z/api/ocrc                  C   sR   t jstddidfS t jdt jdt jdd} t| \}}t||fS )Nr)   zNo file part in the requestr*   fileZside1Zside2rI   )r   r:   r   r0   r<   )r:   rM   rN   r"   r"   r#   upload_from_api   s    


rQ   __main__z0.0.0.0)debughost)%r1   flaskr   r   r   r   r   r   r   Zwerkzeug.utilsr	   dotenvr
   Zmodelsr   r   utilsr   r   r   r   __name__r4   urandomr5   makedirsr   r$   r<   router>   rC   rE   rF   rO   rQ   runr"   r"   r"   r#   <module>   s<   $


G






