+
    Si@                     |   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RIH!t! ^ RI"H#t# ^ RI"H$t$ ^ RI"H%t% ^ RI&H't' Rt( ^ RI)H*t* Rt+ ^ RI-t.Rt/] P`                  ! R4      t1Rt2]Pf                  ! R4      t4Rt50 R_mt6RR ]73R!R"]73R#R$]73R%R&]83R'R(]93R)R*]83/t:R+R,R-R.R/R0R1R2/t;]%! R34      t<]%! R44      t= ! R5 R64      t> ! R7 R8]?4      t@ ! R9 R:]A4      tB ! R; R<]?4      tC ! R= R>]?4      tD ! R? R@]?4      tERA tF]R`RB l4       tGRC tHRD tIRE tJRF tK]RG 4       tLRaRH ltMRbRJ ltNRcRK RL lltORdRM RN lltPReRO ltQRP tRRQ tSRR tT]HRfRS l4       tU]HRT 4       tVRRI^ ]>P                  ^ 3RU ltXRgRV ltYRhRW ltZRRI^ ]>P                  ^ 3RX lt[R`RY lt\RRI^ ]>P                  ^ R3RZ lt]R[RI^ ]>P                  ^ 3R\ lt^R] t_]`R^8X  d   ]a! ]_! 4       4      hR#   ], d    Rt+ ELi ; i  ], d    Rt/ ELi ; i)i    N)contextmanager)
QUOTE_NONE)ENOENT)wraps)iglob)BytesIO)environ)extsep)linesep)remove)normcase)normpath)realpath)NamedTemporaryFile)sleep)List)Optional)InvalidVersion)parse)Version)Image	tesseract)ndarrayTFpytesseractzutf-8z	^[a-z_]+$RGBzPage numberpage_numzOrientation in degreesorientationRotaterotatezOrientation confidenceorientation_confScriptscriptzScript confidencescript_confboxz.tessedit_create_boxfile=1 batch.nochop makeboxxmlztessedit_create_alto=1hocrztessedit_create_hocr=1tsvztessedit_create_tsv=1z3.05z4.1.0c                   &    ] tR t^VtRtRtRtRtRtR# )Outputbytesz
data.framedictstring N)	__name__
__module____qualname____firstlineno__BYTES	DATAFRAMEDICTSTRING__static_attributes__r-       ]/Users/mibo/.openclaw/workspace/.venv/lib/python3.14/site-packages/pytesseract/pytesseract.pyr)   r)   V   s    EIDFr7   r)   c                   2   a a ] tR t^]t oV 3R ltRtVtV ;t# )PandasNotSupportedc                &   < \         SV `  R 4       R# )zMissing pandas packageNsuper__init__self	__class__s   &r8   r>   PandasNotSupported.__init__^   s    12r7   r-   r.   r/   r0   r1   r>   r6   __classdictcell____classcell__rA   __classdict__s   @@r8   r:   r:   ]   s     3 3r7   r:   c                   &   a  ] tR t^bt o R tRtV tR# )TesseractErrorc                .    Wn         W n        W3V n        R # N)statusmessageargs)r@   rL   rM   s   &&&r8   r>   TesseractError.__init__c   s    %	r7   )rN   rM   rL   N)r.   r/   r0   r1   r>   r6   rD   )rG   s   @r8   rI   rI   b   s     & &r7   rI   c                   2   a a ] tR t^it oV 3R ltRtVtV ;t# )TesseractNotFoundErrorc                4   < \         SV `  \         R 24       R# )zQ is not installed or it's not in your PATH. See README file for more information.N)r=   r>   tesseract_cmdr?   s   &r8   r>   TesseractNotFoundError.__init__j   s    o 5 6	
r7   r-   rC   rF   s   @@r8   rQ   rQ   i   s     
 
