§
     ’jö!  ã                  ól   — d dl m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 )ÚDrawingPdfStructureMdMixiné    Ú	file_pathú
Path | strÚ	max_pagesÚintÚreturnúdict[str, Any]c                ó   ‡'‡(— ddl }ddlmŠ' t          | ¦  «        } |                      ¦   «         r| j                             ¦   «         dk    rdddg dœS 	 |                     t          | ¦  «        ¦  «        }t          t          |¦  «        |¦  «        }d| j                             ¦   «         › �dt          |¦  «        › d	|› d
�g}g }g }g }t          |¦  «        D �] }	||	         }
|
j        j        }|
j        j        }d|	dz   › dt#          |¦  «        › dt#          |¦  «        › d�g}	 |
                     ¦   «         }|�rót          |j        ¦  «        dk    �rÚ|                     d¦  «         t+          |¦  «        D �]´\  }}|                     ¦   «         }|rt          |¦  «        dk     rŒ0ˆ'fd„|d         D ¦   «         }d„ t+          |¦  «        D ¦   «         }dd                     |¦  «        z   dz   dd                     dgt          |¦  «        z  ¦  «        z   dz   g}|dd…         D ]¨}ˆ'fd„|D ¦   «         }t          |¦  «        t          |¦  «        k     r5|                     d¦  «         t          |¦  «        t          |¦  «        k     °5|                     dd                     |dt          |¦  «        …         ¦  «        z   dz   ¦  «         Œ©|                     d                     |¦  «        dz   ¦  «         |                     |	dz   |dz   d                     |¦  «        dœ¦  «         �Œ¶n6# t0          $ r)}t2                               d|	dz   |¦  «         Y d}~nd}~ww xY w|
                     d¦  «        pg }t9          |d„ ¬¦  «        }g }g }g }|D �]Z}t          |¦  «        dk     st          |¦  «        d k    r|d!         dk    rŒ6|d"                              ¦   «         }|rt          |¦  «        dk     rŒf‰'                     |¦  «        }|                     ¦   «         Š(|d         |d         |d         |d#         f\  }} }!}"||d$z  k    r	| |d%z  k    st?          ˆ(fd&„d'D ¦   «         ¦  «        r|                     |¦  «         Œõt?          ˆ(fd(„d)D ¦   «         ¦  «        r5|                     |¦  «         |                     d*|	dz   › d+|› �¦  «         �ŒE|                     |¦  «         �Œ\|rTd                     |dd,…         ¦  «        }#|                     d-|#› d.�¦  «         |                     d*|	dz   › d+|#› �¦  «         |r@|                     d/d                     d0„ |dd1…         D ¦   «         ¦  «        z   dz   ¦  «         |rB|dd1…         }$|                     d2d                     d3„ |$D ¦   «         ¦  «        z   dz   ¦  «         |                     d                     |¦  «        ¦  «         �Œ"|                      ¦   «          d4                     |¦  «        }%|%t          |¦  «        t          |¦  «        |dœS # t0          $ r,}&t2           !                    d5|&¦  «         dddg dœcY d}&~&S d}&~&ww xY w)6u�   Tá»± Ä‘á»™ng phÃ¢n tÃ­ch sÃ¢u cáº¥u trÃºc khÃ´ng gian (Spatial Layout), nháº­n diá»‡n báº£ng biá»ƒu vÃ  táº¡o tÃ i liá»‡u Markdown AI-Friendly.r   N)ÚVietnameseCadFontTranscoderz.pdfÚ )Ústructured_markdownÚtables_countÚspecs_countÚtitle_blocksu$   # Há»’ SÆ  Báº¢N Váº¼ Ká»¸ THUáº¬T: u   **Tá»•ng sá»‘ trang:** u(    trang (Ä�Ã£ trÃ­ch xuáº¥t chuyÃªn sÃ¢u u    trang trá»�ng yáº¿u)
u   ## ðŸ“„ TRANG é   u    (KÃ­ch thÆ°á»›c: Úxz pt)u0   ### ðŸ“Š Báº¢NG BIá»‚U & THá»�NG KÃŠ CHI TIáº¾T:é   c                ó¤   •— g | ]L}‰                      t          |pd ¦  «                             ¦   «                              dd¦  «        ¦  «        ‘ŒMS ©r   ú
ú ©Úauto_transcode_cad_textÚstrÚstripÚreplace©Ú.0Úcr   s     €úFC:\Projects\DSCons\app\modules\takeoff\application\pdf_structure_md.pyú
<listcomp>zPDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<listcomp>?   sd   ø€ ð &ð &ð &ð %&ð !<× SÒ SÝ$'¨¨¨R¡L¤L×$6Ò$6Ñ$8Ô$8×$@Ò$@ÀÀsÑ$KÔ$Kñ!"ô !"ð&ð &ð &ó    c                ó,   — g | ]\  }}|r|nd |dz   › �‘ŒS )u   Cá»™t r   © )r#   Úir$   s      r%   r&   zPDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<listcomp>E   s?   € ð &ð &ð &ÙAEÀÀA QÐ <  Ð,<°Q¸±UÐ,<Ð,<ð&ð &ð &r'   z| z | z |z---c                ó¤   •— g | ]L}‰                      t          |pd ¦  «                             ¦   «                              dd¦  «        ¦  «        ‘ŒMS r   r   r"   s     €r%   r&   zPDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<listcomp>N   se   ø€ ð -"ð -"ð -"ð )*ð %@×$WÒ$WÝ(+¨A¨G°©¬×(:Ò(:Ñ(<Ô(<×(DÒ(DÀTÈ3Ñ(OÔ(Oñ%&ô %&ð-"ð -"ð -"r'   r   )ÚpageÚtable_indexÚmarkdownz0[TAKEOFF] Table extraction notice on page %d: %sÚblocksc                ó(   — | d         dz  | d         fS )Nr   é   r   r)   )Úbs    r%   ú<lambda>zNDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<lambda>k   s   € ¸aÀ¼dÀb¹jÈ!ÈAÌ$Ð=O€ r'   )Úkeyé   é   é   é   é   gÍÌÌÌÌÌÜ?g333333ã?c              3  ó    •K  — | ]}|‰v V — Œ	d S ©Nr)   ©r#   ÚkÚclean_ls     €r%   ú	<genexpr>zODrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<genexpr>~   sC   øè è € ð Ið Iàð ˜W˜ðIð Ið Ið Ið Ið Ir'   )u   cÃ´ng trÃ¬nh:u	   dá»± Ã¡n:u   háº¡ng má»¥c:u   thiáº¿t káº¿:u   chá»§ Ä‘áº§u tÆ°:u
   tá»· lá»‡:u   kÃ½ hiá»‡u:u   báº£n váº½ sá»‘:c              3  ó    •K  — | ]}|‰v V — Œ	d S r;   r)   r<   s     €r%   r?   zODrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<genexpr>Œ   s;   øè è € ð ð àð ˜W˜ðð ð ð ð ð r'   )u   ghi chÃºu   quy chuáº©nu   tiÃªu chuáº©nu   mÃ¡c bÃª tÃ´ngu   cá»‘t thÃ©pu   cá»« larsenÚk95Úk98Úcb240Úcb300Úcb400u   Ä‘á»™ dá»‘cu   báº£o dÆ°á»¡ngzTrang z: éP   u6   ### ðŸ“� KHUNG TÃŠN Báº¢N Váº¼ (TITLE BLOCK):
```yaml
z
```
u?   ### ðŸ“‹ GHI CHÃš Ká»¸ THUáº¬T & Váº¬T LIá»†U (SPECS & NOTES):
c                ó   — g | ]}d |› �‘ŒS ©z- r)   ©r#   Úts     r%   r&   zPDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<listcomp>­   s   € Ð$IÐ$IÐ$I°! X¨! X XÐ$IÐ$IÐ$Ir'   éx   u4   ### ðŸ“� CÃ�C THÃ”NG Sá»� & KÃ� HIá»†U HÃŒNH Há»ŒC:
c                ó   — g | ]}d |› �‘ŒS rH   r)   rI   s     r%   r&   zPDrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure.<locals>.<listcomp>µ   s   € Ð$DÐ$DÐ$D°! X¨! X XÐ$DÐ$DÐ$Dr'   z

