Quellcode durchsuchen

Fix bugs (#4616)

* Rename files and classes

* Fix doc

* Fix bug
Lin Manhui vor 1 Monat
Ursprung
Commit
7f45ff529b
25 geänderte Dateien mit 53 neuen und 56 gelöschten Zeilen
  1. 3 6
      docs/pipeline_usage/tutorials/ocr_pipelines/PaddleOCR-VL.md
  2. 1 1
      paddlex/inference/models/doc_vlm/modeling/__init__.py
  3. 1 1
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/__init__.py
  4. 3 3
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_config.py
  5. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_distributed/__init__.py
  6. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_distributed/common_dist_utils.py
  7. 14 14
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_ernie.py
  8. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/__init__.py
  9. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/common_fusion_ops.py
  10. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/npu_fusion_ops.py
  11. 6 6
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_paddleocr_vl.py
  12. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_projector.py
  13. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_refined_recompute/__init__.py
  14. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_refined_recompute/utils.py
  15. 0 0
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_sequence_parallel_utils.py
  16. 2 2
      paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_siglip.py
  17. 4 4
      paddlex/inference/models/doc_vlm/predictor.py
  18. 1 1
      paddlex/inference/models/doc_vlm/processors/__init__.py
  19. 1 1
      paddlex/inference/models/doc_vlm/processors/paddleocr_vl/__init__.py
  20. 1 1
      paddlex/inference/models/doc_vlm/processors/paddleocr_vl/_paddleocr_vl.py
  21. 0 0
      paddlex/inference/models/doc_vlm/processors/paddleocr_vl/_siglip.py
  22. 1 1
      paddlex/inference/pipelines/__init__.py
  23. 1 1
      paddlex/inference/pipelines/paddleocr_vl/__init__.py
  24. 9 9
      paddlex/inference/pipelines/paddleocr_vl/pipeline.py
  25. 5 5
      paddlex/inference/pipelines/paddleocr_vl/result.py

+ 3 - 6
docs/pipeline_usage/tutorials/ocr_pipelines/PaddleOCR-VL.md

@@ -878,15 +878,11 @@ for res in output:
 
 #### 3.1.1 使用 Docker 镜像
 
-PaddleX 针对不同推理加速框架提供了相应的 Docker 镜像,用于快速启动 VLM 推理服务:
-
-* **vLLM**:`ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlex-genai-vllm-server`
-* **SGLang**:`ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlex-genai-sglang-server`
-
-以 vLLM 为例,可使用以下命令启动服务:
+PaddleX 提供了 Docker 镜像,用于快速启动 vLLM 推理服务。可使用以下命令启动服务:
 
 ```bash
 docker run \
+    -it \
     --rm \
     --gpus all \
     --network host \
@@ -899,6 +895,7 @@ docker run \
 
 ```bash
 docker run \
+    -it \
     --rm \
     --gpus all \
     --network host \

+ 1 - 1
paddlex/inference/models/doc_vlm/modeling/__init__.py

@@ -13,6 +13,6 @@
 # limitations under the License.
 
 from .GOT_ocr_2_0 import PPChart2TableInference
-from .ppocrvl import PPOCRVLForConditionalGeneration
+from .paddleocr_vl import PaddleOCRVLForConditionalGeneration
 from .qwen2_5_vl import PPDocBee2Inference
 from .qwen2_vl import PPDocBeeInference, Qwen2VLForConditionalGeneration

+ 1 - 1
paddlex/inference/models/doc_vlm/modeling/ppocrvl/__init__.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/__init__.py

@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from ._ppocrvl import PPOCRVLForConditionalGeneration
+from ._paddleocr_vl import PaddleOCRVLForConditionalGeneration

+ 3 - 3
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_config.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_config.py

@@ -30,7 +30,7 @@ from ....common.vlm.transformers import PretrainedConfig
 
 
 class PPOCRVisionConfig(PretrainedConfig):
-    model_type = "ppocrvl"
+    model_type = "paddleocr_vl"
     base_config_key = "vision_config"
 
     def __init__(
@@ -67,8 +67,8 @@ class PPOCRVisionConfig(PretrainedConfig):
         self.tokens_per_second = tokens_per_second
 
 
-class PPOCRVLConfig(PretrainedConfig):
-    model_type = "ppocrvl"
+class PaddleOCRVLConfig(PretrainedConfig):
+    model_type = "paddleocr_vl"
     keys_to_ignore_at_inference = ["past_key_values"]
     sub_configs = {"vision_config": PPOCRVisionConfig}
 

+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_distributed/__init__.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_distributed/__init__.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_distributed/common_dist_utils.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_distributed/common_dist_utils.py


+ 14 - 14
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_ernie.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_ernie.py

@@ -43,7 +43,7 @@ from ....common.vlm.transformers import PretrainedModel
 from ....common.vlm.transformers.model_outputs import (
     BaseModelOutputWithPastAndCrossAttentions,
 )
-from ._config import PPOCRVLConfig
+from ._config import PaddleOCRVLConfig
 from ._distributed import (
     AllGatherVarlenOp,
     ColumnParallelLinear,
@@ -76,7 +76,7 @@ def calc_lm_head_logits(
     handling sequence parallelism and tensor parallelism configurations.
 
     Args:
-        config (PPOCRVLConfig): Model configuration.
+        config (PaddleOCRVLConfig): Model configuration.
         hidden_states (Tensor): Hidden states from the transformer layers
         weight (Tensor): Weight matrix for the language model head
         bias (Tensor): Bias vector for the language model head
@@ -263,7 +263,7 @@ class RMSNorm(nn.Layer):
         Initialize RMSNorm layer.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
         """
         super().__init__()
         self.hidden_size = config.hidden_size
@@ -324,7 +324,7 @@ class LayerNorm(nn.LayerNorm):
         Initialize LayerNorm with configuration.
 
         Args:
-            config (PPOCRVLConfig): Model configuration contains normalization parameters and flags.
+            config (PaddleOCRVLConfig): Model configuration contains normalization parameters and flags.
         """
         super().__init__(config.hidden_size, epsilon=config.rms_norm_eps)
         self.config = config
@@ -334,7 +334,7 @@ class LayerNorm(nn.LayerNorm):
 
 
 class KeyeRotaryEmbedding(nn.Layer):
-    def __init__(self, config: PPOCRVLConfig, device=None):
+    def __init__(self, config: PaddleOCRVLConfig, device=None):
         super().__init__()
         self.rope_kwargs = {}
         if config is None:
@@ -408,7 +408,7 @@ class Ernie4_5MLP(nn.Layer):
         Initialize the MLP module with configuration options.
 
         Args:
-            config (PPOCRVLConfig): Model configurations.
+            config (PaddleOCRVLConfig): Model configurations.
             layer_idx (int): Index of current layer (default: 0)
         """
         super().__init__()
@@ -507,7 +507,7 @@ class Ernie4_5Attention(nn.Layer):
         """Initialize the attention layer.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
             layer_idx (int, optional): Index in transformer stack. Defaults to 0.
         """
         super().__init__()
@@ -1223,7 +1223,7 @@ class ErniePretrainingCriterion(paddle.nn.Layer):
         """Initialize the pretraining criterion.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
             return_tuple (bool): Whether to return loss as tuple (loss, loss_sum). Defaults to True.
         """
         super(ErniePretrainingCriterion, self).__init__()
@@ -1516,7 +1516,7 @@ class Ernie4_5LMHead(nn.Layer):
         """Initialize the language model head.
 
         Args:
-            config (PPOCRVLConfig): Model configuration containing:
+            config (PaddleOCRVLConfig): Model configuration containing:
                 - vocab_size: Size of vocabulary
                 - hidden_size: Dimension of hidden states
                 - tensor_parallel_degree: Degree of tensor parallelism
@@ -1632,7 +1632,7 @@ class Ernie4_5DecoderLayer(nn.Layer):
         """Initialize the decoder layer.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
             layer_idx (int): Index of this layer in the transformer stack
         """
         super().__init__()
@@ -1776,7 +1776,7 @@ class Ernie4_5DecoderLayer(nn.Layer):
 class Ernie4_5PretrainedModel(PretrainedModel):
     """Base class for ERNIE pretrained models."""
 
-    config_class = PPOCRVLConfig
+    config_class = PaddleOCRVLConfig
     base_model_prefix = "ernie"
 
     @classmethod
@@ -1784,7 +1784,7 @@ class Ernie4_5PretrainedModel(PretrainedModel):
         """Generate tensor parallel mappings for model conversion.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
             is_split (bool): Whether to generate split mappings (True)
                             or merge mappings (False). Defaults to True.
 
@@ -2005,11 +2005,11 @@ class Ernie4_5PretrainedModel(PretrainedModel):
 class Ernie4_5Model(Ernie4_5PretrainedModel):
     """The core ERNIE transformer model"""
 
-    def __init__(self, config: PPOCRVLConfig):
+    def __init__(self, config: PaddleOCRVLConfig):
         """Initialize the ERNIE model architecture.
 
         Args:
-            config (PPOCRVLConfig): Model configuration.
+            config (PaddleOCRVLConfig): Model configuration.
         """
         super().__init__(config)
         self.padding_idx = config.pad_token_id

+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_fusion_ops/__init__.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/__init__.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_fusion_ops/common_fusion_ops.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/common_fusion_ops.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_fusion_ops/npu_fusion_ops.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_fusion_ops/npu_fusion_ops.py


+ 6 - 6
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_ppocrvl.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_paddleocr_vl.py

@@ -46,14 +46,14 @@ from ....common.vlm.transformers.model_outputs import (
     CausalLMOutputWithCrossAttentions,
     ModelOutput,
 )
-from ._config import PPOCRVLConfig
+from ._config import PaddleOCRVLConfig
 from ._ernie import Ernie4_5Model, Ernie4_5PretrainedModel
 from ._projector import Projector
 from ._siglip import SiglipVisionModel
 
 
 @dataclass
-class PPOCRVLCausalLMOutputWithPast(ModelOutput):
+class PaddleOCRVLCausalLMOutputWithPast(ModelOutput):
     loss: Optional[paddle.Tensor] = None
     logits: paddle.Tensor = None
     past_key_values: Optional[List[paddle.Tensor]] = None
@@ -62,9 +62,9 @@ class PPOCRVLCausalLMOutputWithPast(ModelOutput):
     rope_deltas: Optional[paddle.Tensor] = None
 
 
-class PPOCRVLForConditionalGeneration(Ernie4_5PretrainedModel, GenerationMixin):
+class PaddleOCRVLForConditionalGeneration(Ernie4_5PretrainedModel, GenerationMixin):
     _tied_weights_keys = ["lm_head.weight"]
-    config_class = PPOCRVLConfig
+    config_class = PaddleOCRVLConfig
     _no_split_modules = ["Ernie4_5DecoderLayer", "SiglipEncoderLayer"]
 
     base_model_prefix = ""
@@ -644,7 +644,7 @@ class PPOCRVLForConditionalGeneration(Ernie4_5PretrainedModel, GenerationMixin):
         rope_deltas: Optional[paddle.Tensor] = None,
         second_per_grid_ts: Optional[paddle.Tensor] = None,
         **kwargs,
-    ) -> Union[Tuple, PPOCRVLCausalLMOutputWithPast]:
+    ) -> Union[Tuple, PaddleOCRVLCausalLMOutputWithPast]:
         output_attentions = (
             output_attentions
             if output_attentions is not None
@@ -797,7 +797,7 @@ class PPOCRVLForConditionalGeneration(Ernie4_5PretrainedModel, GenerationMixin):
             output = (logits,) + outputs[1:]
             return (loss,) + output if loss is not None else output
 
-        return PPOCRVLCausalLMOutputWithPast(
+        return PaddleOCRVLCausalLMOutputWithPast(
             loss=loss,
             logits=logits,
             past_key_values=outputs.past_key_values,

+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_projector.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_projector.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_refined_recompute/__init__.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_refined_recompute/__init__.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_refined_recompute/utils.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_refined_recompute/utils.py


+ 0 - 0
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_sequence_parallel_utils.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_sequence_parallel_utils.py


+ 2 - 2
paddlex/inference/models/doc_vlm/modeling/ppocrvl/_siglip.py → paddlex/inference/models/doc_vlm/modeling/paddleocr_vl/_siglip.py

@@ -48,7 +48,7 @@ from ....common.vlm.transformers.model_outputs import (
     BaseModelOutput,
     BaseModelOutputWithPooling,
 )
-from ._config import PPOCRVisionConfig, PPOCRVLConfig
+from ._config import PaddleOCRVLConfig, PPOCRVisionConfig
 
 
 def rotate_half(x):
@@ -801,7 +801,7 @@ class SiglipVisionTransformer(nn.Layer):
 
 
 class SiglipPreTrainedModel(PretrainedModel):
-    config_class = PPOCRVLConfig
+    config_class = PaddleOCRVLConfig
     base_model_prefix = "siglip"
     supports_gradient_checkpointing = True
 

+ 4 - 4
paddlex/inference/models/doc_vlm/predictor.py

@@ -103,10 +103,10 @@ class DocVLMPredictor(BasePredictor):
             processor: The correspounding processor for the model.
         """
         from .modeling import (
+            PaddleOCRVLForConditionalGeneration,
             PPChart2TableInference,
             PPDocBee2Inference,
             PPDocBeeInference,
-            PPOCRVLForConditionalGeneration,
         )
 
         # build processor
@@ -149,7 +149,7 @@ class DocVLMPredictor(BasePredictor):
                     "The PaddelOCR-VL series does not support `use_hpip=True` for now."
                 )
             with TemporaryDeviceChanger(self.device):
-                model = PPOCRVLForConditionalGeneration.from_pretrained(
+                model = PaddleOCRVLForConditionalGeneration.from_pretrained(
                     self.model_dir,
                     dtype=self.dtype,
                     convert_from_hf=True,
@@ -260,10 +260,10 @@ class DocVLMPredictor(BasePredictor):
         from ..common.tokenizer.tokenizer_utils import ChatTemplate
         from .processors import (
             GOTImageProcessor,
+            PaddleOCRVLProcessor,
             PPChart2TableProcessor,
             PPDocBee2Processor,
             PPDocBeeProcessor,
-            PPOCRVLProcessor,
             Qwen2_5_VLImageProcessor,
             Qwen2VLImageProcessor,
             SiglipImageProcessor,
@@ -298,7 +298,7 @@ class DocVLMPredictor(BasePredictor):
             tokenizer.chat_template = ChatTemplate._compile_jinja_template(
                 chat_template_file.read_text(encoding="utf-8")
             )
-            return PPOCRVLProcessor(
+            return PaddleOCRVLProcessor(
                 image_processor=image_processor,
                 tokenizer=tokenizer,
             )

+ 1 - 1
paddlex/inference/models/doc_vlm/processors/__init__.py

@@ -13,6 +13,6 @@
 # limitations under the License.
 
 from .GOT_ocr_2_0 import GOTImageProcessor, PPChart2TableProcessor
-from .ppocrvl import PPOCRVLProcessor, SiglipImageProcessor
+from .paddleocr_vl import PaddleOCRVLProcessor, SiglipImageProcessor
 from .qwen2_5_vl import PPDocBee2Processor, Qwen2_5_VLImageProcessor
 from .qwen2_vl import PPDocBeeProcessor, Qwen2VLImageProcessor

+ 1 - 1
paddlex/inference/models/doc_vlm/processors/ppocrvl/__init__.py → paddlex/inference/models/doc_vlm/processors/paddleocr_vl/__init__.py

@@ -12,5 +12,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from ._ppocrvl import PPOCRVLProcessor
+from ._paddleocr_vl import PaddleOCRVLProcessor
 from ._siglip import SiglipImageProcessor

+ 1 - 1
paddlex/inference/models/doc_vlm/processors/ppocrvl/_ppocrvl.py → paddlex/inference/models/doc_vlm/processors/paddleocr_vl/_paddleocr_vl.py

@@ -42,7 +42,7 @@ from .....utils.benchmark import benchmark
 from ..common import BatchFeature, fetch_image
 
 
-class PPOCRVLProcessor(object):
+class PaddleOCRVLProcessor(object):
     _DEFAULT_TEXT_KWARGS = {
         "padding": False,
         "return_tensors": "pd",

+ 0 - 0
paddlex/inference/models/doc_vlm/processors/ppocrvl/_siglip.py → paddlex/inference/models/doc_vlm/processors/paddleocr_vl/_siglip.py


+ 1 - 1
paddlex/inference/pipelines/__init__.py

@@ -41,7 +41,7 @@ from .object_detection import ObjectDetectionPipeline
 from .ocr import OCRPipeline
 from .open_vocabulary_detection import OpenVocabularyDetectionPipeline
 from .open_vocabulary_segmentation import OpenVocabularySegmentationPipeline
-from .paddleocr_vl import PPOCRVLPipeline
+from .paddleocr_vl import PaddleOCRVLPipeline
 from .pp_chatocr import PP_ChatOCRv3_Pipeline, PP_ChatOCRv4_Pipeline
 from .pp_doctranslation import PP_DocTranslation_Pipeline
 from .pp_shitu_v2 import ShiTuV2Pipeline

+ 1 - 1
paddlex/inference/pipelines/paddleocr_vl/__init__.py

@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from .pipeline import PPOCRVLPipeline
+from .pipeline import PaddleOCRVLPipeline

+ 9 - 9
paddlex/inference/pipelines/paddleocr_vl/pipeline.py

@@ -32,7 +32,7 @@ from .._parallel import AutoParallelImageSimpleInferencePipeline
 from ..base import BasePipeline
 from ..components import CropByBoxes
 from ..layout_parsing.utils import gather_imgs
-from .result import PPOCRVLBlock, PPOCRVLResult
+from .result import PaddleOCRVLBlock, PaddleOCRVLResult
 from .uilts import (
     convert_otsl_to_html,
     filter_overlap_boxes,
@@ -46,8 +46,8 @@ IMAGE_LABELS = ["image", "header_image", "footer_image", "seal"]
 
 
 @benchmark.time_methods
-class _PPOCRVLPipeline(BasePipeline):
-    """_PPOCRVLPipeline Pipeline"""
+class _PaddleOCRVLPipeline(BasePipeline):
+    """_PaddleOCRVLPipeline Pipeline"""
 
     def __init__(
         self,
@@ -314,7 +314,7 @@ class _PPOCRVLPipeline(BasePipeline):
 
                     block_content = result_str
 
-                block_info = PPOCRVLBlock(
+                block_info = PaddleOCRVLBlock(
                     label=block_label,
                     bbox=block_bbox,
                     content=block_content,
@@ -359,7 +359,7 @@ class _PPOCRVLPipeline(BasePipeline):
         min_pixels: Optional[int] = None,
         max_pixels: Optional[int] = None,
         **kwargs,
-    ) -> PPOCRVLResult:
+    ) -> PaddleOCRVLResult:
         """
         Predicts the layout parsing result for the given input.
 
@@ -379,7 +379,7 @@ class _PPOCRVLPipeline(BasePipeline):
             **kwargs (Any): Additional settings to extend functionality.
 
         Returns:
-            PPOCRVLResult: The predicted layout parsing result.
+            PaddleOCRVLResult: The predicted layout parsing result.
         """
         model_settings = self.get_model_settings(
             use_doc_orientation_classify,
@@ -532,7 +532,7 @@ class _PPOCRVLPipeline(BasePipeline):
                     "imgs_in_doc": imgs_in_doc_for_img,
                     "model_settings": model_settings,
                 }
-                yield PPOCRVLResult(single_img_res)
+                yield PaddleOCRVLResult(single_img_res)
 
         if use_queues:
             max_num_batches_in_process = 64
@@ -677,12 +677,12 @@ class _PPOCRVLPipeline(BasePipeline):
 
 
 @pipeline_requires_extra("ocr")
-class PPOCRVLPipeline(AutoParallelImageSimpleInferencePipeline):
+class PaddleOCRVLPipeline(AutoParallelImageSimpleInferencePipeline):
     entities = "PaddleOCR-VL"
 
     @property
     def _pipeline_cls(self):
-        return _PPOCRVLPipeline
+        return _PaddleOCRVLPipeline
 
     def _get_batch_size(self, config):
         return config.get("batch_size", 1)

+ 5 - 5
paddlex/inference/pipelines/paddleocr_vl/result.py

@@ -54,12 +54,12 @@ VISUALIZE_INDEX_LABELS = [
 ]
 
 
-class PPOCRVLBlock(object):
-    """PPOCRVL Block Class"""
+class PaddleOCRVLBlock(object):
+    """PaddleOCRVL Block Class"""
 
     def __init__(self, label, bbox, content="") -> None:
         """
-        Initialize a PPOCRVLBlock object.
+        Initialize a PaddleOCRVLBlock object.
 
         Args:
             label (str): Label assigned to the block.
@@ -211,9 +211,9 @@ def build_handle_funcs_dict(
     }
 
 
-class PPOCRVLResult(BaseCVResult, HtmlMixin, XlsxMixin, MarkdownMixin):
+class PaddleOCRVLResult(BaseCVResult, HtmlMixin, XlsxMixin, MarkdownMixin):
     """
-    PPOCRVLResult class for holding and formatting OCR/VL parsing results.
+    PaddleOCRVLResult class for holding and formatting OCR/VL parsing results.
     """
 
     def __init__(self, data) -> None: