§
    t�’jk   ã                  ót   — d dl mZ d dlZd dlZd dlmZ d dlmZ  ej        e	¦  «        Z
 G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚPath)ÚAnyc                  ó*   — e Zd Ze	 d
dd„¦   «         Zd	S )ÚDrawingPdfClassifierMixiné   Ú	file_pathú
Path | strÚmax_check_pagesÚintÚreturnúdict[str, Any]c                óª  ‡ ‡!— ddl Š!ddl}t          | ¦  «        } |                      ¦   «         r| j                             ¦   «         dk    rddddddœS | j                             ¦   «         }‰!                     d	|¦  «        }d
                     ˆ!fd„|D ¦   «         ¦  «         	                    dd¦  «        }t          j        dd|¦  «        Š g d¢}g d¢}t          ˆ fd„|D ¦   «         ¦  «        }t          ˆ fd„|D ¦   «         ¦  «        }		 |                     t          | ¦  «        ¦  «        }
t          t!          |
¦  «        |¦  «        }|dk    rddddddœS d}d}g }|r|dz  }|                     d¦  «         |	r|dz  }|                     d¦  «         d}d}d}d}g d¢}g d¢}t%          |¦  «        D ]Ó}|
|         }|j        j        |j        j        }}||dz  k    r|dz  }n||dz  k    r|dz  }|                     ¦   «         pd
                     ¦   «         }|t!          |¦  «        z  }|D ]*}||v r$|dz  }|                     d |dz   › d!|› d"�¦  «         Œ+|D ]*}||v r$|dz  }|                     d |dz   › d#|› d"�¦  «         Œ+ŒÔ||k    r|d$z  }n ||k    r|d%z  }|                     d&¦  «         ||z  }|d'k     r |dk    r|dz  }|                     d(¦  «         |d)k    r+|dz  }|                     d*t/          |¦  «        › d+�¦  «         ||k    }|rd,nd}t          d-t1          d.t3          ||z
  ¦  «        ||z   d/z   z  ¦  «        ¦  «        }||| ||||dd0…         |rd1                     |dd2…         ¦  «        nd3d4œS # t4          $ r@}t6                               d5| j        |¦  «         |o|	 }|rd,nd|| d6d7|› �d8œcY d}~S d}~ww xY w)9u  Tá»± Ä‘á»™ng giÃ¡m Ä‘á»‹nh sÃ¢u ná»™i dung PDF (hÃ¬nh há»�c trang, tá»· lá»‡ vector nÃ©t váº½, tá»« khÃ³a vÄƒn báº£n)
        Ä‘á»ƒ phÃ¢n biá»‡t chÃ­nh xÃ¡c 100% giá»¯a File Báº£n Váº½ Ká»¹ Thuáº­t (Drawing) vÃ  File Há»“ SÆ¡ Má»�i Tháº§u / Dá»± ToÃ¡n / Thuyáº¿t Minh (HSMT).
        r   Nz.pdfÚunknownFg        u   KhÃ´ng pháº£i file PDF)ÚtypeÚis_hsmtÚ
