
    TAi                    ^   S r SSKJr  SSKr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JrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJr  Sr\\-  r\R>                  " \ 5      r! " S S\"5      r#SS jr$\	SS j5       r%          SS jr&SS jr'SS.         SS jjr(g)z Interface to unpaper executable.    )annotationsN)Iterator)contextmanager)Decimal)Path)PIPESTDOUT)TemporaryDirectory)Version)Image)SubprocessOutputError)get_versionruni   c                  2   ^  \ rS rSrSr SU 4S jjrSrU =r$ )UnpaperImageTooLargeError#   z:To capture details when an image is too large for unpaper.c                |   > Xl         X l        UR                  X5      U l        [        TU ]  U R                  5        g )N)whformatmessagesuper__init__)selfr   r   r   	__class__s       R/var/www/html/land-ocr/venv/lib/python3.13/site-packages/ocrmypdf/_exec/unpaper.pyr   "UnpaperImageTooLargeError.__init__&   s0     ~~a+&    )r   r   r   )z?Image with size {}x{} is too large for cleaning with 'unpaper'.)__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__)r   s   @r   r   r   #   s    D R		' 	'r   r   c                 (    [        [        SSS95      $ )Nunpaperz(?m).*?(\d+(\.\d+)(\.\d+)?))regex)r   r    r   r   versionr*   2   s    ;y0NOPPr   c              #  b  #    [         R                  " U 5       nUR                  UR                  -  [        :  a  [        UR                  UR                  S9e S S S 5        [        SS9 n[        U5      nU nUS-  nXEU4v   S S S 5        g ! , (       d  f       N9= f! , (       d  f       g = f7f)N)r   r   T)ignore_cleanup_errorsz
output.pnm)r   openwidthheightUNPAPER_IMAGE_PIXEL_LIMITr   r
   r   )
input_fileimtmpdirtmppath	input_png
output_pnms         r   _setup_unpaper_ior7   6   s     	J	288bii#<<+bhh"))DD = 
  
$	76v,	 |+
W,, 
8	7	 
 	 
8	7s5   B/A BB/+B	B/
BB/
B,(B/c                  SSS[        [        US5      5      /U-   n[        U 5       u  pVnUR                  [        R
                  " U5      [        R
                  " U5      /5        [        USS[        [        USS9   [        R                  " U5       nUR                  XU4S9  S S S 5        S S S 5        g ! , (       d  f       N= f! [         a  n	[        S[        U5      -   5      U	eS n	A	ff = f! , (       d  f       g = f)	Nr'   z-vz--dpi   T)	close_fdscheckstderrstdoutcwdlogs_errors_to_stdout)dpizCunpaper: failed to produce the expected output file.  Called with: )strroundr7   extendosfspathr   r	   r   r   r-   saveOSErrorr   )
r1   output_filer@   	mode_argsargs_unpaperr5   r6   r3   imoutes
             r   run_unpaperrM   F   s     tWc%Q-.@AIML	:	&*I9& 	RYYy1299Z3HIJ"&	
	J'5

;#J
7 (' 
'	&& (' 	'#l#$ 		+ 
'	&sN   AC3?C	B8'C	8
C	C	C3C		
C0C++C00C33
Dc                v    [         R                  " U 5      n[        S U 5       5      (       a  [        S5      eU$ )Nc              3  \   #    U  H"  nS U;   =(       d    US:H  =(       d    US:H  v   M$     g7f)/.z..Nr)   ).0args     r   	<genexpr>'validate_custom_args.<locals>.<genexpr>j   s)     
MC3J3#*3t3s   *,z&No filenames allowed in --unpaper-args)shlexsplitany
ValueError)argsunpaper_argss     r   validate_custom_argsr\   h   s3    ;;t$L

M
MMMABBr   )r[   c                   / SQnU(       d  Un [        XX#S9  U$ ! [         a*  n[        R                  [	        U5      5        U s S nA$ S nAff = f)N)	z--layoutnonez--mask-scan-size100z--no-border-alignz--no-mask-centerz--no-grayfilterz--no-blackfilterz--no-deskew)r@   rI   )rM   r   logwarningrA   )r1   rH   r@   r[   default_argsrL   s         r   cleanrc   o   sN    
L #JM$ CFs    
AA
A
A)returnr   )r1   r   rd   z!Iterator[tuple[Path, Path, Path]])
r1   r   rH   r   r@   DecFloatrI   	list[str]rd   None)rZ   rA   rd   rf   )
r1   r   rH   r   r@   re   r[   zlist[str] | Nonerd   r   ))r#   
__future__r   loggingrD   rV   collections.abcr   
contextlibr   decimalr   pathlibr   
subprocessr   r	   tempfiler
   packaging.versionr   PILr   ocrmypdf.exceptionsr   ocrmypdf.subprocessr   r   r0   floatre   	getLoggerr   r`   	Exceptionr   r*   r7   rM   r\   rc   r)   r   r   <module>rw      s    ' "  	  $ %   # ' %  5 0 . U?!'	 'Q - -#'19FO	D &* 
	
 # 
r   