Set use_doc_preprocessor, but the models for doc preprocessor are not initialized.
我是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
感谢您的反馈,我们会排查一下您的问题
请问这个问题解决了吗
请问这个问题解决了吗
没有解决,paddle团队似乎直接略过了我的问题,其他都回答了,唯独没管我这个。我已经切换回mineru2.5了,纸面benchmark和paddle区别不大。paddle从22年开始,文档就写的稀烂,部署更是各种问题。三年过去了,依旧没有改善。真应证了别人说的永远都是起了个大早,赶了个晚集
hi @Sandstone0525 ,抱歉未能即使回复和跟进此问题。
由于近期发版后的琐碎工作较多,导致该问题未能即使修复,但并未被忽略。PaddleOCR 在昨天已经发布了 3.3.1 版本,并修复了此问题,具体请参考PaddleOCR v3.3.1。
关于文档,确实存在改进的空间,我们也一直在持续优化,正是广大用户的批评、反馈、意见和建议,让 PaddleOCR 变得越来越好。我们忠心听取各种声音,欢迎与广大用户共建 PaddleOCR !
再次感谢宝贵的反馈意见!如仍遇到问题,请继续留言!
该问题已解决,请更新和使用 3.3.1 及更新版本的 PaddleOCR。