PaddleOCR
PaddleOCR copied to clipboard
当使用Python多进程multiprocessing时,抛ERROR ModuleNotFoundError: No module named 'paddleocr.ppstructure'
请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem
- 系统环境/System Environment:
CentOS 7.9
- 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
Paddle 2.2.2 PaddleOCR 2.6.1.0 Python 3.8.15
原有实现中,同名Module(paddleocr)下使用同名的Python主入口脚本(paddleocr.py),使用spawn多进程,在Python3.8触发ModuleNotFoundError的bug,该bug在测试环境可以稳定复现
CASE代码:
from paddleocr.ppstructure.predict_system import StructureSystem
import multiprocessing
def func(
pid,
):
print(f"[{pid}] Start")
[_ for _ in range(int(1e6))]
print(f"[{pid}] Finished")
if __name__ == '__main__':
with multiprocessing.Manager() as manager:
procs = []
for i in range(2):
p = multiprocessing.get_context("spawn").Process(
target=func,
args=(f"pid_{i}",)
)
p.start()
procs.append(p)
for p in procs:
p.join()
修复参考: https://github.com/PaddlePaddle/PaddleOCR/pull/8004
修复前:
修复后:
PR冲突了,已reset https://github.com/PaddlePaddle/PaddleOCR/pull/8324
命名为paddleocr.py,生成whl包,修复前的错误通过修改执行目录试试呢
命名为paddleocr.py,生成whl包,修复前的错误通过修改执行目录试试呢
修改执行目录是指?
目前不推荐使用这种import方式,推荐使用 from paddleocr import PPStructure
目前不推荐使用这种import方式,推荐使用
from paddleocr import PPStructure
目前想单独使用StructureSystem的能力,而不对其进行前后处理的包装,使用PPStructure有一些postprocess逻辑是不太好满足的。
PPStructure目前主推全流程(包含前后处理),你这个需求可以自己改代码来实现,可以直接将StructureSystem这个类单独处理,可参考python推理代码进行自定义处理 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppstructure/predict_system.py#L42