
    9i                     "   S SK r S SKJrJr  S SKrS SKrS SKJs  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 SKJr  S	S
KJrJrJr  S	SKJrJr  \" 5       r\R@                  " \RB                  \RB                  S9 " S S\5      5       r"g)    N)AnyDict)Models)
TorchModel)MODELS)Config)	ModelFileTasks)
get_logger   )DBModel
DBNasModel	VLPTModel)boxes_from_bitmappolygons_from_bitmap)module_namec                   |   ^  \ rS rSrS\4U 4S jjrS\\\4   S\\\4   4S jrS\\\4   S\\\4   4S jr	S	r
U =r$ )
OCRDetection   	model_dirc                 \  > [         TU ]  " U40 UD6  [        R                  R	                  U[
        R                  5      n[        R                  " [        R                  R	                  U[
        R                  5      5      nUR                  R                  R                  U l        UR                  R                  R                  U l        UR                  R                  U l        SU l        SU l        U R                  S:X  a  [#        5       U l        ObU R                  S:X  a  [%        5       U l        OBU R                  S:X  a  ['        5       U l        O"[)        SUR                  R                   35      eUS:w  a/  U R                  R+                  [,        R.                  " USS	S
9SS9  gg)zlinitialize the ocr recognition model from the `model_dir` path.

Args:
    model_dir (str): the model path.
NFresnet50resnet18proxylessnasz?detector backbone should be either resnet18, resnet50, but got  cpuT)map_locationweights_only)strict)super__init__ospathjoinr	   TORCH_MODEL_FILEr   	from_fileCONFIGURATIONmodelinference_kwargsthreshreturn_polygonbackbonedetectoronnx_exportr   r   r   	TypeErrorload_state_dicttorchload)selfr   kwargs
model_pathcfgs	__class__s        h/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/ocr_detection/model.pyr!   OCRDetection.__init__   sE    	-f-WW\\)Y-G-GH
GGLLI$;$;<>jj1188"jj99HH

++ ==J&%KDM]]j(#IDM]]n,&LDMQRVR\R\ReReQfg  MM))

:EM *      inputreturnc                     [        U5      [        L a  U R                  US   5      nOUSS/S.nU R                  US   5      nX!S   S.$ )a  
Args:
    img (`torch.Tensor`): image tensor,
        shape of each tensor is [3, H, W].

Return:
    results (`torch.Tensor`): bitmap tensor,
        shape of each tensor is [1, H, W].
    org_shape (`List`): image original shape,
        value is [height, width].
imgi   )r>   	org_shaper?   )resultsr?   )typedictr-   )r3   r;   preds      r8   forwardOCRDetection.forward7   sR     ;$==u.D "c
;E==u.DK.@AAr:   inputsc                     US   S   nU R                   (       a  U$ US   u  p4X R                  :  nU R                  (       a  [        X%UU5      u  pgO[	        X%UU5      u  pgS[
        R                  " U5      0nU$ )Nr@   r   r?   det_polygons)r.   r*   r+   r   r   nparray)	r3   rF   rC   heightwidthsegmentationboxesscoresresults	            r8   postprocessOCRDetection.postprocessK   s    i #K{+kk)0U179ME6 .d%.46ME "((5/2r:   )r,   r-   r.   r+   r*   )__name__
__module____qualname____firstlineno__strr!   r   r   rD   rQ   __static_attributes____classcell__)r7   s   @r8   r   r      s]    # >BT#s(^ BS#X B($sCx. T#s(^  r:   r   )#r"   typingr   r   numpyrI   r1   torch.nn.functionalnn
functionalFmodelscope.metainfor   'modelscope.models.base.base_torch_modelr   modelscope.models.builderr   modelscope.utils.configr   modelscope.utils.constantr	   r
   modelscope.utils.loggerr   modules.dbnetr   r   r   utilsr   r   LOGGERregister_moduleocr_detectionr    r:   r8   <module>rl      sq    	      & > , * 6 . 9 9 :	 ++9M9MND: D ODr:   