o
    Vi                     @   s  d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlZd dlmZ e  d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZ e ddZe ddZ e dpkdZ!ee" d Z#e#j$ddd e	dddZ%eee e!dZ&dedee'ef fddZ(de'dee'ef fddZ)e%*ded fd!ee
 fd"d#Z+e%,d$d%d& Z-e.d'krej/d(d)d*dd+ dS dS ),    N)Path)ListDictAny)FastAPI
UploadFileFile)JSONResponse)load_dotenv)
preprocess)	OCREngine)process_pdf_pages)classify_text)extract_aadhaarextract_voterextract_landExtractResult
OCR_ENGINE	tesseractPADDLE_LANGmultiTESSERACT_CMDid_ocr_uploadsT)parentsexist_okzID OCR Servicez1.0)titleversion)preferlangtesseract_cmdpathreturnc                 C   sB   t | dtddd\}}}}tj||||d}|j|jt| dS )NFzdata/output/debug_imagesr   )
save_debug	debug_diridx)pil_rgbpil_bwnp_rgbnp_gray)textenginesource)r   r   r*   runr)   str)r    r%   r&   r'   r(   ocr_res r/   )/var/www/html/id_ocr_project_final/app.py_process_image_file   s   r1   r)   c                 C   sh   t | }|dkrt| }n|dkrt| }n|dkrt| }ntdd| d d id}|j|j|jdS )	Naadhaarvoterlandunknownraw_text   g        )doc_type
confidencefields)r   r   r   r   r   r8   r9   r:   )r)   r8   extr/   r/   r0   _classify_and_extract    s   


r<   z/upload-multiple.filesc                    s  g g g g g g d}| D ]3}|j pd}t| }z#|d}| I d H }|| W d    n1 s5w   Y  W n tyZ } z|d |d| d W Y d }~qd }~ww zz|j dkrt	|dd	t
td
d}t|ddD ]?\}	}
t|
}||d< |	|d< |d }|dkr|d | qt|dkr|d | qt|dkr|d | qt|d | qtnHt|}t|d }||d< |d|d< d|d< |d }|dkr|d | n|dkr|d | n|dkr|d | n|d | W n ty } z|d |t|d W Y d }~nd }~ww W z|  W q ty/   Y qw z|  W w  ty@   Y w w t|dS )N)voter_idr2   r4   	agreementr5   errorsunnamedwbr@   zfailed to save upload: )filenameerrorz.pdfi,     F)dpimax_workersr   r   r"      )startsource_filepager8   r3   r>   r2   r4   r5   r)   r*   
ocr_engine)content)rC   TMP_DIRopenreadwrite	Exceptionappendsuffixlowerr   r   r   	enumerater<   r1   getr-   unlinkr	   )r=   resultsuploadfnametmp_pathfrM   e
page_textspage_idx	page_textoutkeyocr_infor/   r/   r0   upload_multiple,   s|   

$
re   z/healthc                   C   s   dt tdS )Nok)statusrL   paddle_lang)r   r   r/   r/   r/   r0   healtha   s   ri   __main__zapp:appz0.0.0.0i@  )hostportreload)0ostempfilepathlibr   typingr   r   r   fastapir   r   r   fastapi.responsesr	   uvicorndotenvr
   ocr.preprocr   ocr.enginesr   ocr.pdf_helpersr   utils.classifyr   
extractorsr   r   r   r   getenvr   r   r   
gettempdirrN   mkdirappr*   r-   r1   r<   postre   rW   ri   __name__r,   r/   r/   r/   r0   <module>   s<    4