r7   rQ   c                   2   a a ] tR t^qt oV 3R ltRtVtV ;t# )TSVNotSupportedc                &   < \         SV `  R 4       R# )z4TSV output not supported. Tesseract >= 3.05 requiredNr<   r?   s   &r8   r>   TSVNotSupported.__init__r   s    B	
r7   r-   rC   rF   s   @@r8   rV   rV   q        
 
r7   rV   c                   2   a a ] tR t^xt oV 3R ltRtVtV ;t# )ALTONotSupportedc                &   < \         SV `  R 4       R# )z6ALTO output not supported. Tesseract >= 4.1.0 requiredNr<   r?   s   &r8   r>   ALTONotSupported.__init__y   s    D	
r7   r-   rC   rF   s   @@r8   r[   r[   x   rY   r7   r[   c                     V P                  4         V P                  ^4       V P                  4        Wn        R#   \         d    \        ^4        L0\         d     L<i ; i  T P                  4        Yn        i ; i)   N)	terminatewait	TypeErrorr   	Exceptionkill
returncode)processcodes   &&r8   rd   rd      sd    "Q 	!  a  	!s3   ; A A# A A A# A  A# #A;c              #     "    V'       gk   V P                  4       ^,          x   V P                  P                  4        V P                  P                  4        V P                  P                  4        R#  V P                  VR7      w  r#Vx   T P                  P                  4        T P                  P                  4        T P                  P                  4        R#   \
        P                   d    \        T R4       \        R4      hi ; i  T P                  P                  4        T P                  P                  4        T P                  P                  4        i ; i5i)r_   N)timeoutzTesseract process timeout)	communicatestdinclosestdoutstderr
subprocessTimeoutExpiredrd   RuntimeError)procseconds_error_strings   &&  r8   timeout_managerrw      s    ""$Q'' 	

	<"..w.?OA
 	

 (( 	<rN:;;	< 	

s6   E#!D AE#7C  AE# -DD AE  E#c                 B   a a \        S 4      V V3R  l4       oSSn        S# )c                     < VP                  R R4      '       d   SP                  SJ d   S! V / VB Sn        SP                  # )cachedF)pop_result)rN   kwargsfuncwrappers   *,r8   r   run_once.<locals>.wrapper   s:    zz(E**goo.H"D3F3GOr7   )r   r|   )r~   r   s   f@r8   run_oncer      s'    
4[ 
 GONr7   c                     R P                  R V P                  \        4      P                  4        4       4      P	                  4       # ) c              3   $   "   T F  qx  K  	  R # 5irK   r-   .0lines   & r8   	<genexpr>get_errors.<locals>.<genexpr>   s      KKs   )joindecodeDEFAULT_ENCODING
splitlinesstrip)rv   s   &r8   
get_errorsr      s<    88 %,,-=>IIK egr7   c                    \        V '       d   V  R2MT 4       F  p \        V4       K  	  R#   \         d"   pTP                  \        8w  d   h  Rp?K<  Rp?ii ; i)z5Tries to remove temp files by filename wildcard path.*N)r   r   OSErrorerrnor   )	temp_namefilenamees   &  r8   cleanupr      sO    YYKq/IF	8 G  	ww&  !	s   .AAAc                    \         '       d-   \        V \        4      '       d   \        P                  ! V 4      p \        V \        P                  4      '       g   \        R 4      hV P                  '       g   RMV P                  pV\        9  d   \        R4      hRV P                  4       9   dK   \        P                  ! \        V P                  R4      pVP                  V RV P                  R4      4       Tp Wn        W3# )zUnsupported image objectPNGzUnsupported image format/typeA)   r   r   )r   r   )numpy_installed
isinstancer   r   	fromarrayrb   formatSUPPORTED_FORMATSgetbandsnewRGB_MODEsizepaste
getchannel)image	extension
backgrounds   &  r8   preparer      s    :eW55&eU[[))233"\\\u||I))788
ennYYx_E
(8(8(=>Lr7   c           
   #   2  "    \        R RR7      ;_uu_ 4       p\        V \        4      '       dL   VP                  \	        \        \        V 4      4      4      3x   RRR4       \        VP                  4       R# \        V 4      w  rVP                   R\         V 2pV P                  W0P                  R7       VP                  V3x  RRR4       \        XP                  4       R#   + '       g   i     L'; i  \        XP                  4       i ; i5i)tess_F)prefixdeleteN_input)r   )r   r   strnamer   r   r   r   r   r
   saver   )r   fr   input_file_names   &   r8   r   r      s     
wu==%%%ffhx'@AAA > 	  'u~E!"vhykBOJJ||J<&&/)) > 	 >= 	sG   DC= AC*C= $D;AC*C= D*C:	5C= =DDc                    R \         P                  R\         P                  RRR\        /p\        \         R4      '       dc   \         P                  ! 4       VR&   VR,          ;P
                  \         P                  ,          un        \         P                  VR,          n        V '       d   \         P                  VR&   V# \         P                  VR&   V# )rl   ro   startupinfoNenvSTARTUPINFOrn   )
rp   PIPEr	   hasattrr   dwFlagsSTARTF_USESHOWWINDOWSW_HIDEwShowWindowDEVNULL)include_stdoutr}   s   & r8   subprocess_argsr      s    
 	*//tw	F z=)) * 6 6 8}}%%)H)HH%,6,>,>})%??x M &--xMr7    c                    . p\         P                  R 8X  * pV'       d   V^ 8w  d   VRR\        V4      3,          pV\        W3,          pVe   VRV3,          pV'       d   V\        P
                  ! WHR7      ,          pVP                  4        F  p	V	R9  g   K  VP                  V	4       K  	  \        P                  RV4        \        P                  ! V3/ \        4       B p
\!        Y4      ;_uu_ 4       pT
P"                  '       d    \%        T
P"                  \'        T4      4      h RRR4       R#   \         d&   pTP                  \        8w  d   h \        4       hRp?ii ; i  + '       g   i     R# ; i)win32nicez-nN-l)posixz%r>   r$   osdr'   r%   )sysplatformr   rS   shlexsplitappendLOGGERdebugrp   Popenr   r   r   r   rQ   rw   re   rI   r   )input_filenameoutput_filename_baser   langconfigr   ri   cmd_argsnot_windows
_extensionrs   r   rv   s   &&&&&&&      r8   run_tesseractr      s2    H||w/KtqyVT3t9--EEHT4L EKK::oo'
99OOJ' ( LLx +>O,=> 
	'	'<??? *\2JKK  
(	'  +77f(**	+ 
(	'	's$   D6 92E)6E& E!!E&)E:	c                0    V ^8  d   QhR\         R\        /# )   r   return_bytes)r   bool)r   s   "r8   __annotate__r     s     ; ;3 ;d ;r7   c                     \        V R 4      ;_uu_ 4       pV'       d   VP                  4       uuRRR4       # VP                  4       P                  \        4      uuRRR4       #   + '       g   i     R# ; i)rbN)openreadr   r   )r   r   output_files   && r8   _read_outputr     sQ    	h		##% 
	 !(()9: 
			s   A%"A%%A6	c          
          V ^8  d   QhR\         \        ,          R\        \        ,          R\        R\        R\        /# )r   
extensionsr   r   ri   r   )r   r   r   intr   )r   s   "r8   r   r   &  sD     #
 #
S	#
 3-#
 	#

 #
 #
r7   c                    R P                  R V 4       4      P                  4       pV'       d   RV 2pMRp\        V 4      ;_uu_ 4       w  rxRVRVRR P                  V4      RVRVR	VR
V/p	\        R/ V	B  V U
u. uF)  p
\	        V	R,           \
         V
 2V
