当前位置: 首页 > news >正文

百度飞桨ocr调用

文章目录

  • 链接
  • 下载模型
  • 推理库下载
  • 源码下载
  • 编译源码
  • 配置源码
  • 创建文件生成dll
  • 封装的头文件
  • 调用示例

链接

https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html#1-ocrhttps://gitee.com/paddlepaddle

下载模型

https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html#1-ocr

选择推理模型下载即可

推理库下载

源码下载

https://gitee.com/paddlepaddle

编译源码

在源码中构建build目录



如果版本太低报错修改其版本

创建三个文件夹

把paddle_inference 的文件放入对应的里面

里面的paddle和third_party 中的install 里面的lib,include,dll文件都放入对应即可

配置源码



common.lib cryptopp-static.lib paddle_inference.lib mklml.lib libiomp5md.lib glog.lib gflags_static.lib libprotobuf.lib mkldnn.lib xxhash.lib libcmt.lib libpaddle_inference.lib shlwapi.lib utf8proc_static.lib yaml-cpp.lib opencv_world4110.lib third_party\abseil-cpp\absl\status\Release\absl_statusor.lib third_party\clipper_ver6.4.2\cpp\Release\polyclipping.lib third_party\abseil-cpp\absl\Release\abseil_dll.lib-ignore:4221kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib

生成cli.cc是入口文件

报错

下载dirent.h
生成的exe文件放入模型和dll



将其放入

创建文件生成dll

创建paddle_ocr.h和cpp文件,

封装的头文件

#include<string>#include<vector>#include"opencv2/opencv.hpp"#defineOCR_API__declspec(dllexport)namespace ocr{structOCR_APIResult{cv::Mat image;std::string text;floatscore;cv::Rect rect;};OCR_API boolinit(conststd::string&det_name,conststd::string&det_dir,conststd::string&rec_name,conststd::string&rec_dir);OCR_API std::vector<Result>run_det(cv::Mat&input);OCR_APIvoidrun_rec(Result&result);}
#include"paddle_ocr.h"#include"src/api/pipelines/ocr.h"staticstd::unique_ptr<TextDetPredictor>Det_Predictor;staticstd::unique_ptr<TextRecPredictor>Rec_Predictor;bool ocr::init(conststd::string&det_name,conststd::string&det_dir,conststd::string&rec_name,conststd::string&rec_dir){try{// ========== 1. 初始化检测预测器(你的原有逻辑是对的) ==========TextDetPredictorParams det_params;det_params.model_name=det_name;det_params.model_dir=det_dir;Det_Predictor=std::make_unique<TextDetPredictor>(det_params);// ========== 2. 修正:初始化识别预测器(关键修改) ==========TextRecPredictorParams rec_params;rec_params.model_name=rec_name;rec_params.model_dir=rec_dir;// 错误点修正:创建 TextRecPredictor 实例,而非 TextRecPredictorParamsRec_Predictor=std::make_unique<TextRecPredictor>(rec_params);// 可选:验证预测器是否初始化成功(避免空指针)if(!Det_Predictor||!Rec_Predictor){returnfalse;}returntrue;}catch(conststd::exception&e){// 捕获初始化异常(如模型路径错误、模型文件缺失)std::cerr<<"OCR初始化失败:"<<e.what()<<std::endl;returnfalse;}}std::vector<ocr::Result>ocr::run_det(cv::Mat&input){std::vector<cv::Mat>inputs={input};Det_Predictor->ResetResult();//推理Det_Predictor->Process(inputs);//获取推理结果std::vector<TextDetPredictorResult>det_results=Det_Predictor->PredictorResult();//det_result[0].dt_polysstd::vector<ocr::Result>result;for(inti=0;i<det_results.size();i++){TextDetPredictorResult det_result=det_results[i];for(intj=0;j<det_result.dt_scores.size();j++){ocr::Result r;r.score=det_result.dt_scores[j];std::vector<cv::Point2f>item=det_result.dt_polys[j];r.rect=cv::Rect(item[0],item[2]);//r.image = input(r.rect);r.image=det_result.input_image(r.rect).clone();result.push_back(r);}}returnresult;}voidocr::run_rec(ocr::Result&result){std::vector<cv::Mat>inputs={result.image};Rec_Predictor->ResetResult();Rec_Predictor->Process(inputs);std::vector<TextRecPredictorResult>rec_results=Rec_Predictor->PredictorResult();result.text=rec_results[0].rec_text;result.score=rec_results[0].rec_score;}

