
    9i	                         S SK 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Jr  \R&                  " \\R(                  S9 " S S\5      5       rg)    )DictN)Metrics)
OutputKeys)"remove_space_between_chinese_chars)default_group)torch_nested_numpify   )Metric)METRICS
MetricKeys)	group_keymodule_namec                   Z   ^  \ rS rSrSrU 4S jrS\S\4S jrS rSS jr	S	 r
S
 rSrU =r$ )AccuracyMetric   z}The metric computation class for classification classes.

This metric class calculates accuracy for the whole input batches.
c                 B   > [         TU ]  " U0 UD6  / U l        / U l        g N)super__init__predslabels)selfargskwargs	__class__s      b/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/metrics/accuracy_metric.pyr   AccuracyMetric.__init__   s#    $)&)
    outputsinputsc                 4   [         R                  U;   a  [         R                  O[         R                  nX#   nS n[         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  4 H  nXa;   d  M
  X   c  M  X   n  O   [        U5      [        U5      :X  d   e[        U5      nU H  nU R                  R                  U5        M      [        U5      nU H  n[        W[        5      (       a\  [        U[        5      (       a  US   n[        U[        5      (       d   S5       eU R                  R                  [        U5      5        Mt  U R                  R                  U5        M     g )Nr   zboth truth and pred are str)r   LABELLABELSCAPTIONTEXTBOXESSCOREStyper   r   append
isinstancestrlistr   r   )	r   r   r    
label_nameground_truthseval_resultskeytruthresults	            r   addAccuracyMetric.add   s=   )3)9)9V)CZ%%IZIZ
*""JOOZ5E5E  *"3"3Z5F5F
C ~',":&|
 M"d<&8888,];"EKKu% #+L9"F%%%fd++#AYF!&#..M0MM.

!!"DV"LM

!!&) #r   c           	      X   [        U R                  5      [        U R                  5      :X  d   e[        R                  [
        R                  " [        U R                  U R                  5       VVs/ s H	  u  pX:H  PM     snn5      R                  5       R                  5       0$ s  snnf r   )
lenr   r   r   ACCURACYnpasarrayzipmeanitem)r   predrefs      r   evaluateAccuracyMetric.evaluate5   s|    4::#dkk"2222"**-0T[[-I.-I	-I. #ttv
 	
.s   1B&c                     U R                   R                  UR                   5        U R                  R                  UR                  5        g r   )r   extendr   )r   others     r   mergeAccuracyMetric.merge=   s.    

%++&5<<(r   c                 2    U R                   U R                  4$ r   )r   r   )r   s    r   __getstate__AccuracyMetric.__getstate__A   s    zz4;;&&r   c                 B    U R                  5         Uu  U l        U l        g r   )r   r   r   )r   states     r   __setstate__AccuracyMetric.__setstate__D   s    "'
DKr   )r   r   )rC   r   )__name__
__module____qualname____firstlineno____doc__r   r   r3   r?   rD   rG   rK   __static_attributes____classcell__)r   s   @r   r   r      s9    

*4 * *2
)'( (r   r   )typingr   numpyr8   modelscope.metainfor   modelscope.outputsr   modelscope.utils.chinese_utilsr   modelscope.utils.registryr   modelscope.utils.tensor_utilsr   baser
   builderr   r   register_moduleaccuracyr    r   r   <module>r`      sQ      ' ) M 3 >  ( 	=g>N>NO5(V 5( P5(r   