o
    =ij                     @   s   d dl 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	m
Z
 d dlmZ d dlmZ e Zdd	 Zd
d ZG dd deZeddefddZedkr_d dlZejeddd dS dS )    )FastAPIHTTPException)	BaseModel)ListN)	sanscript)transliterate)fuzzc                 C   st   | sdS |  dd} tdd| } t| tjtj}|  }dddddd	d
d}|	 D ]
\}}| ||}q-|S )N  z\s+([\u09BE-\u09CD])z\1MandalPhulmaliDafadarNandiDasSheikh)maNDalamandala	phulamAlI	daphadaranandIdAsashekha)
replaceresubr   r   BENGALIITRANSlower
capitalizeitems)textenglish_phonetic	eng_cleanreplacementskv r&   !/var/www/html/land-tabula/main.pyml_transliterate*  s   r(   c                 C   s~  g }d\}}zt | }|jD ]}|j}||d d|d |f}||d d|d |f}i }	| D ]}
t|
d d d }|	|g |
d  q5| D ]=}|d 	 }t
d|r|	 D ]*\}}t||d  dk rt
d	d
d|	 }t|dkr||t|d qcqQqW d    |W S 1 sw   Y  |W S  ty } ztd|  g W  Y d }~S d }~ww )N))   U   )R      r      top   r    z[\d/]+   z[A-Za-z0-9\u0000]r	    )khatianowner_enzExtraction Error: )
pdfplumberopenpagesheightcropextract_wordsround
setdefaultappendstripr   	fullmatchr   absr   joinlenr(   	Exceptionprint)	file_path	extractedK_ZONEN_ZONEpdfpagehk_stripn_stripname_mapnwy_keykwk_valnytextsbner&   r&   r'   extract_data_from_pdf>  sF   

rV   c                   @   s.   e Zd ZU ee ed< ee ed< eed< dS )MatchRequestr2   ownersource_fileN)__name__
__module____qualname__r   str__annotations__r&   r&   r&   r'   rW   b  s   
 rW   z/match-land-recordsrequestc              	      s   d| j  }t|}|stdddg }t| j| jD ]N\}}dddd}t|d	}|D ])}t|d
 d	}	|	|krXt	||d }
|
dkrX|
|d krXd|
|d d}q/|
|||d |d |d d qd|dS )Nz%/var/www/html/land-tabula/input_pdfs/i  z#File not found or extraction failed)status_codedetailFr   r	   )
is_matchedscore
matched_as0r2   r3   <   rc   Trb   rd   )input_khatianinput_ownerrb   
confidencematched_name_in_pdfsuccess)statusresults)rY   rV   r   zipr2   rX   r]   lstripr   token_set_ratior<   )r_   rD   pdf_contentrm   req_khatreq_own
best_matchnorm_req_khatrecordnorm_pdf_khatrc   r&   r&   r'   match_recordsg  s6   

rx   __main__z0.0.0.0i@  )hostport)fastapir   r   pydanticr   typingr   r4   r   indic_transliterationr   indic_transliteration.sanscriptr   thefuzzr   appr(   rV   rW   postrx   rZ   uvicornrunr&   r&   r&   r'   <module>   s,       "$+