
    Miz              
       b   S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
rS SKJr  S SKJr  S SKJrJrJrJr  S S	KJrJrJr  S S
KJr  S SKJr  S rSS\4S jjrS rS r SS\4S jjr!SS\"4S jjr#SS\	\"   4S jjr$S r%       SS\4S jjr&     SS\"S\S\S-  S\	\   4S jjr'g)    N)ProcessPoolExecutor)partial)repeat)List)add_links_and_refs)	get_pages)handle_hyphens
merge_textpostprocess_textsort_blocks)PagesTableInputsTables)settings)table_cell_textc                 `    [         R                  " U 5      n U(       a  U R                  5         U $ N)pdfiumPdfDocument
init_forms)pdfflatten_pdfs     l/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/pdftext/extraction.py	_load_pdfr      s&    


S
!C J    returnc                 $    [        [        XU5      $ r   )r   pdf_doc)
page_ranger   quote_looseboxs      r   _get_page_ranger!      s    Wj~FFr   c                 $    U R                  5         g r   )close)r   s    r   worker_shutdownr$       s    MMOr   c                 j    [        X5      q[        R                  " [	        [
        [        5      5        g r   )r   r   atexitregisterr   r$   )pdf_pathr   s     r   worker_initr)   $   s!     .G
OOGOW56r   c                    [        X5      nUc  [        [        U5      5      nUb&  [        U[        U5      [        R
                  -  5      nUb  US::  a  [        XQX#5      nUR                  5         U$ UR                  5         [        U5      n[        R                  " [        U5      U-  5      n[        U5       Vs/ s H  oX-  US-   U-   PM     n	n[        U[        X4S9 n
[        U
R                  [        U	[        U5      [        U5      5      5      nS S S 5        W VVs/ s H  o  H  oPM     M     nnnU$ s  snf ! , (       d  f       N1= fs  snnf )N   )max_workersinitializerinitargs)r   rangelenminr   WORKER_PAGE_THRESHOLDr   r#   listmathceilr   r)   mapr!   r   )r(   r   r   r    workersr   pagespages_per_workeripage_range_chunksexecutorsublistpageordered_pagess                 r   
_get_pagesr@   ,   s6   .G3w<(
gs:(2P2PPQ'Q,'{KMMOj!JyyZ7!:;^cdk^lm^lYZA$8!a%CS9ST^lm	kU]Tk	lpxX\\/3Df[FY[abp[qrs 
m */Cg74T7TMC n	l	l Ds   =D?%4E&E
Ec           	      :    [        XX#XTS9nSR                  U5      $ )N)sorthyphensr   r7   r   
)paginated_plain_text_outputjoin)r(   rB   rC   r   r   r7   texts          r   plain_text_outputrH   F   s"    &xGls  ND99T?r   c           	      ~    [        XXTS9n/ nU H*  nUR                  [        XUS9R                  5       5        M,     U$ )N)r7   r   )rB   rC   )r@   appendr
   strip)	r(   rB   rC   r   r   r7   r8   rG   r>   s	            r   rE   rE   K   s>    hG]EDJt@FFHI Kr   c                     U S   R                   U S'   [        [        U S   5      SS9U S'   U(       d  U S	 g U S    H  nUS   R                   US'   M     g )NbboxrG   T)keep_hyphenschars)rM   r	   r   )span
page_widthpage_height
keep_charschars        r   _process_spanrU   S   sZ    <$$DL!"24<"@tTDLMMD<,,DL "r   c           
         [        XXtUS9nU(       d'  [        U S5      n	[        X5        U	R                  5         U GH  n
U
S   U
S   pU
S    H  n[	        UR                  5       5       H  nUS;  d  M  X	 M     US   R                  US'   US    HX  n[	        UR                  5       5       H  nUS	;  d  M  X	 M     US   R                  US'   US
    H  n[        UXU5        M     MZ     M     U(       a  [        U
S   5      U
S'   U
S   S:X  d  U
S   S:X  d  M  U
S   U
S   sU
S'   U
S'   U
S   S   U
S   S   U
S   S   U
S   S   /U
S'   GM     U$ )N)r7   r   r    Fwidthheightblocks)linesrM   rM   rZ   )spansrM   r[   rotationZ   i        r   r+   )	r@   r   r   r#   r3   keysrM   rU   r   )r(   rB   r   rS   r   r    disable_linksr7   r8   r   r>   rQ   rR   blockklinerP   s                    r   dictionary_outputre   ]   sy    hGm{|E%(5&		"&w-hK(^E%**,'-- ( "&M..E&Mgdiik*A 11 G +  $F|00V MD!$
L * ' $ (h8DN
r!T*%5%<,0NDM)DM4> LOT&\!_d6l1otTZ|\]_DL) * Lr   r(   table_inputsr8   c           	          U(       d  [        XX4USS9n[        U5      [        U5      :X  d   S5       e/ n[        Xa5       HJ  u  p[        U	S   XS   5      n
[        U
5      [        U	S   5      :X  d   S5       eUR	                  U
5        ML     U$ )NT)r   r   r    r7   rS   z+Number of pages and table inputs must matchtablesimg_sizez,Number of tables and table inputs must match)re   r0   zipr   rJ   )r(   rf   r   r   r    r7   r8   
out_tablesr>   table_inputrh   s              r   table_outputrm      s     (Va  KR  _c  du:\**Y,YY* J 5 X!6*>UV6{c+h"788h:hh8&! 6 r   )FT)NFTN)FFNFN)FNFFTFN)NFTNN)(r&   r4   concurrent.futuresr   	functoolsr   	itertoolsr   typingr   	pypdfium2r   pdftext.pdf.linksr   pdftext.pdf.pagesr   pdftext.postprocessingr	   r
   r   r   pdftext.schemar   r   r   pdftext.settingsr   pdftext.tablesr   r   r!   r$   r)   r@   strrH   rE   rU   re   rm    r   r   <module>r{      s      2     0 ' \ \ 5 5 % *G5 G7ch 4ps 
z~  @C  {D - & &X  4< 
&\r   