hiroi-sora / PaddleOCR-json

OCR离线图片文字识别命令行windows程序,以JSON字符串形式输出结果,方便别的程序调用。提供各种语言API。由 PaddleOCR C++ 编译。
Apache License 2.0
823 stars 109 forks source link

c++调用接口 #59

Closed panda-o-o closed 8 months ago

panda-o-o commented 1 year ago

作者您好,就是我算一个新手,想知道的就是可不可以在另外一个项目中直接使用c++调用exe文件,然后返回json到另外一个项目

hiroi-sora commented 1 year ago

第三方c++项目调用exe当然可以,但是感觉有点脱裤子放屁😂因为这个引擎本身是c++写的,你可以将引擎代码嵌入你的项目,或者在引擎代码的基础上拓展你的项目(对于新手,更推荐这种方式)。所有流程都在一个进程内解决,避免了两个进程转来转去,效率更高。

具体思路来说,你可以将本项目的main函数改成以下流程(当然,可封装到不同函数中):

int main(int argc, char **argv)
{
     // 初始化OCR
    google::ParseCommandLineFlags(&argc, &argv, true);
    std::string configMsg = read_config();
    if (!configMsg.empty()) {
        std::cerr << configMsg << std::endl;
    }
    std::string checkMsg = check_flags(); // 检查参数合法性
    if(!checkMsg.empty()) {
        std::cerr << "[ERROR] " << checkMsg << std::endl;
        return 1;
    }
    PPOCR ppocr = new PPOCR();
    Task task = Task();

// TODO:你的业务的前期处理

    cv::Mat img = task.imread_??(??); // 在task.h中挑一个合适的读图函数,改为public,在这里调用
    res_ocr = ppocr.ocr(img, FLAGS_det, FLAGS_rec, FLAGS_cls);

// res_ocr 即为识别结果
// TODO:你的业务的后期处理

}
panda-o-o commented 1 year ago

好的,大佬,我来试试将引擎代码嵌入我的项目来试试,非常非常感谢大佬的指导