
    j5jo                        d Z ddlmZ ddlZddlZddlZddlmZ ddlZddl	m
Z
 ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ  ej@                  e!      Z"ddZ#ddZ$	 	 	 	 	 	 ddZ%y)zEImplements the concurrent and page synchronous parts of the pipeline.    )annotationsN)partial)Executor)PageContext
PdfContext)
OcrOptions)is_ocr_requiredocr_engine_hocrvalidate_pdfinfo_options)
HOCRResultdo_get_pdfinfomanage_work_folderprocess_pageset_thread_pagenosetup_pipelineworker_init)OcrmypdfPluginManager)available_cpu_countc                B   t        | j                  dz          t        |       st        | j                        S t	        |       \  }}}t        ||       \  }}t        | j                  |||      }| j                  d      j                  |j                                |S )z*Execute a pipeline for a single page hOCR.   )pageno)r   pdf_page_from_imagehocrorientation_correctionz	hocr.json)	r   r   r	   r   r   r
   get_path
write_textto_json)page_contextocr_image_outpdf_page_from_image_outr   hocr_out_results          U/var/www/html/qr/venv/lib/python3.12/site-packages/ocrmypdf/_pipelines/pdf_to_hocr.py_exec_page_hocr_syncr%   '   s    l))A-.<(!4!455EQFBM*,B "->KHa""35	F +&11&..2BCM    c                   | j                   }|j                  xs
 t               }t        t	        | j
                        |      }|dkD  rt        j                  d|        ||j                  |t        dt	        | j
                        z  ddd|j                         t        t        t        j                  j                        t         | j#                                y	)
z6Execute the OCR pipeline concurrently and output hOCR.r   z0Starting processing with %d workers concurrently   hOCRpageg      ?)totaldescunit
unit_scaledisable)use_threadsmax_workersprogress_kwargsworker_initializertasktask_argumentsN)optionsjobsr   minlenpdfinfologinfor0   dictprogress_barr   r   PILImageMAX_IMAGE_PIXELSr%   get_page_context_args)contextexecutorr6   r7   r1   s        r$   exec_pdf_to_hocrrE   =   s     ooG<<0.0Dc'//*D1KQC[Q''s7??++,,,
 #;		0J0JK!446r&   c               h   | j                   t        d      t        | j                   dd      5 }t        | |      }|dz  }t	        j
                  | j                  |       t        |||       }t        | || j                  ||      }t        |       t        ||       ddd       y# 1 sw Y   yxY w)zRun pipeline to output hOCR.Nz1output_folder must be specified for hOCR pipelineTF)work_folderretainprint_locationz
origin.pdf)output_folder
ValueErrorr   r   shutilcopy2
input_filer   r   r   rE   )r6   plugin_managerrG   rD   
origin_pdfr:   rC   s          r$   run_hocr_pipelinerQ   V   s     $LMM	))$u
 ,	!'>: </
W''4 !Xw?['"4"4g~
 	!)(+, , ,s   A/B((B1)r   r   returnr   )rC   r   rD   r   rR   None)r6   r   rO   r   rR   rS   )&__doc__
__future__r   logginglogging.handlersrL   	functoolsr   r?   ocrmypdf._concurrentr   ocrmypdf._jobcontextr   r   ocrmypdf._optionsr   ocrmypdf._pipeliner	   r
   r   ocrmypdf._pipelines._commonr   r   r   r   r   r   r   ocrmypdf._plugin_managerr   ocrmypdf.helpersr   	getLogger__name__r;   r%   rE   rQ    r&   r$   <module>rc      s   
 L "     
 ) 8 ( 
   ; 0g!,2,, *, 
	,r&   