R9   d   RMT4      NK+  	  up
uuRRR4       # u up
i   + '       g   i     R# ; i)r   c              3   N   "   T F  p\         P                  VR 4      x  K  	  R# 5i)r   N)EXTENTION_TO_CONFIGget)r   r   s   & r8   r   .run_and_get_multiple_output.<locals>.<genexpr>.  s$      @J9	2..
s   #%z-c r   r   r   r   r   r   r   ri   TNr-      pdfr&   )r   r   r   r   r   r
   )r   r   r   r   ri   r   r   r   r   r}   r   s   &&&&&&     r8   run_and_get_multiple_outputr   &  s     XX @J eg  vh	e3n"I*-DfDw
 	 (

 (		 0126(9+F!_4, (
 

 
s   
1B<;/B7*B<7B<<C	c                     \        V 4      ;_uu_ 4       w  rxR VRVRVRVRVRVRV/p	\        R/ V	B  \        V	R,           \         V 2V4      uuRRR4       #   + '       g   i     R# ; i)	r   r   r   r   r   r   ri   Nr-   )r   r   r   r
   )
r   r   r   r   r   ri   r   r   r   r}   s
   &&&&&&&   r8   run_and_get_outputr   L  sw     
e3n"IDfDw
 	,-.vhykB
 
s   :AA*	c                    / pV P                  4       P                  R 4       Uu. uF  qDP                  V4      NK  	  pp\        V4      ^8  d   V# VP                  ^ 4      p\        V4      p\        VR,          4      V8  d   VR,          P	                  R4       V^ 8  d	   W',          p\        V4       Fm  w  r\        4       W9&   V FV  p\        V4      V8:  d   K  W8w  d    \        \        WH,          4      4      p
MWH,          p
W9,          P	                  V
4       KX  	  Ko  	  V# u upi   \         d    YH,          p
 L;i ; i)
r   rj   )
r   r   lenr{   r   	enumeratelistr   float
ValueError)r'   cell_delimiterstr_col_idxresultrowrowsheaderlengthiheadvals   &&&        r8   file_to_dictr  g  s   F141B1B41HI1H#IIn%1HDI
4y1}XXa[F[F
48}v 	RQV$vC3x1}!eCFm,C fL$  %  M= J. " !&C!s   D)%D..EEc                     V\         J d   V P                  4       # V\        J d    \        V 4       R # R #   \         d     R# i ; i)TF)r   isdigitr   r   )r  _types   &&r8   is_validr    sD    |{{}~	#J   		s   5 AAc           	      h   R  V P                  R4       4        Uu/ uF  p\        V4      ^8X  g   K  \        V^,          \        V^ ,          ,          ^,          4      '       g   KI  \        V^ ,          ,          ^ ,          \        V^ ,          ,          ^,          ! V^,          4      bK  	  up# u upi )c              3   B   "   T F  qP                  R 4      x  K  	  R# 5i): N)r   r   s   & r8   r   osd_to_dict.<locals>.<genexpr>  s     @::d##s   r   )r   r   r  OSD_KEYS)r   kvs   & r8   osd_to_dictr    s     A		$@@Br7a< 	6$RUHRUOA,>? 	6AHRUOA.r!u55@  s   B//B/&AB/c                 J   \         R .pV '       d   V\        P                  ! V 4      ,          p \        P                  ! V\        P
                  \        P                  R7      pTP                  R9  d   \        4       h. pTP                  '       dx   TP                  P                  \        4      P                  \        4       FA  pTP                  4       p\        P!                  T4      '       g   K0  TP#                  T4       KC  	  T#   \         d    \        4       hi ; i)z--list-langs)rn   ro   )r   r_   )rS   r   r   rp   runr   STDOUTr   rQ   re   rn   r   r   r   r   LANG_PATTERNmatchr   )r   r   r   	languagesr   r   s   &     r8   get_languagesr    s    ~.HEKK'''??$$
 &$&&I}}}MM(()9:@@ID::<D!!$''  & J
   '$&&'s   5D D"c                     \         P                  ! \        R.\         P                  \        \         P
                  R7      p T P                  \        4      pTP                  \        P                  R,          4      P                  R4      vr#TP                  R4      vr# \        T4      pT\        8  g   Q h T#   \         d    \        4       hi ; i  \         \"        3 d    \%        RT R24      hi ; i)z1
Returns Version object of the Tesseract version
z	--version)ro   r   rl   :
   NNr   -zInvalid tesseract version: "")rp   check_outputrS   r  r	   r   r   rQ   r   r   lstripr,   	printable	partitionr   TESSERACT_MIN_VERSIONAssertionErrorr   