z8[TAKEOFF] Error extracting AI-friendly PDF structure: %s)"ÚpymupdfÚ>app.modules.takeoff.application.vietnamese_cad_font_transcoderr   r   ÚexistsÚsuffixÚlowerÚopenr   ÚminÚlenÚnameÚupperÚrangeÚrectÚwidthÚheightr   Úfind_tablesÚtablesÚappendÚ	enumerateÚextractÚjoinÚ	ExceptionÚloggerÚdebugÚget_textÚsortedr    r   ÚanyÚcloseÚwarning))r	   r   rM   ÚdocÚtotal_pagesÚmarkdown_sectionsÚ
all_tablesÚspecs_foundr   Úpage_idxr,   Úpage_wÚpage_hÚpage_mdr\   Út_idxÚtabÚextracted_rowsÚheaderÚtable_mdÚrowÚ	clean_rowÚtab_errr/   Úsorted_blocksÚtitle_textsÚnotes_textsÚgeneral_textsr2   Úb_textÚclean_bÚx0Úy0Úx1Úy1Útitle_block_strÚsample_textsÚfull_structured_mdÚer   r>   s)                                          @@r%   Ú!extract_ai_friendly_pdf_structurez<DrawingPdfStructureMdMixin.extract_ai_friendly_pdf_structure   sF  øø€ ð
 	ˆˆˆð	
