
    =pj8                        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  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  SSKJr  \R@                   " S S\5      5       r!\" S5       " S S\5      5       r"g)    )AnyDictListOptionalTupleUnionN   )logging)pipeline_requires_extra   )ImageBatchSampler)	ReadImage)	HPIConfigPaddlePredictorOption)	DetResult)	benchmark   )(AutoParallelImageSimpleInferencePipeline)BasePipeline)CropByBoxes   )SealRecognitionResultc            !         ^  \ rS rSrSrSSSSSSS.S\S\\   S\\   S	\\\\4      S
\\	   S\
S\\\\\4   \4      SS4U 4S jjjrS\S\S\
4S jrS\\
   S\\
   S\\
   S\4S jr              S#S\\\\   \R(                  \\R(                     4   S\\
   S\\
   S\\
   S\\\\\   4      S\\\\4      S\\
   S\\\\\\4   4      S\\   S\\   S\\   S\\   S\\   S\\   S \\   S\4 S! jjrS"rU =r$ )$_SealRecognitionPipeline    zSeal Recognition PipelineNFdeviceengineengine_config	pp_optionuse_hpip
hpi_configconfigr   r   r   r    r!   r"   returnc          
      z  > [         TU ]  " SUUUUUUS.UD6  UR                  SS5      U l        U R                  (       a:  UR                  S0 5      R                  SSS05      n	U R	                  U	5      U l        UR                  SS5      U l        U R                  (       a  UR                  S	0 5      R                  S
SS05      n
0 nU
R                  SS5      =nb  XS'   U
R                  SS5      =nb  XS'   U
R                  SS5      =n b  XS'   U
R                  SS5      =n b  XS'   U R                  " U
40 UD6U l        UR                  S0 5      R                  SSS05      nU R	                  U5      U l	        [        5       U l        [        UR                  SS5      S9U l        [        SS9U l        g)a  Initializes the seal recognition pipeline.

Args:
    config (Dict): Configuration dictionary containing various settings.
    device (Optional[str], optional): The device to use for prediction. Defaults to `None`.
    engine (Optional[str], optional): Inference engine. Defaults to `None`.
    engine_config (Optional[Dict[str, Any]], optional): Engine-specific config. Defaults to `None`.
    pp_option (Optional[PaddlePredictorOption], optional): Paddle predictor options.
        Defaults to `None`.
    use_hpip (bool, optional): Whether to use HPIP. Defaults to `False`.
    hpi_config (Optional[Union[Dict[str, Any], HPIConfig]], optional):
        HPIP configuration. Defaults to `None`.
r   use_doc_preprocessorTSubPipelinesDocPreprocessorpipeline_config_errorz+config error for doc_preprocessor_pipeline!use_layout_detection
SubModulesLayoutDetectionmodel_config_errorz"config error for layout_det_model!	thresholdN
layout_nmslayout_unclip_ratiolayout_merge_bboxes_modeSealOCRz#config error for seal_ocr_pipeline!
batch_sizer   )r3   BGR)format )super__init__getr&   create_pipelinedoc_preprocessor_pipeliner*   create_modellayout_det_modelseal_ocr_pipeliner   _crop_by_boxesr   batch_samplerr   
img_reader)selfr#   r   r   r   r    r!   r"   kwargsdoc_preprocessor_configlayout_det_configlayout_kwargsr.   r/   r0   r1   seal_ocr_config	__class__s                    q/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/pipelines/seal_recognition/pipeline.pyr8   !_SealRecognitionPipeline.__init__$   s   2 	 	
'!	
 	
 %+JJ/Et$L!$$&,jj&D&H&H!+-Z'# .2-A-A'.D* %+JJ/Et$L!$$ &

< < @ @!%'KL! M.22;EE	R-6k*/33L$GG
T.8l+'8'<'<)4( # 	
 8K34,=,A,A.- ( 	
 =U89$($5$5!%%2%D! !**^R8<</1VW
 "&!5!5o!F)m.&**\ST:UV#51    model_settingslayout_det_resc                     US   (       a(  U R                   (       d  [        R                  " S5        gUS   (       aB  Ub  [        R                  " S5        gU R                  (       d  [        R                  " S5        gg)a?  
Check if the input parameters are valid based on the initialized models.

Args:
    model_settings (Dict): A dictionary containing input parameters.
    layout_det_res (DetResult): Layout detection result.

Returns:
    bool: True if all required models are initialized according to input parameters, False otherwise.
r&   zRSet use_doc_preprocessor, but the models for doc preprocessor are not initialized.Fr*   z^The layout detection model has already been initialized, please set use_layout_detection=FalsezRSet use_layout_detection, but the models for layout detection are not initialized.T)r&   r
   errorr*   )rB   rL   rM   s      rI   check_model_settings_valid3_SealRecognitionPipeline.check_model_settings_validx   sl     01$:S:SMMd 01)t ,,h rK   use_doc_orientation_classifyuse_doc_unwarpingr*   c                 x    Uc  Uc  U R                   nOUSL d  USL a  SnOSnUc  U R                  n[        UUS9$ )a  
Get the model settings based on the provided parameters or default values.

Args:
    use_doc_orientation_classify (Optional[bool]): Whether to use document orientation classification.
    use_doc_unwarping (Optional[bool]): Whether to use document unwarping.
    use_layout_detection (Optional[bool]): Whether to use layout detection.

Returns:
    dict: A dictionary containing the model settings.
TF)r&   r*   )r&   r*   dict)rB   rR   rS   r*   r&   s        rI   get_model_settings+_SealRecognitionPipeline.get_model_settings   s]    " (/4E4M#'#<#< +t37HD7P'+$',$'#'#<#< !5!5
 	
