
    AiI?                     P   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Jr  S SKJ	r	  S SK
Jr  S SKrSrSr\" SS9r " S	 S
\	5      r\R%                  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\R5                  S5      S\4S j5       rg)    N)FastAPIHTTPException)	BaseModel)convert_from_pathz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_dem.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                   Hq  nUR	                  5       =(       d    SnUR                  [        5      n[        R                  " SSU5      n[        R                  " SU5      nUR                  U5        Ms     SSS5        U$ ! , (       d  f       U$ = f)uT   
Extract Daag numbers from PDF text-layer like:
'261 সৈ য়ম 2.17 Click Here'
 r   r   z)\b(\d{2,4})\s+[^0-9]+?\s+\d+\.\d+\s+ClickN)r&   
pdfplumberopenpagesextract_textr   r   r    r!   r'   update)r)   resultspdfpager   matchess         r   extract_daag_from_pdf_textr5     s    
 eG		"cIID$$&,"D>>(+D66&#t,Djj<G
 NN7#  
# N 
#	" Ns   BB--
B<c                    [        5       nU R                  [        5      n U R                  5        HK  nSU;   d  M  [        R
                  " SU5      nU(       d  M+  UR                  UR                  S5      5        MM     U$ )uF   
OCR fallback for Daag rows like:
'261 সৈ য়ম 2.17 Click Here'
Clickr%   r   )r&   r   r   
splitlinesr    searchaddgroup)r   r1   linematchs       r   extract_daag_numbersr>     sa    
 eG>>(#D!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_statusr-   writecontent)r?   r@   rF   rfs        r   download_pdfrP     su    77<< 0 0 56DS"%A	dD	Q			 
K 
	Ks   /B
B$z/extractpayloadc           	         [        U R                  5      n[        U R                  5      n[        5       n[        5       n[        R                  " 5        nU R
                   H  n [        Xe5      n[        U5      nUR                  X(-  5        [        X-
  5      n	[        X$-
  5      n
U	(       d  U
(       a  [        U[        SSS9nU Hr  n[        R                  " U[        SS9n[        U5      nU	(       a  UR                  U[!        U5      -  5        U
(       d  MU  UR                  U[#        U5      -  5        Mt     X-
  (       d  X$-
  (       d    O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Mf  f = f! , (       d  f       Ny= f)N   )dpi
first_page	last_pagez--psm 6)langconfig)r   r   )found	not_foundrZ   r   r   i  )status_codedetail)r&   r   r   tempfileTemporaryDirectoryr
   rP   r5   r0   boolr   DPIpytesseractimage_to_stringOCR_LANGr#   r(   r>   	Exceptionsortedr   )rQ   req_jlreq_daagfound_jl
found_daagtmpdirr?   r)   daag_from_textneed_jl_ocrneed_daag_ocrimagesimgr   responses                  r   extract_land_datarq     s    F7??#HuHJ		$	$	&&##C''4 "<H!E!!(";<"6#45 $X%: ; -. #$"#	F  &*::!)#,   .d3&$OOF5G5M,MN(=&--h9Md9S.ST  &  )X-B .C)I $ 
'Z H%j)

 F-.h34
	H K )(;2G	2R
C
99#  Q 
'	&s7   G%B4F93F9G9
GGGG
G)rE   r    r]   rI   r,   fastapir   r   pydanticr   	pdf2imager   ra   rc   r`   appr	   r   	maketransr   r#   r&   r(   r5   r>   rP   postrq   r   r   r   <module>rx      s   L 
 	    *  ' 
 	)*
I  ==9<H  1S 1SX 1 S 2s s3x &c 3 3  *A:} A: A:r   