ð 	
ð 	
ð 	
ð 	
ð 	
õ ˜‘O”Oˆ	Ø×ÒÑ!Ô!ð 	 YÔ%5×%;Ò%;Ñ%=Ô%=ÀÒ%GÐ%Gà')Ø !Ø Ø "ð	ð ð ðm	Ø—,’,�s 9™~œ~Ñ.Ô.ˆCÝ�c #™hœh¨	Ñ2Ô2ˆKð P°y´~×7KÒ7KÑ7MÔ7MÐOÐOð A­#¨c©(¬(ð  Að  AÐ\gð  Að  Að  Að,Ðð 02ˆJØ%'ˆKØ&(ˆLå! +Ñ.Ô.ð N=ñ N=�Ø˜8”}�Øœœ�ØœÔ)�ð e X°¡\ÐdÐdÅSÈÁ[Ä[ÐdÐdÕSVÐW]ÑS^ÔS^ÐdÐdÐdð�ð
2Ø!×-Ò-Ñ/Ô/�FØñ *¥# f¤mÑ"4Ô"4°qÒ"8Ñ"8ØŸšÐ'YÑZÔZÐZÝ*3°FÑ*;Ô*;ð (ñ (™J˜E 3Ø-0¯[ª[©]¬]˜NØ#1ð )µS¸Ñ5HÔ5HÈ1Ò5LÐ5LØ (ð&ð &ð &ð &ð *8¸Ô):ð	&ñ &ô &˜Fð&ð &ÝIRÐSYÑIZÔIZð&ñ &ô &˜Fð
 !% u§z¢z°&Ñ'9Ô'9Ñ 9¸DÑ @Ø $ u§z¢z°5°'½CÀ¹K¼KÑ2GÑ'HÔ'HÑ HÈ4Ñ Oð(˜Hð (6°a°b°bÔ'9ð "ð " ð-"ð -"ð -"ð -"ð .1ð	-"ñ -"ô -" 	õ '*¨)¡n¤nµs¸6±{´{Ò&BÐ&BØ$-×$4Ò$4°RÑ$8Ô$8Ð$8õ '*¨)¡n¤nµs¸6±{´{Ò&BÐ&Bà (§¢Ø$(¨5¯:ª:°iÀÅ#ÀfÁ+Ä+ÀÔ6NÑ+OÔ+OÑ$OÐRVÑ$Vñ!"ô !"ð !"ð !"ð $ŸNšN¨4¯9ª9°XÑ+>Ô+>ÀÑ+EÑFÔFÐFØ&×-Ò-à,4°q©LØ38¸1±9Ø04·	²	¸(Ñ0CÔ0Cð!"ð !"ñô ð ñ øøõ !ð ð ð Ý—L’LØJØ  1™Øñô ð ð ð ð ð ð øøøøðøøøð Ÿš xÑ0Ô0Ð6°B�Ý & vÐ3OÐ3OÐ PÑ PÔ P�à �Ø �Ø "�à&ð 06ñ 06�AÝ˜1‘v”v ’z�z¥c¨!¡f¤f°¢k k°a¸´d¸a²i°iØ Ø˜qœTŸZšZ™\œ\�FØ!ð !¥S¨¡[¤[°1¢_ _Ø Ø9×QÒQØñô �Gð &Ÿmšm™oœo�GØ%& q¤T¨1¨Q¬4°°1´°q¸´tÐ%;‘N�B˜˜B ð ˜V d™]Ò*Ð*¨r°F¸S±LÒ/@Ð/@ÅSð Ið Ið Ið Ið	"ðIñ Iô Iñ Fô FÐ/@ð $×*Ò*¨7Ñ3Ô3Ð3Ð3Ýð ð ð ð ð"ðñ ô ñ ô ð 6ð$ $×*Ò*¨7Ñ3Ô3Ð3Ø#×*Ò*Ð+M°H¸q±LÐ+MÐ+MÀGÐ+MÐ+MÑNÔNÐNÑNà%×,Ò,¨WÑ5Ô5Ð5Ñ5àð TØ&*§i¢i°¸C¸R¸CÔ0@Ñ&AÔ&A�OØ—N’NØkÐSbÐkÐkÐkñô ð ð !×'Ò'Ð(R°¸A±Ð(RÐ(RÀÐ(RÐ(RÑSÔSÐSàð Ø—N’NØZØŸ)š)Ð$IÐ$I°{À4ÀCÀ4Ô7HÐ$IÑ$IÔ$IÑJÔJñKàññô ð ð !ð Ø#0°°#°Ô#6�LØ—N’NØOØŸ)š)Ð$DÐ$D°|Ð$DÑ$DÔ$DÑEÔEñFàññô ð ð "×(Ò(¨¯ª°7Ñ);Ô);Ñ<Ô<Ð<Ñ<à�IŠI‰KŒKˆKØ!'§¢Ð->Ñ!?Ô!?Ðà'9Ý # J¡¤Ý" ;Ñ/Ô/Ø ,ð	ð ð øõ ð 		ð 		ð 		Ý�NŠNØJÈAñô ð ð (*Ø !Ø Ø "ð	ð ð ð ð ð ð ð øøøøð			øøøsK   ÁCY Ä)H
L4Ì3Y Ì4
M'Ì>M"ÍY Í"M'Í'KY Ù
Y=Ù!Y8Ù2Y=Ù8Y=N)r   )r	   r
   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodrˆ   r)   r'   r%   r   r   
   sA   € € € € € Øà03ð@ð @ð @ð @ñ „\ð@ð @ð @r'   r   )Ú
__future__r   ÚloggingÚpathlibr   Útypingr   Ú	getLoggerr‰   rb   r   r)   r'   r%   ú<module>r’      s’   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðBð Bð Bð Bð Bñ Bô Bð Bð Bð Br'   