
    /qiN,                        S SK JrJrJr  S SKJr  S SK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Jr  SrS	r\" S
S9r " S S\5      r\R1                  SS5      rS\S\4S jrS\S\\   4S jrS\S\\   4S jrS\S\\   4S jrS\S\S\4S jr\RA                  S5      S\4S j5       r!\RA                  S5      S\4S j5       r"g)     )FastAPIHTTPExceptionRequest)	BaseModelN)Output)convert_from_path)ImageJSONResponsezben+engi  zLand PDF Search API)titlec                   F    \ rS rSr% \\   \S'   \\   \S'   \\   \S'   Srg)SearchRequesti   pdf_urlsJL_NoDaag_No N)__name__
__module____qualname____firstlineno__liststr__annotations____static_attributes__r       /var/www/html/land-ocr/main.pyr   r      s     3i9#Yr   r   u   ০১২৩৪৫৬৭৮৯
0123456789textreturnc                 `    U R                  [        5      n [        R                  " SSU 5      n U $ )N\s+ )	translateBN_TO_ENresubr   s    r   normalize_textr(   (  s'    >>(#D66&#t$DKr   c                 B    [        [        R                  " SU 5      5      $ )N\b\d{2,4}\b)setr%   findallr'   s    r   extract_jl_numbersr-   .  s    rzz.$/00r   pdf_pathc                    [        5       n[        R                  " U 5       nUR                   Hz  nUR	                  5       =(       d    SnUR                  [        5      n[        R                  " SSU5      n[        R                  " SU5      nU H  nUR                  U5        M     M|     S S S 5        U$ ! , (       d  f       U$ = f)N r!   r"   z)\b(\d{2,4})\s+[^0-9]+?\s+\d+\.\d+\s+Click)r+   
pdfplumberopenpagesextract_textr#   r$   r%   r&   r,   add)r.   resultspdfpager   matchesms          r   extract_daag_from_pdf_textr;   8  s    eG		"cIID$$&,"D>>(+D66&#t,D jj!MtTGA   
# N 
#	" Ns   BB66
Cc                 V   [        5       nU R                  [        5      n [        R                  " SSU 5      n U R                  5       nU H[  nUR                  5       nSU;   d  M  [        R                  " SU5      nU(       d  M;  UR                  UR                  S5      5        M]     U$ )uO   
Extract Daag numbers from Daag ROWS like:
'261 সৈ য়ম 2.17 Click Here'
u   দা\s*গu	   দাগClickr*   r   )
r+   r#   r$   r%   r&   
splitlinesstripsearchr5   group)r   r6   lineslinematchs        r   extract_daag_numbersrE   J  s     eG >>(#D66/;5D OOEzz| d?IInd3EuEKKN+  Nr   urlfolderc                 N   [         R                  R                  U[         R                  R                  U 5      5      n[        R
                  " U SS9nUR                  5         [        US5       nUR                  UR                  5        S S S 5        U$ ! , (       d  f       U$ = f)N   )timeoutwb)
ospathjoinbasenamerequestsgetraise_for_statusr2   writecontent)rF   rG   rM   rfs        r   download_pdfrW   f  su    77<< 0 0 56DS"%A	dD	Q			 
K 
	Ks   /B
B$z/extractpayloadc           	      J   [        U R                  5      n[        U R                  5      n[        5       n[        5       n[        R                  " 5        nU R
                   H  n [        Xe5      n[        U[        S9nU H  n	[        R                  " U	[        SS9n
[        U
5      n
[        SU
-   5        UR                  U[        U
5      -  5        [!        U5      nUR                  X+-  5        X$-
  (       d  M|  UR                  U[#        U
5      -  5        M     M     S S S 5        ['        U5      ['        U5      S.['        X-
  5      ['        X$-
  5      S.S.nUS   S   (       d  US   S	   (       d  U$ [)        S
US9e! [$         a     GM/  f = f! , (       d  f       Ny= f)N)dpiz--psm 6)langconfigzServer started successfullyr   r   found	not_foundr`   r   r   i  )status_codedetail)r+   r   r   tempfileTemporaryDirectoryr   rW   r   DPIpytesseractimage_to_stringOCR_LANGr(   printupdater-   r;   rE   	Exceptionsortedr   )rX   req_jlreq_daagfound_jl
found_daagtmpdirrF   r.   imagesimgr   daag_from_textresponses                r   extract_land_datarv   o  s    F7??#HuHJ		$	$	&&##C'4*8=!C&66%(D *$/D7<=OOF-?-E$EF%?%IN%%h&?@  ,,"))(5I$5O*OP! " $ 
'< H%j)

 F-.h34
	H K )(;2G	2R
C
99#  3 
'	&s7   F%BF<!FF
FFFF
F"z/quick_checkrequestc                 <   #    [        SSS/SS/S.S/S/S.S	.S
9$ 7f)N   63124261371r]   999888r^   )ra   rT   r
   )rw   s    r   quick_checkr     s@      !5>
  !7	
 s   )#fastapir   r   r   pydanticr   rf   r   r%   rP   rc   r1   rL   	pdf2imager   PILr	   fastapi.responsesr   rh   re   appr   r   	maketransr$   r(   r+   r-   r;   rE   rW   postrv   r   r   r   r   <module>r      s   V 3 2    	    	 '  * 	)*I  ==9<H  1S 1SX 1 S $s s3x 8c 3 3  *2:} 2: 2:n .w  r   