SystemExit)outputraw_versionstr_versionru   versions        r8   get_tesseract_versionr$    s    
'((K($$$$	
 -- 01K!(()9)9#)>?II#NOK!++C0OKH$//// N  '$&&' N+ H7}AFGGHs   A B;  C ;C!C5c                   a V RWW5.o\         P                  V3R l\         P                  V3R l\         P                  V3R l/V,          ! 4       # )zK
Returns the result of a Tesseract OCR run on the provided image to string
txtc                  &   < \        S R .,           !  # Tr   rN   s   r8   <lambda>!image_to_string.<locals>.<lambda>      044&=Br7   c                     < R \        S !  /# )textr)  r*  s   r8   r+  r,    s    f&8$&?@r7   c                     < \        S !  # rK   r)  r*  s   r8   r+  r,        148r7   )r)   r2   r4   r5   r   r   r   r   output_typeri   rN   s   &&&&&&@r8   image_to_stringr4    sL     5$6D 	B@8 	  r7   c                ~    VR9  d   \        RV 24      hVR8X  d   RVP                  4        2pWWW5R.p\        V!  # )zM
Returns the result of a Tesseract OCR run on the provided image to pdf/hocr
r&   zUnsupported extension: z-c tessedit_create_hocr=1 Tr   )r   r   r   )r   r   r   r   r   ri   rN   s   &&&&&& r8   image_to_pdf_or_hocrr6    sS     '29+>??F-flln-=>dD4@Dt$$r7   c                    \        RR7      \        8  d   \        4       hRVP                  4        2pV RWW4R.p\	        V!  # )zM
Returns the result of a Tesseract OCR run on the provided image to ALTO XML
Trz   z-c tessedit_create_alto=1 r%   )r$  TESSERACT_ALTO_VERSIONr[   r   r   )r   r   r   r   ri   rN   s   &&&&& r8   image_to_alto_xmlr:    sI     D),BB  )&,,.)9:F5$t<Dt$$r7   c                   a VP                  4        R2pV RWW5.o\        P                  V3R l\        P                  V3R l\        P                  V3R l/V,          ! 4       # )zJ
Returns string containing recognized characters and their box boundaries
z2 -c tessedit_create_boxfile=1 batch.nochop makeboxr$   c                  &   < \        S R .,           !  # r(  r)  r*  s   r8   r+   image_to_boxes.<locals>.<lambda>)  r-  r7   c                  2   < \        R \        S !   2R^ 4      # )z char left bottom right top page
r   r  r   r*  s   r8   r+  r=  *  s!    \/0BD0I/JK
r7   c                     < \        S !  # rK   r)  r*  s   r8   r+  r=  /  r1  r7   r   r)   r2   r4   r5   r2  s   &&&&&&@r8   image_to_boxesrB    si     <<>
LM  5$6D 	B 

 	8   r7   c                     \         '       g   \        4       hR \        RR/p VP                  V4       \        P                  ! \        \        V !  4      3/ VB #   \        \
        3 d     L:i ; i)quotingsep	)
