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
感谢您的反馈,我们会排查一下您的问题