soarli

Python运行多条shell并获取返回值记录
前言昨天实现了在PHP中调用Python并获取运行结果。今天又遇到了一个新问题:如果不以PaddleHub服务的形...
扫描右侧二维码阅读全文
23
2022/01

Python运行多条shell并获取返回值记录

前言

昨天实现了在PHP中调用Python并获取运行结果

今天又遇到了一个新问题:如果不以PaddleHub服务的形式运行PaddleOCRPHP很难直接且高效地调用PaddleOCR

考虑到Python的灵活性和系统的高效及安全性,不如直接通过它作为中间件调用Shell进而完成对PaddleOCR的调用。

同时可以很方便的通过其完成智能算法的设计,最终以Json的形式将识别及预测结果返回给PHP

Python执行Shell并获取结果时,可谓踩遍了诸多大坑(尤其是编码问题)。

本文将记录最终的结果以方便后续查阅。

成果

以下是本人的成果,如果有大佬发现bug或有更好的主意,还望不吝赐教。

class PPOCr():  # 调用PaddleOCR,方法内获取文件名并完成识别返回识别结果
    def Init():  # 将方法内获取的文件名与img路径拼接在一起调用执行OCR的方法
        imageName = sys.argv[1]  # 从系统调用参数中获取文件名,正式使用
        # imageName = input('请输入'+imagePath+'目录下要识别图片的文件名:')  # 要求手动输入文件名,测试使用
        imageFullName = imagePath + imageName
        return PPOCr.startOcr(imageFullName)

    def startOcr(imageFullName):  # 执行OCR并返回文字识别结果
        # 切换目录到PaddleOCR运行目录
        cmd1 = "cd " + PPOCrPath
        # 调用文字识别模型指令
        cmd2 = 'python tools/infer/predict_system.py --image_dir="' + imageFullName + \
            '" --det_model_dir="./inference/ch_PP-OCRv2_det_infer/ch_PP-OCRv2_det_infer/"  --rec_model_dir="./inference/ch_PP-OCRv2_rec_infer/ch_PP-OCRv2_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True --use_gpu=False'
        # 最终指令
        cmd = cmd1 + " && " + cmd2
        # 执行最终指令
        str = os.popen(cmd)
        response = str.buffer.read().decode('gbk', "ignore")  # 正式使用(通过参数调用需要gbk编码)
        # response = str.buffer.read().decode(
        #     'utf-8', "ignore")  # 测试使用(直接在VSCode中执行需要utf-8编码)

        # print(response)  # 输出结果(测试使用)
        return response

参考资料:

https://blog.csdn.net/blueheart20/article/details/78794847

https://blog.csdn.net/wang7807564/article/details/78164855

https://blog.51cto.com/zhou123/1312791

https://blog.csdn.net/xmm12508/article/details/117510201

https://blog.csdn.net/qq_27825451/article/details/102909772

https://blog.csdn.net/xiojing825/article/details/78207862

https://www.cxyzjd.com/article/jaket5219999/117066442

https://blog.csdn.net/weixin_42826790/article/details/110283986

https://blog.csdn.net/wanglei_storage/article/details/54615952

https://www.cnblogs.com/pengpp/p/9833349.html

最后修改:2022 年 01 月 23 日 03 : 08 AM

发表评论