pandas_installedr:   r   updaterb   r   pdread_csvr   r   )rN   r   r}   s   && r8   get_pandas_outputrK  3  sj     ""UD1Ff ;;w1489DVDD z" s   A A.-A.c           	     4  aa \        RR7      \        8  d   \        4       hRVP                  4        2pV RWW5.o\        P
                  V3R l\        P                  VV3R l\        P                  V3R l\        P                  V3R l/V,          ! 4       # )	zh
Returns string containing box boundaries, confidences,
and other information. Requires Tesseract 3.05+
Tr8  z-c tessedit_create_tsv=1 r'   c                  &   < \        S R .,           !  # r(  r)  r*  s   r8   r+  image_to_data.<locals>.<lambda>U  r-  r7   c                  ,   < \        S R .,           S4      # r(  )rK  )rN   pandas_configs   r8   r+  rN  V  s    "3D6M#
r7   c                  ,   < \        \        S !  R R4      # )rF  rj   r?  r*  s   r8   r+  rN  Z  s    \*<d*CT2Nr7   c                     < \        S !  # rK   r)  r*  s   r8   r+  rN  [  r1  r7   )	r$  r  rV   r   r)   r2   r3   r4   r5   )r   r   r   r   r3  ri   rP  rN   s   &&&&&&f@r8   image_to_datarS  @  s     D),AA((89F5$6D 	B 
 	N8   r7   r   c                   a RVP                  4        2pV RWW5.o\        P                  V3R l\        P                  V3R l\        P                  V3R l/V,          ! 4       # )zF