调用示例

#include"build/paddle_ocr.h"intmain(){bool isok=ocr::init("PP-OCRv5_mobile_det","models\\PP-OCRv5_mobile_det_infer","PP-OCRv5_mobile_rec","models\\PP-OCRv5_mobile_rec_infer");if(!isok){return-1;}cv::Mat img=cv::imread("C:\\Users\\16069\\Desktop\\ho_GrayImage.bmp",cv::IMREAD_COLOR_BGR);std::vector<ocr::Result>results=ocr::run_det(img);for(inti=0;i<results.size();i++){ocr::Result item=results[i];ocr::run_rec(item);std::cout<<item.score<<"\t["<<item.rect.x<<","<<item.rect.y<<","<<item.rect.width<<","<<item.rect.height<<"]\t"<<item.text<<std::endl;}return0;}
http://www.jsqmd.com/news/492961/

相关文章:

  • 2026年3月优质的盐城殡葬礼仪服务公司选择指南:殡葬一条龙、殡仪服务、一站式殡葬服务公司 - 海棠依旧大
  • Apache Hadoop 生态系统(或与其深度集成)的企业级大数据平台核心服务,常见于 Hortonworks Data Platform(HDP)、Cloudera Data Platform
  • 每天了解几个MCP SERVER:OLAP 分析神器!AI 直接查询大数据,Apache Doris 让数据分析更简单
  • 免费降ai工具实测:哪个免费额度最良心
  • 【物联网学习笔记】串口接收
  • 毕业论文免费查AI率+降AI率一站式攻略
  • 2026年3月优质的哈尔滨机场周边住宿选择指南:哈尔滨机场酒店、太平机场酒店、哈尔滨机场附近住宿、凌晨接机酒店、晚班机住宿推荐 - 海棠依旧大
  • Ambari Metrics 是 Apache Ambari 提供的轻量级、嵌入式集群监控子系统,用于收集、聚合、存储和展示 Hadoop 生态组件
  • 免费降AI率软件排行:从白嫖到付费怎么选
  • 11个摄像头需要多少带宽? ——自动驾驶视频系统带宽计算(硬件工程师版)
  • 基于VSG控制的MMC并网逆变器仿真模型(Simulink仿真实现)
  • 日报26-005 加分
  • 在资源优化调度场景中,基于多源数据(如地磁/视频/雷达检测、浮动车GPS、手机信令、互联网地图API等)构建关联规则
  • 免费查AI率完全攻略:5种不花钱的检测方法
  • Qwen2.5-VL视觉理解案例:Ollama部署后自动解析芯片封装引脚图
  • 华为VLAN间路由配置(三种方式)
  • uniapp中 不铺满全屏滚动加载更多
  • OpenClaw使用教程 + 获取API + 踩坑
  • 【Java生产级避坑指南】14. 分库分表踩坑实录:全局索引缺失导致全库扫描,3套根治方案+完整代码
  • 论文免费降AI率实操指南:从检测到修改全流程
  • 刷题笔记:力扣第48题-旋转图像
  • FPGA选型指南:如何为LED大屏控制器挑选性价比最高的芯片(附Xilinx/Lattice对比)
  • 全球地形球谐系数模型
  • 白嫖党福利:如何用免费额度搞定降AI率
  • STM32单片机LED灯的闪烁及流水效果
  • 基于Mirage Flow的个性化学习推荐系统构建
  • 每天了解几个MCP SERVER:极速分析神器!亿级数据秒级查询,ClickHouse 让大数据分析飞起
  • 免费降ai的正确姿势:避开这些坑少走弯路
  • 【Java生产级避坑指南】15. 事务隔离级别幻读实锤:PostgreSQL与MySQL差异化防御实战(含完整实验+代码)
  • 第六篇:安全认证与中间件(超详细版)