
    :iu'                     0   S SK JrJr  S SKJr  S SKrS SKrS SKrS SKrS SK	r
S SKJr  S SKJr  S SKr\" 5       r\R"                  " S/5      r " S S\5      rS	\4S
 jrS rS rS\S\4S jrS rS\S\4S jr\R7                  S5      S\S\4S j5       rg)    )FastAPIResponse)	BaseModelN)fuzz)convert_from_pathenc                   *    \ rS rSr% \\S'   \\S'   Srg)	InputData   
input_namefile N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r       &/var/www/html/aadhar_voter_ocr/main.pyr
   r
      s    O
Ir   r
   urlc                 h    [         R                  " U 5      nUR                  S:w  a  g UR                  $ )N   )requestsgetstatus_codecontent)r   resps     r   download_filer       s+    <<D3<<r   c                     [        SS5       nUR                  U 5        S S S 5        [        SSS9n[        R                  " 5       nUS   R                  USS9  UR                  5       $ ! , (       d  f       NP= f)Nztemp.pdfwbi,  )dpir   JPEG)format)openwriter   ioBytesIOsavegetvalue)	pdf_bytesfpages	img_bytess       r   convert_pdf_to_imager0      sb    	j$	1		 
 jc2E

I	!HMM)FM+ 
 	s   A))
A7c                     U R                   S S u  pU [        US-  5      [        US-  5      2[        US-  5      [        US-  5      24   n[        R                  " SU5        U$ )N   gQ?gRQ?g333333?g333333?zdebug_roi.jpg)shapeintcv2imwrite)imghwrois       r   crop_aadhaar_regionr;      s_    99Ra=DA
c!D&k#af+%s1T6{3qv;'>>
?CKK%Jr   textreturnc                 X    U R                  5       nSU;   d  SU;   a  gSU;   d  SU;   a  gg)Ngovernment of indiavidaadhaarzelection commission of indiaelectorvoterauto)lower)r<   
text_lowers     r   detect_card_typerG      s4    J
*ez.A%3yJ7Nr   c                 F   [         R                  " U [         R                  5      n[        R                  " U[        R
                  5      n[        R                  USS9nSR                  U5      n[        U5      nUS:X  a   [        U5      n[        R                  USS9nOUnSR                  U5      n[        R                  " SU[        R                  5      n	U	(       a5  U	R                  S5      R                  5       n
U
R!                  5       S;  a  U
$ [        R                  " SU[        R                  5      n	U	(       a  U	R                  S5      R                  5       $ U H  nUR                  5       n[        R"                  " S	U5      (       d  M1  [%        UR'                  5       5      S
:  d  MP  UR!                  5       S;  d  Mf  [        R(                  " SSU[        R                  S9R                  5       n[%        UR'                  5       5      S
:  d  M  Us  $    g )Nr   )detail
rA   zName[^A-Za-z]*([A-Za-z\s]+)   )malefemaletransgenderr?   z&Elector'?s Name[^A-Za-z]*([A-Za-z\s]+)z^[A-Za-z\s]+$r2   z\b(MALE|FEMALE|Transgender)\b )flags)np
frombufferuint8r5   imdecodeIMREAD_COLORreaderreadtextjoinrG   r;   research
IGNORECASEgroupstriprE   matchlensplitsub)image_bytesnp_arrr7   results_full	text_full	card_typer:   resultsr<   r^   	candidatelines               r   extract_name_from_imagerj      s   ]];1F
,,vs//
0C ??3q?1L		,'I +I I!#&//#a/099WD II4dBMMJEKKN((*	??$\\ II?r}}UE{{1~##%% zz|88$d++DJJL0AQ0Fzz|#[[vv>DPRP]P]^ddftzz|$)K  r   namec                 0   U (       d  g U R                  SS5      R                  5       n [        R                  " SSU 5      n U R	                  5        Vs/ s H#  n[        R
                  " SU5      (       d  M!  UPM%     nnSR                  US S 5      $ s  snf )NrJ    z\s+z^[A-Za-z]+$   )replacer]   rY   ra   r`   r^   rX   )rk   ttokenss      r   
clean_namerr      su    <<c"((*D66&#t$DEA.!)DaFE88F2AJ Fs    B7Bz/extract_namedataresponsec                 T  #    [        U R                  5      nU(       d  SUl        U R                  S SSS.$ U R                  R	                  5       R                  S5      (       a  [        U5      n[        U5      n[        U5      nU(       d  SUl        U R                  S SSS.$ [        R                  " U R                  R                  5       R	                  5       UR                  5       R	                  5       5      nUS	:  a
  S
Ul        SnO	SUl        SnU R                  UUUS.$ 7f)Ni  errorzCould not download file)r   extracted_namestatusmessagez.pdfi  not_detectedzName could not be detectedP   r   matchednot_matched)r   rw   rx   
similarity)r    r   r   r   rE   endswithr0   rj   rr   r   ratior]   )rs   rt   
file_bytesextracted_rawcleaned_namer~   rx   s          r   extract_namer     s    tyy)J"//"0	
 	
 yy!!&)))*5
 ,J7Mm,L"//"$3	
 	
 DOO11399;\=O=O=Q=W=W=YZJR"" oo& 	 s   D&D()fastapir   r   pydanticr   easyocrr   rY   r5   numpyrQ   	rapidfuzzr   	pdf2imager   r(   appReaderrV   r
   r   r    r0   r;   rG   rj   rr   postr   r   r   r   <module>r      s   F &    	 
   ' 	i 
		 
s  3 3 'R S  S   /)Y )( ) )r   