rK   inputlayout_thresholdr/   r0   r1   seal_det_limit_side_lenseal_det_limit_typeseal_det_threshseal_det_box_threshseal_det_unclip_ratioseal_rec_score_threshc              +      #    U R                  X#U5      nU R                  UU5      (       d  SS0v   UnUb#  [        U[        5      (       d  U/n[	        U5      n[        U R                  U5      5       GHQ  u  nnU R                  UR                  5      nUS   (       a  [        U R                  UUUS95      nOU Vs/ s H  nSU0PM	     nnU Vs/ s H  nUS   PM
     nnUS   (       dV  UcS  U Vs/ s H  n0 PM     nn[        U R                  UU
UUUUUS95      nU H  nSUS	'   M
     U Vs/ s H  nU/PM     nnGO;US   (       a  [        U R                  UUUUU	S
95      nO(/ nU H   n [        U5      nUR                  U5        M"     / nS/n[!        UU5       Hq  u  n nUS    HH  n!U!S   R#                  5       S;   d  M  U R%                  U U!/5      n"U"S   n"UR                  U"S   5        MJ     UR                  ['        U5      5        Ms     [        U R                  UU
UUUUUS95      n[!        US S USS  5       V#V$s/ s H  u  n#n$UU#U$ PM     nn#n$U H  n%Sn&U% H  nU&US	'   U&S-  n&M     M     [!        UR(                  UR*                  UUU5       H  u  n'n(n)nn%U'U(U)UU%US.n*[-        U*5      v   M!     GMT     g s  snf s  snf s  snf s  snf ! [         a    [        S5      ef = fs  sn$n#f 7f)NrO   z0the input params for model settings are invalid!r&   )rR   rS   
output_imgr*   )text_det_limit_side_lentext_det_limit_typetext_det_threshtext_det_box_threshtext_det_unclip_ratiotext_rec_score_threshr   seal_region_id)r.   r/   r0   r1   zNo more layout det resultsr   boxeslabel)sealimg)
input_path
page_indexdoc_preprocessor_resrM   seal_res_listrL   )rV   rP   
isinstancelistiter	enumerater@   rA   	instancesr;   r>   r=   nextStopIteration
ValueErrorappendziplowerr?   leninput_pathspage_indexesr   )+rB   rX   rR   rS   r*   rM   rY   r/   r0   r1   rZ   r[   r\   r]   r^   r_   rC   rL   external_layout_det_results_
batch_dataimage_arraysdoc_preprocessor_resultsarritemdoc_preprocessor_imageslayout_det_resultsflat_seal_resultsseal_resseal_resultscropped_imgschunk_indicesdoc_preprocessor_imagebox_infocrop_img_infoijseal_results_for_imgrh   rn   ro   rp   single_img_ress+                                              rI   predict _SealRecognitionPipeline.predict   s    ( 00(=Q
 ..~~NNNOO&4#&294@@/J.K+*./J*K'&t'9'9%'@AMAz??:+?+?@L45+/22$5Q*; 3 ,( LX+X<C\3,?<(+X 0H'/Gt\"/G $ '
 ##9:/72I%J2IQb2I"%J$(**/0G,?(7,?.C.C + 
%! !2H12H-. !23DE3D43DE!"89)---3&6'10C5M . *& *,&4K-12M-NN +11.A 5  "!">A+-??:*N %37$;#G,224@,0,?,? 6
-M -:!,<M(//e0DE %< "((\):;? %)**$0G,?(7,?.C.C + 
%! !$M#2$6ab8I J  J1 &a* J   
 -9(%&N$85C!12&!+ %9 -9 &&''("$$ #-",,@&4%9&4" ,N;;I B ,Y' &K  F"  - K",-I"JJK< sc   B=K>?KK>K"K>5K2K>3K 2K>3K>A	K>BK>K8BK>K55	K>)r?   r@   r;   rA   r=   r>   r&   r*   )NNNNNNNNNNNNNN)__name__
__module____qualname____firstlineno____doc__r   r   strr   r   boolr   r   r8   r   rP   rU   rV   r   npndarrayfloatr   intr   r   __static_attributes____classcell__)rH   s   @rI   r   r       so   # !% $2659AER2R2 	R2
 R2  S#X/R2 12R2 R2 U4S>9#<=>R2 
R2 R2h " 4= 	 D
&.tn
 $D>
 'tn	

 

F 8<,0/3FJ9=%)KO2615-1+//31515!T<S$s)RZZbjj1AABT< '/tnT< $D>	T<
 'tnT< !y$y/'A!BCT< #5#56T< TNT< &eE53F,F&GHT< #+3-T< "*#T< &c]T< "%T< &e_T<  (T<   (!T<$ 
%T< T<rK   r   ocrc                   0    \ rS rSrS/r\S 5       rS rSrg)SealRecognitionPipelineiQ  seal_recognitionc                     [         $ )N)r   )rB   s    rI   _pipeline_cls%SealRecognitionPipeline._pipeline_clsU  s    ''rK   c                 &    UR                  SS5      $ )Nr3   r   )r9   )rB   r#   s     rI   _get_batch_size'SealRecognitionPipeline._get_batch_sizeY  s    zz,**rK   r6   N)	r   r   r   r   entitiespropertyr   r   r   r6   rK   rI   r   r   Q  s!    "#H( (+rK   r   )#typingr   r   r   r   r   r   numpyr   utilsr
   
utils.depsr   common.batch_samplerr   common.readerr   modelsr   r   models.object_detection.resultr   utils.benchmarkr   	_parallelr   baser   
componentsr   resultr   time_methodsr   r   r6   rK   rI   <module>r      sw    ; :   2 5 & 6 7 ( @  $ ) m<| m< m<`	 +F +  +rK   