首页 PaddleOCR 帖子详情
代码在运行时,可以切换模型吗?
收藏
快速回复
PaddleOCR 问答OCR 796 4
代码在运行时,可以切换模型吗?
收藏
快速回复
PaddleOCR 问答OCR 796 4

我用的时Python,在程序启动的时候进行初始化

ocr = PaddleOCR(use_angle_cls=False, det_model_dir=det_model, rec_model_dir=rec_model, use_mp=True, total_process_num=1, use_gpu=True, lang="ch")

已经初始化好了PaddleOCR,如何在中断程序的基础上进行模型的切换?

0
收藏
回复
全部评论(4)
时间顺序
非鱼子焉
#2 回复于2023-05

可以尝试使用Python中的pickle模块,将已经初始化好的PaddleOCR对象序列化保存到文件中,然后在中断程序时将其关闭,再在需要切换模型时重新加载。

具体实现步骤如下:

在程序启动时创建并初始化PaddleOCR对象:

import paddleocr

ocr = paddleocr.PaddleOCR(use_angle_cls=False, det_model_dir=det_model, rec_model_dir=rec_model, use_mp=True, total_process_num=1, use_gpu=True, lang="ch")


将PaddleOCR对象保存到文件中:

import pickle

with open('ocr.pickle', 'wb') as f:
pickle.dump(ocr, f)


在程序中断时关闭PaddleOCR对象:

import pickle

with open('ocr.pickle', 'rb') as f:
ocr = pickle.load(f)

# 进行一些处理

with open('ocr.pickle', 'wb') as f:
pickle.dump(ocr, f)


在需要切换模型时重新加载PaddleOCR对象:

import pickle

with open('ocr.pickle', 'rb') as f:
ocr = pickle.load(f)

# 切换模型
ocr = paddleocr.PaddleOCR(use_angle_cls=False, det_model_dir=new_det_model, rec_model_dir=new_rec_model, use_mp=True, total_process_num=1, use_gpu=True, lang="ch")

# 保存PaddleOCR对象
with open('ocr.pickle', 'wb') as f:
pickle.dump(ocr, f)


在实际使用时,需要根据具体的情况进行一些调整和优化,确保程序的正确性和性能。

0
回复
H
Hellinger
#3 回复于2023-05

顶顶顶顶顶

0
回复
s
su451159044
#4 回复于2023-05
可以尝试使用Python中的pickle模块,将已经初始化好的PaddleOCR对象序列化保存到文件中,然后在中断程序时将其关闭,再在需要切换模型时重新加载。 具体实现步骤如下: 在程序启动时创建并初始化PaddleOCR对象: [代码] 将PaddleOCR对象保存到文件中: [代码] 在程序中断时关闭PaddleOCR对象: [代码] 在需要切换模型时重新加载PaddleOCR对象: [代码] 在实际使用时,需要根据具体的情况进行一些调整和优化,确保程序的正确性和性能。
展开

TypeError: cannot pickle 'paddle.fluid.libpaddle.PaddleInferPredictor' object

提示错误。

另外:序列化与反序列化 ocr对象,没看到明白跟直接再重新实例化一个PaddleOCR对象有什么区别

0
回复
老狼Max
#5 回复于2023-05

楼上的回答像是文心一言干的

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户