Returns string containing the orientation and script detection (OSD)
z--psm 0 r   c                  &   < \        S R .,           !  # r(  r)  r*  s   r8   r+  image_to_osd.<locals>.<lambda>n  r-  r7   c                  (   < \        \        S !  4      # rK   )r  r   r*  s   r8   r+  rV  o  s    [);T)BCr7   c                     < \        S !  # rK   r)  r*  s   r8   r+  rV  p  r1  r7   rA  r2  s   &&&&&&@r8   image_to_osdrY  _  s_     '(F5$6D 	BC8 	  r7   c            	      .   \        \        P                  4      ^8X  d   \        P                  ^,          RrM\        \        P                  4      ^8X  dK   \        P                  ^,          R8X  d/   \        P                  ^,          \        P                  ^,          rM\        R\        P                  R7       ^#  \
        P                  ! V 4      ;_uu_ 4       p\        \        W!R7      4       RRR4       R#   + '       g   i     R# ; i  \         d3   p\        \        T4       R2\        P                  R7        Rp?^# Rp?i\         d?   p\        \        T4      P                   RT 2\        P                  R7        Rp?^# Rp?ii ; i)r   Nr   z(Usage: pytesseract [-l lang] input_file
)file)r   r   r	  )r   r   argvprintro   r   r   r4  rQ   r   r   typer.   )r   r   imgr   s       r8   mainr`  t  s    
388}!d$	SXX!	t 3!chhqk$9

KZZ!!S/#12 "!!!! Qm#**- a!!""QC(szz:sH   >D C<2D <D	D D F'EFF3FF__main__>
   BMPGIFPBMPGMr   PPMJPEGTIFFWEBPJPEG2000rK   r(  )r   r   r   )F)Nr   r   F)r   Nr   r   r   F)r   )Nr   r   r   r   )Nr   r   r   )bloggingrer   r,   rp   r   
contextlibr   csvr   r   r   	functoolsr   globr   ior   osr	   r
   r   r   os.pathr   r   r   tempfiler   timer   typingr   r   packaging.versionr   r   r   PILr   rS   numpyr   r   ModuleNotFoundErrorpandasrI  rG  	getLoggerr   r   compiler  r   r   r   r   r   r  r   r  r9  r)   EnvironmentErrorr:   rr   rI   rQ   rV   r[   rd   rw   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r5   r4  r6  r:  rB  rK  rS  rY  r`  r.   r  r-   r7   r8   <module>r     s    	    
 %             '    , # %  O 
		=	) zz+&  J$}c2xo159xo-/ 
;	#
$	"	     )  3) 3
&\ &
- 

& 

' 

"  $*  0&LR;#
L
6 F 
 
8 
 
: 
	
(%.%, 
	
6
E 
	
B 
	
*( z
TV
 E  O  s$   H #H. 	H+*H+.	H;:H;