Set use_doc_preprocessor, but the models for doc preprocessor are not initialized.

#35
by Sandstone0525 - opened

我是docker部署的,然后这是我的代码:

from pathlib import Path
from paddleocr import PaddleOCRVL

input_file = "./rotate.pdf"
output_path = Path("./output")

pipeline = PaddleOCRVL(
    vl_rec_backend="vllm-server", 
    vl_rec_server_url="http://127.0.0.1:33333/v1",
    layout_detection_model_dir="./official_models/PaddleOCR-VL/PP-DocLayoutV2",
    doc_orientation_classify_model_dir="./official_models/PP-LCNet_x1_0_doc_ori_infer",
)
output = pipeline.predict(
    input=input_file,
    use_layout_detection=True,
    use_doc_orientation_classify=True
    )

markdown_list = []
markdown_images = []

for res in output:
    md_info = res.markdown
    markdown_list.append(md_info)
    markdown_images.append(md_info.get("markdown_images", {}))

markdown_texts = pipeline.concatenate_markdown_pages(markdown_list)

mkd_file_path = output_path / f"{Path(input_file).stem}.md"
mkd_file_path.parent.mkdir(parents=True, exist_ok=True)

with open(mkd_file_path, "w", encoding="utf-8") as f:
    f.write(markdown_texts)

for item in markdown_images:
    if item:
        for path, image in item.items():
            file_path = output_path / path
            file_path.parent.mkdir(parents=True, exist_ok=True)
            image.save(file_path)

一直报错:Set use_doc_preprocessor, but the models for doc preprocessor are not initialized.

完整报错:

RuntimeError                              Traceback (most recent call last)
Cell In[9], line 17
      5 output_path = Path("./output")
      7 pipeline = PaddleOCRVL(
      8     vl_rec_backend="vllm-server", 
      9     vl_rec_server_url="http://127.0.0.1:33333/v1",
   (...)     15     doc_orientation_classify_model_dir="./official_models/PP-LCNet_x1_0_doc_ori_infer",
     16 )
---> 17 output = pipeline.predict(
     18     input=input_file,
     19     use_layout_detection=True,
     20     use_doc_orientation_classify=True,
     21     doc_orientation_classify_model_name="PP-LCNet_x1_0_doc_ori_infer",
     22     doc_orientation_classify_model_dir="./official_models/PP-LCNet_x1_0_doc_ori_infer",
     23     )
     25 markdown_list = []
     26 markdown_images = []

File ~/docker_data/paddleocr/测试/.venv/lib/python3.12/site-packages/paddleocr/_pipelines/paddleocr_vl.py:134, in PaddleOCRVL.predict(self, input, use_doc_orientation_classify, use_doc_unwarping, use_layout_detection, use_chart_recognition, layout_threshold, layout_nms, layout_unclip_ratio, layout_merge_bboxes_mode, use_queues, prompt_label, format_block_content, repetition_penalty, temperature, top_p, min_pixels, max_pixels, **kwargs)
    112 def predict(
    113     self,
    114     input,
   (...)    132     **kwargs,
    133 ):
--> 134     return list(
    135         self.predict_iter(
    136             input,
    137             use_doc_orientation_classify=use_doc_orientation_classify,
    138             use_doc_unwarping=use_doc_unwarping,
    139             use_layout_detection=use_layout_detection,
    140             use_chart_recognition=use_chart_recognition,
    141             layout_threshold=layout_threshold,
    142             layout_nms=layout_nms,
    143             layout_unclip_ratio=layout_unclip_ratio,
    144             layout_merge_bboxes_mode=layout_merge_bboxes_mode,
    145             use_queues=use_queues,
    146             prompt_label=prompt_label,
    147             format_block_content=format_block_content,
    148             repetition_penalty=repetition_penalty,
    149             temperature=temperature,
    150             top_p=top_p,
    151             min_pixels=min_pixels,
    152             max_pixels=max_pixels,
    153             **kwargs,
    154         )
    155     )

File ~/docker_data/paddleocr/测试/.venv/lib/python3.12/site-packages/paddlex/inference/pipelines/_parallel.py:129, in AutoParallelSimpleInferencePipeline.predict(self, input, *args, **kwargs)
    123     yield from self._executor.execute(
    124         input,
    125         *args,
    126         **kwargs,
    127     )
    128 else:
--> 129     yield from self._pipeline.predict(
    130         input,
    131         *args,
    132         **kwargs,
    133     )

File ~/docker_data/paddleocr/测试/.venv/lib/python3.12/site-packages/paddlex/inference/pipelines/paddleocr_vl/pipeline.py:656, in _PaddleOCRVLPipeline.predict(self, input, use_doc_orientation_classify, use_doc_unwarping, use_layout_detection, use_chart_recognition, layout_threshold, layout_nms, layout_unclip_ratio, layout_merge_bboxes_mode, use_queues, prompt_label, format_block_content, repetition_penalty, temperature, top_p, min_pixels, max_pixels, **kwargs)
    654     continue
    655 if not item[0]:
--> 656     raise RuntimeError(
    657         f"Exception from the '{item[1]}' worker: {item[2]}"
    658     )
    659 else:
    660     yield item[1]

RuntimeError: Exception from the 'cv' worker: '_PaddleOCRVLPipeline' object has no attribute 'doc_preprocessor_pipeline'

如果把

use_layout_detection=True,
use_doc_orientation_classify=True

放到实例化里面,也就是这样:

pipeline = PaddleOCRVL(
    vl_rec_backend="vllm-server", 
    vl_rec_server_url="http://127.0.0.1:33333/v1",
    layout_detection_model_dir="./official_models/PP-DocLayoutV2",
    doc_orientation_classify_model_dir="./official_models/PP-LCNet_x1_0_doc_ori_infer",
    use_layout_detection=True,
    use_doc_orientation_classify=True
)

可以正常运行,但是实际上感觉根本没有调用doc_orientation_classify_model。而且第一次运行只会下载PP-DocLayoutV2一个模型。

不只是use_doc_orientation_classify有问题,use_doc_unwarping``use_chart_recognition都是一样报错。

请问这是什么原因诶

这是docker配置:

# docker-compose.yml
version: '3.8'

services:
  paddleocr-vl-server:
    image: ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlex-genai-vllm-server
    container_name: paddleocr_vl_service
    stdin_open: true
    tty: true
    ports:
      - "33333:8118"
    volumes:
      - ./vllm_config.yml:/app/vllm_config.yml
      - ./paddlex:/root/.paddlex
    
    environment:
      - CUDA_VISIBLE_DEVICES=0
      - HF_TOKEN=${HF_TOKEN}
      - HF_ENDPOINT=${HF_ENDPOINT}
      - HF_HUB_DISABLE_XET=true
      - HF_HUB_ENABLE_HF_TRANSFER=false
      - TIMEZONE=Asia/Shanghai
    
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              device_ids: ['1'] 
              capabilities: [gpu]

    command: >
      paddlex_genai_server 
      --model_name PaddleOCR-VL-0.9B 
      --host 0.0.0.0 
      --port 8118 
      --backend vllm 
      --backend_config /app/vllm_config.yml

感谢您的反馈,我们会排查一下您的问题

Sign up or log in to comment