is_drawingÚscoreÚreasonÚNFDÚ c              3  óF   •K  — | ]}‰                      |¦  «        °|V — Œd S ©N)Ú	combining)Ú.0ÚcÚunicodedatas     €úDC:\Projects\DSCons\app\modules\takeoff\application\pdf_classifier.pyú	<genexpr>zFDrawingPdfClassifierMixin.classify_pdf_content_type.<locals>.<genexpr>&   sJ   øè è € ð 
ð 
Ø¨K×,AÒ,AÀ!Ñ,DÔ,Dð
Øð
ð 
ð 
ð 
ð 
ð 
ó    u   Ä‘Údz[\-_.]+ú )z
tien luongzdu toanÚhsmtzmoi thauzbieu giazbieu mauÚbieuzbao cao ktktzthuyet minhÚbctmztong hopÚdutoanzbang giaz
quyet dinh)zban veÚbvtcÚtktcÚcadÚdrawingÚdwgÚ	blueprintzket cauzchi tietztruc docz
truc ngangzbinh doc              3  ó    •K  — | ]}|‰v V — Œ	d S r   © ©r   ÚkwÚclean_fns     €r   r   zFDrawingPdfClassifierMixin.classify_pdf_content_type.<locals>.<genexpr>L   s'   øè è € ÐFÐF¨r˜B (˜NÐFÐFÐFÐFÐFÐFr    c              3  ó    •K  — | ]}|‰v V — Œ	d S r   r.   r/   s     €r   r   zFDrawingPdfClassifierMixin.classify_pdf_content_type.<locals>.<genexpr>M   s'   øè è € ÐLÐL°"˜r X˜~ÐLÐLÐLÐLÐLÐLr    r*   Tg      à?u
   PDF rá»—ngg      @uM   TÃªn file chá»©a tá»« khÃ³a há»“ sÆ¡ má»�i tháº§u / biá»ƒu máº«u / dá»± toÃ¡nu3   TÃªn file chá»©a tá»« khÃ³a báº£n váº½ ká»¹ thuáº­t)u   biá»ƒu máº«u má»�i tháº§uu$   báº£ng kÃª háº¡ng má»¥c cÃ´ng viá»‡cu   khá»‘i lÆ°á»£ng tham kháº£ou   chÆ°Æ¡ng ivu   máº«u sá»‘ 01au   máº«u sá»‘ 01zmuasamcong.mpi.gov.vnze-gpu-   cá»™ng hÃ²a xÃ£ há»™i chá»§ nghÄ©a viá»‡t namu   há»“ sÆ¡ má»�i tháº§uu    bÃ¡o cÃ¡o kinh táº¿ ká»¹ thuáº­tu   thuyáº¿t minhu   báº£ng tá»•ng há»£p kinh phÃ­u   tiÃªn lÆ°á»£ngu   Ä‘Æ¡n giÃ¡ dá»± tháº§uu   Ä‘Æ¡n giÃ¡ váº­t liá»‡uu   khá»‘i lÆ°á»£ng má»�i tháº§uu   bÃªn má»�i tháº§uu   chá»§ Ä‘áº§u tÆ°u   quyáº¿t Ä‘á»‹nh phÃª duyá»‡tu
   chÆ°Æ¡ng v)u   tá»· lá»‡ 1:ztl: 1/u   tá»‰ lá»‡ 1:u
   khung tÃªnu   máº·t cáº¯t a-au   máº·t cáº¯t 1-1u   máº·t cáº¯t b-bu   tráº¯c dá»�c cá»‘ngu   tráº¯c ngang cá»‘ngu   bÃ¬nh Ä‘á»“ tuyáº¿nu   ngÆ°á»�i váº½u   chá»§ trÃ¬ thiáº¿t káº¿u   báº£n váº½ sá»‘:gffffffò?é   g      @zTrang u    cÃ³ tá»« khÃ³a HSMT: 'ú'u    cÃ³ tá»« khÃ³a Báº£n váº½: 'g      ø?g       @uQ   Khá»• giáº¥y dá»�c (Portrait/A4 - Ä‘áº·c trÆ°ng Há»“ sÆ¡ má»�i tháº§u/Dá»± toÃ¡n)i,  u>   Ã�t text vÃ  khá»• giáº¥y ngang (Ä�áº·c trÆ°ng báº£n váº½ CAD)iô  u2   Máº­t Ä‘á»™ vÄƒn báº£n dáº¡ng Ä‘oáº¡n/báº£ng cao (u    kÃ½ tá»±/trang)r#   g®Gáz®ï?gÍÌÌÌÌÌä?gš™™™™™¹?é   z; é   u.   Dá»±a trÃªn Ä‘á»‹nh dáº¡ng trang vÃ  nÃ©t váº½)r   r   r   Ú
confidenceÚ
hsmt_scoreÚdrawing_scoreÚreasonsÚsummary_reasonu4   [TAKEOFF] Lá»—i phÃ¢n loáº¡i ná»™i dung PDF '%s': %sgffffffæ?zFallback filename check: )r   r   r   r7   r   )r   Úpymupdfr   ÚexistsÚsuffixÚlowerÚnameÚ	normalizeÚjoinÚreplaceÚreÚsubÚanyÚopenÚstrÚminÚlenÚappendÚrangeÚrectÚwidthÚheightÚget_textr   ÚmaxÚabsÚ	ExceptionÚloggerÚwarning)"r	   r   r<   Úfn_lowerÚfn_normalizedÚfn_strippedÚhsmt_keywords_fnÚdrawing_keywords_fnÚfn_hsmt_matchÚfn_drawing_matchÚdocÚpages_to_checkÚhsmt_pointsÚdrawing_pointsr:   Útotal_drawings_countÚtotal_text_charsÚlandscape_pages_countÚportrait_pages_countÚhsmt_content_keywordsÚdrawing_content_keywordsÚp_idxÚpageÚwÚhÚ	page_textr0   Úavg_text_chars_per_pager   Úresult_typer7   Úer1   r   s"                                   @@r   Úclassify_pdf_content_typez3DrawingPdfClassifierMixin.classify_pdf_content_type   sÀ  øø€ ð 	ÐÐÐàˆˆˆå˜‘O”Oˆ	Ø×ÒÑ!Ô!ð 	 YÔ%5×%;Ò%;Ñ%=Ô%=ÀÒ%GÐ%Gà!Ø Ø#ØØ2ðð ð ð ”>×'Ò'Ñ)Ô)ˆð $×-Ò-¨e°XÑ>Ô>ˆØ—g’gð 
ð 
ð 
ð 
Ø$ð
ñ 
ô 
ñ 
ô 
ç
Š'�$˜Ñ
Ô
ð 	õ ”6˜* c¨;Ñ7Ô7ˆð
ð 
ð 
Ðð 
ð 
ð 
Ðõ ÐFÐFÐFÐFÐ5EÐFÑFÔFÑFÔFˆÝÐLÐLÐLÐLÐ8KÐLÑLÔLÑLÔLÐðT	Ø—,’,�s 9™~œ~Ñ.Ô.ˆCÝ ¥ S¡¤¨?Ñ;Ô;ˆNØ Ò"Ð"à%Ø$Ø"&Ø Ø*ðð ð ð ˆKØ ˆNØˆGàð Ø˜sÑ"�Ø—’Øcñô ð ð  ð VØ #Ñ%�Ø—’ÐTÑUÔUÐUà#$Ð Ø ÐØ$%Ð!Ø#$Ð ð%ð %ð %Ð!ð.(ð (ð (Ð$õ  ˜~Ñ.Ô.ð _ð _�Ø˜5”z�Ø”y”¨¬	Ô(8�1�Ø�q˜4‘x’<�<Ø)¨QÑ.Ð)Ð)Ø˜˜T™’\�\Ø(¨AÑ-Ð(ð "Ÿ]š]™_œ_Ð2°×9Ò9Ñ;Ô;�	Ø ¥C¨	¡N¤NÑ2Ð à/ð Yð Y�BØ˜Y��Ø# sÑ*˜ØŸšÐ'W°¸±	Ð'WÐ'WÐRTÐ'WÐ'WÐ'WÑXÔXÐXøà2ð _ð _�BØ˜Y��Ø&¨#Ñ-˜ØŸšÐ']°¸±	Ð']Ð']ÐXZÐ']Ð']Ð']Ñ^Ô^Ð^øð_ð %Ð';Ò;Ð;Ø #Ñ%��Ø%Ð(=Ò=Ð=Ø˜sÑ"�Ø—’Øgñô ð ð
 '7¸Ñ&GÐ#ð '¨Ò,Ð,Ð1FÈ!Ò1KÐ1KØ #Ñ%�Ø—’Ð_Ñ`Ô`Ð`à&¨Ò,Ð,Ø˜sÑ"�Ø—’ØwÍÐMdÑIeÔIeÐwÐwÐwñô ð ð " NÒ2ˆGØ$+Ð:˜&˜&°ˆKÝØÝØÝ˜ nÑ4Ñ5Ô5Ø" ^Ñ3°cÑ9ñ;ñô ñô ˆJð $Ø"Ø")˜kØ(Ø)Ø!/Ø" 2 A 2œ;àð#F $§)¢)¨G°B°Q°B¬KÑ"8Ô"8Ð"8àEðð ð øõ ð 	ð 	ð 	Ý�NŠNØFÈ	ÌÐXYñô ð ð $Ð<Ð,<Ð(<ˆGà")Ð8˜˜¨yØ"Ø")˜kØ"Ø9°aÐ9Ð9ðð ð ð ð ð ð ð øøøøð	øøøs&   ÄAN ÅH.N Î
OÎ5OÏOÏON)r   )r	   r
   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodro   r.   r    r   r   r      sA   € € € € € Øà67ðVð Vð Vð Vñ „\ðVð Vð Vr    r   )Ú
__future__r   ÚloggingrD   Úpathlibr   Útypingr   Ú	getLoggerrp   rT   r   r.   r    r   ú<module>ry      s›   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðXð Xð Xð Xð Xñ Xô Xð Xð Xð Xr    