
    Fg                       S 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JrJ	r	J
r
JrJrJr  SSKrSSKJr  SSKJr  SSKJr  \(       a  SSKJr  SS	KJr  S
rSS jrSS jrSS jr/ SSSSSSSSSSSSSSSSSSSS4                                             SS jjrSS jrSS jrS S!S jjr \!S:X  a  \RD                  " \ " 5       5        gg)"zlA command line tool for extracting text and images from PDF and
output it to plain text, html, xml or tags.
    )annotationsN)TYPE_CHECKINGAny	ContainerIterableListOptional)hf_hub_download)__version__)PDFValueError)LAParams)AnyIO))z.htmhtml)z.htmlr   )z.xmlxml)z.tagtagc                     SS K n [        R                  " 5         U R                  R                  R                  [        R                  5        g )Nr   )doclayout_yolologgingbasicConfigutilsLOGGERsetLevelWARNING)r   s    ^/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/pdf2zh/pdf2zh.py	setup_logr      s/    ((9    c                    U  Vs/ s H+  n[         R                  R                  U5      (       a  M)  UPM-     nnU$ s  snf N)ospathexists)filesfilemissing_filess      r   check_filesr%   "   s1    &+Hed277>>$3GTeMH Is   (;;c                    U R                  5       R                  5       S:X  a  g  [        U 5      $ ! [         a    [        R
                  " SU  35      ef = f)Ndisabledzinvalid float value: )lowerstripfloat
ValueErrorargparseArgumentTypeError)xs    r   float_or_disabledr/   '   sS    wwyJ&FQx F((+@)DEEFs	   
0 $A-textzutf-8F g      ?normalc           
        SS K nSS KnU (       d  [        S5      eUS:X  a0  US:w  a*  [         H   u  nnUR	                  U5      (       d  M  UnM"     [
        R                  n[        SSS9nUR                  U5      nU  GHj  n[        R                  R                  [        R                  R                  U5      5      S   n[        R                  " U5      nUR                  n SS	/n!0 n"U H   n#U! H  n$U#R!                  U$5      U"U$'   M     M"     UR#                  5       n%[%        S
U%5       Hv  n&S Hm  n' UR'                  U&U' S35      n(U(S   S:X  aK  U! HC  n$UR'                  U&U' SU$ 35      n)U)S   S:X  d  M%  UR)                  U&U' SU$ 3U"U$    S35        ME     Mm  Mo     Mx     UR+                  U S35        [        U S3S5       n*UR,                  R.                  " U*40 [1        5       D6n+S S S 5        W+R3                  5        H&  u  n,n-UR5                  U,U-R7                  5       5        M(     Un.[        R                  " U S35      n/U/R9                  U.5        [%        U 5       H  n0U/R;                  U U0-   U0S-  S
-   5        M      U.R+                  U S3S
S9  U/R+                  U S3S
S9  U.R=                  5         U/R=                  5         [        R>                  " U S35        GMm     g !    GM  = f! , (       d  f       GN= f)Nr   z Must provide files to work upon!r1   r0   z'juliozhao/DocLayout-YOLO-DocStructBenchz*doclayout_yolo_docstructbench_imgsz1024.pt)repo_idfilenamezchina-sstiro   )z
Resources/r2   FontdictzFont/nullz 0 Rz-en.pdfrb   z-zh.pdf)deflatez	-dual.pdf) r   pdf2zh.high_levelr   OUTPUT_TYPESendswithsysstdoutr
   YOLOv10r   r    splitextbasenamepymupdfopen
page_countinsert_fontxref_lengthrangexref_get_keyxref_set_keysave
high_levelextract_text_to_fplocalsitemsupdate_streamencodeinsert_file	move_pagecloseremove)1r"   outfilelaparamsoutput_typecodecstrip_controlmaxpagespagespasswordscalerotation
layoutmode
output_dirdebugdisable_cachingvfontvcharthreadlang_inlang_outservicekwargsr   pdf2zhoverridealttypeoutfppthmodelr#   r6   doc_enrI   	font_listfont_idpagefontxreflenxreflabelfont_res
font_existfp	obj_patchobj_idops_newdoc_zhdoc_dualids1                                                    r   extract_textr   0   s   0 >??fC!-Hg))% ". ::E
 9=C ""3'E77##BGG$4$4T$:;A>d#&&
(	D! $ 0 0 6 "  $$&!W%D+%224E7$HH{f,$-D)/)<)< $uTF&;*J  *!}6 & 3 3$(UG5*?GDM?RVAW!" %. - , & 	xj()XJg&-$//BB2RRI .  )0OFG
   )9:  1 <<8*G 45V$
#BzBQ
; $xj(!4
),a8
		XJg&'_ b 3 .-s   4AK.9"K.&K7.K4	7
L	c                    [         R                  " [        SS9n U R                  S[        S SSS9  U R                  SSS	S
[
         3S9  U R                  SSSSSS9  U R                  SSS9nUR                  SS[        SS9  UR                  SS[        SSS9  UR                  SS[        SS S9  UR                  S!S"[        SS#S9  UR                  S$S%[        S&S'S9  UR                  S(S)[        S&S*S9  UR                  S+S,[        S-S.S9  UR                  S/S0[        S1S2S9  UR                  S3S4SS5S69  UR                  S7SS8S69  U $ )9NT)descriptionadd_helpr"   *zOne or more paths to PDF files.)typedefaultnargshelpz	--versionz-vversionzpdf2zh v)actionr   z--debugz-dF
store_truezUse debug logging level.)r   r   r   ParserzUsed during PDF parsing)r   z--pagesz-pz"The list of page numbers to parse.)r   r   z
--passwordz-Pr2   z,The password to use for decrypting PDF file.)r   r   r   z--vfontz-fz'The regex to math font name of formula.z--vcharz-cz'The regex to math character of formula.z	--lang-inz-liautozThe code of source language.z
--lang-outz-lozThe code of target language.z	--servicez-sgooglez#The service to use for translating.z--threadz-t   z-The number of threads to execute translation.z--interactivez-izInteract with GUI.)r   r   z--sharezEnable Gradio Share)r,   ArgumentParser__doc__add_argumentstrr   add_argument_groupint)parserparse_paramss     r   create_parserr      s   $$4HF
.   ;-(	   '   ,,- - L 1	   ;   6   6   +   +   2   <   !	   "   Mr   c           	     z   [        5       R                  U S9nUR                  (       a  / nUR                  R                  S5       Hk  nSU;   aE  UR                  S5      u  pEUR	                  [        [        U5      S-
  [        U5      5      5        MN  UR                  [        U5      S-
  5        Mm     X!l        U$ )N)args,r0   r8   )r   
parse_argsr`   splitextendrL   r   append)r   parsed_argsr`   pstartends         r   r   r      s    /,,$,7K""((-AaxWWS\
U3u:>3s8<=SVaZ( . "r   c                \   [        U 5      n[        UR                  5      nU(       a=  [        S[        R
                  S9  U H  n[        SU 3[        R
                  S9  M      gUR                  (       a  SSKJn  U" UR                  5        g[        5         [        S0 [        U5      D6  g)Nz!The following files do not exist:)r#   z  r   )	setup_gui )r   r%   r"   printrB   stderrinteractive
pdf2zh.guir   sharer   r   vars)r   r   r$   r#   r   s        r   mainr     s    T"K 1 12M1

C!DBtf+CJJ/ "(+##$K%4$%r   __main__)returnNone)r"   	List[str]r   r   )r.   r   r   zOptional[float]).r"   zIterable[str]rZ   r   r[   zOptional[LAParams]r\   r   r]   r   r^   boolr_   r   r`   zOptional[Container[int]]ra   r   rb   r*   rc   r   rd   r   re   zOptional[str]rf   r   rg   r   rh   r   ri   r   rj   r   rk   r   rl   r   rm   r   rn   r   r   r   )r   zargparse.ArgumentParser)r   Optional[List[str]]r   zargparse.Namespacer   )r   r   r   r   )#r   
__future__r   r,   r   r   rB   typingr   r   r   r   r   r	   rG   huggingface_hubr
   ro   r   pdf2zh.pdfexceptionsr   pdf2zh.layoutr   pdf2zh.utilsr   r@   r   r%   r/   r   r   r   r   __name__exitr   r   r   <module>r      s   #   	 
 J J  +  .&"V:
F #'&* $!+``` !` 	`
 ` ` ` $` ` ` ` ` ` ` `  !`" #`$ %`& '`( )`* +`, -`. /`F]@ & zHHTV r   