
    9i7                        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  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  SSKJ r   \RB                   " 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)	DetResult)	benchmark)	HPIConfig)PaddlePredictorOption   )(AutoParallelImageSimpleInferencePipeline)BasePipeline)CropByBoxes   )SealRecognitionResultc            !         ^  \ rS rSrSr    SS\S\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 PipelineNconfigdevice	pp_optionuse_hpip
hpi_configreturnc                 h  > [         TU ]  X#XES9  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)aS  Initializes the seal recognition pipeline.

Args:
    config (Dict): Configuration dictionary containing various settings.
    device (str, optional): Device to run the predictions on. Defaults to None.
    pp_option (PaddlePredictorOption, optional): PaddlePredictor options. Defaults to None.
    use_hpip (bool, optional): Whether to use the high-performance
        inference plugin (HPIP) by default. Defaults to False.
    hpi_config (Optional[Union[Dict[str, Any], HPIConfig]], optional):
        The default high-performance inference configuration dictionary.
        Defaults to None.
)r   r   r   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   )r0   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    doc_preprocessor_configlayout_det_configlayout_kwargsr+   r,   r-   r.   seal_ocr_config	__class__s                 u/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/pipelines/seal_recognition/pipeline.pyr4   !_SealRecognitionPipeline.__init__%   s   * 	 	 	
 %+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'   )r>   rG   rH   s      rD   check_model_settings_valid3_SealRecognitionPipeline.check_model_settings_valido   sl     01$:S:SMMd 01)t ,,h rF   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)r>   rM   rN   r'   r#   s        rD   get_model_settings+_SealRecognitionPipeline.get_model_settings   s]    " (/4E4M#'#<#< +t37HD7P'+$',$'#'#<#< !5!5
 	
rF   inputlayout_thresholdr,   r-   r.   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)NrJ   z0the input params for model settings are invalid!r#   )rM   rN   
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,   r-   r.   zNo more layout det resultsr   boxeslabel)sealimg)
input_path
page_indexdoc_preprocessor_resrH   seal_res_listrG   )rQ   rK   
isinstancelistiter	enumerater<   r=   	instancesr7   r:   r9   nextStopIteration
ValueErrorappendziplowerr;   leninput_pathspage_indexesr   )+r>   rS   rM   rN   r'   rH   rT   r,   r-   r.   rU   rV   rW   rX   rY   rZ   kwargsrG   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_imgrc   ri   rj   rk   single_img_ress+                                              rD   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<   r7   r=   r9   r:   r#   r'   )NNFN)NNNNNNNNNNNNNN)__name__
__module____qualname____firstlineno____doc__r   strr   boolr   r   r   r   r4   r   rK   rP   rQ   r   npndarrayfloatr   intr   r   __static_attributes____classcell__)rC   s   @rD   r   r   !   s8   #
 +/AEH2H2 H2 )	H2
 H2 U4S>9#<=>H2 
H2 H2T " 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<rF   r   ocrc                   0    \ rS rSrS/r\S 5       rS rSrg)SealRecognitionPipelineiH  seal_recognitionc                     [         $ )N)r   )r>   s    rD   _pipeline_cls%SealRecognitionPipeline._pipeline_clsL  s    ''rF   c                 &    UR                  SS5      $ )Nr0   r   )r5   )r>   r   s     rD   _get_batch_size'SealRecognitionPipeline._get_batch_sizeP  s    zz,**rF    N)	r   r   r   r   entitiespropertyr   r   r   r   rF   rD   r   r   H  s!    "#H( (+rF   r   )$typingr   r   r   r   r   r   numpyr   utilsr
   
utils.depsr   common.batch_samplerr   common.readerr   models.object_detection.resultr   utils.benchmarkr   	utils.hpir   utils.pp_optionr   	_parallelr   baser   
componentsr   resultr   time_methodsr   r   r   rF   rD   <module>r      sz    ; :   2 5 & 7 ( " 4 @  $ ) c<| c< c<L	 +F +  +rF   