o
    ॵi	                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ e Ze
jejejdG d	d
 d
eZdS )    )	Pipelines)OCRRecognition)
OutputKeys)InputPipeline)	PIPELINES)Tasks)
get_logger)module_namec                       sJ   e Zd ZdZdef fddZ fddZdd Zd	d
 Zdd Z	  Z
S )OCRRecognitionPipelineu   OCR Recognition Pipeline.

    Example:

    ```python
    >>> from modelscope.pipelines import pipeline

    >>> ocr_recognition = pipeline('ocr-recognition', 'damo/cv_crnn_ocr-recognition-general_damo')
    >>> ocr_recognition("http://duguang-labelling.oss-cn-shanghai.aliyuncs.com"
        "/mass_img_tmp_20220922/ocr_recognition_handwritten.jpg")

        {'text': '电子元器件提供BOM配单'}
    ```
    modelc                    s`   t |ts	J dt jdd|i| td|  | j| j| _	| j	
  td dS )z
        use `model` to create a ocr recognition pipeline for prediction
        Args:
            model: model id on modelscope hub or `OCRRecognition` Model.
            preprocessor: `OCRRecognitionPreprocessor`.
        zmodel must be a single strr   zloading model from dir zloading model doneN )
isinstancestrsuper__init__loggerinfor   todeviceocr_recognizereval)selfr   kwargs	__class__r   d/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/pipelines/cv/ocr_recognition_pipeline.pyr      s   
zOCRRecognitionPipeline.__init__c                    s   t  j|fi |S )a  
        Recognize text sequence in the text image.

        Args:
            input (`Image`):
                The pipeline handles three types of images:

                - A string containing an HTTP link pointing to an image
                - A string containing a local path to an image
                - An image loaded in PIL or opencv directly

                The pipeline currently supports single image input.

        Return:
            A text sequence (string) of the input text image.
        )r   __call__)r   inputr   r   r   r   r   -   s   zOCRRecognitionPipeline.__call__c                 C   s   |  |}|S )N)preprocessorr   inputsoutputsr   r   r   
preprocess@   s   
z!OCRRecognitionPipeline.preprocessc                 C   s   |  |d }|S )Nimage)r   r    r   r   r   forwardD      zOCRRecognitionPipeline.forwardc                 C   s   t j|d i}|S )Npreds)r   TEXTr    r   r   r   postprocessH   r&   z"OCRRecognitionPipeline.postprocess)__name__
__module____qualname____doc__r   r   r   r#   r%   r)   __classcell__r   r   r   r   r      s    r   N)modelscope.metainfor   $modelscope.models.cv.ocr_recognitionr   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.utils.constantr   modelscope.utils.loggerr	   r   register_moduleocr_recognitionr   r   r   r   r   <module>   s   