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

Ubuntu20.04 交叉编译Paddle-OCR

第一步:交叉编译Paddle-Lite

参考链接:https://blog.csdn.net/sz76211822/article/details/130466597?spm=1001.2014.3001.5501

第二步:交叉编译opencv4.x

参考链接:https://blog.csdn.net/sz76211822/article/details/130461683?spm=1001.2014.3001.5501

第三步:文件放置

1.将Paddle-Lite编译好的cxx文件夹放置到PaddleOCR/deploy/lite目录下

2.将编译好的opencv文件夹放置到cxx目录下

3.除了拷贝过来的源代码,还需要clipper.h 和clipper.cpp这两个文件,在chineseocr_lite (GitHub - DayBreak-u/chineseocr_lite: 超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) + crnn(2.5M) + anglenet(378KB)) 总模型仅4.7M)中拷贝过来,放置在PaddleOCR/deploy/lite目录下

文件目录 :

 

第四步:创建CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)project(paddle_lite_ocr)
set(TARGET paddle_lite_ocr)set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")# Set ARMLINUX_ARCH_ABI to armv8 or armv7 or armv7hf
set(ARMLINUX_ARCH_ABI armv8)# 1. path to Paddle-Lite lib
set(LITE_DIR "${CMAKE_SOURCE_DIR}/cxx")# 2. link Paddle-Lite directory
link_directories(${LITE_DIR}/lib)
include_directories(${LITE_DIR}/include)FIND_PACKAGE( OpenMP REQUIRED)
if(OPENMP_FOUND)message("OPENMP FOUND")set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()# opencv
set(OpenCV_DIR ${LITE_DIR}/opencv/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)set(CMAKE_CXX_STANDARD 14)# 3.add executable output
add_executable(${TARGET} ocr_db_crnn.cc cls_process.cc db_post_process.cc crnn_process.cc clipper.cpp)
target_link_libraries(${TARGET} -lpaddle_light_api_shared ${OpenCV_LIBS})
target_link_libraries(${TARGET} -ldl)set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/paddle_lite_ocr)
install(TARGETS paddle_lite_ocr DESTINATION ./)
#install(DIRECTORY model DESTINATION ./)

 注意点:

 第五步:创建build.sh

#!/bin/bashset -e# for rk3328 aarch64
GCC_COMPILER=/opt/gcc/bin/arm-linux-gnueabihfROOT_PWD=$( cd "$( dirname $0 )" && cd -P "$( dirname "$SOURCE" )" && pwd )# build rockx
BUILD_DIR=${ROOT_PWD}/buildif [[ ! -d "${BUILD_DIR}" ]]; thenmkdir -p ${BUILD_DIR}
ficd ${BUILD_DIR}
cmake .. \-DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \-DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++
make -j4
make install
cd -

注意点:

第六步:编译

chmod 777 build.sh
./build.sh

然后会出现编译报错

第七步:解决ocr_db_crnn.cc文件编译错误

打开ocr_db_crnn.cc文件,注释掉#include "AutoLog/auto_log/lite_autolog.h",如图

 同时,将AutoLogger的全部注释掉

 

 

第八步:解决floorf报错 

参考链接:Linux C++ gcc `floorf` not a member of `std`?_qq76211822的博客-CSDN博客

第九步:重新执行./build.sh

执行完成后,会在PaddleOCR/deploy/lite多出2个文件

在install目录下找到编译的paddle_lite_ocr执行文件

第十步:打包

 将libpaddle_light_api_shared.so、ch_PP-OCRv2_det_infer_opt.nb、paddle_lite_ocr、libgomp.so.1、opencv等库放进同一个目录。如图:

1.其中config.txt是在PaddleOCR/deploy/lite目录下

2. libgomp.so.1是交叉编译器的动态库,存放在

 将libgomp.so.1.0.0下载到windows桌面后,改名为libgomp.so.1即可

3.opencv的动态库,是交叉编译好的

同样,下载*.so.4.7.0的动态库后,改名

4.ppocr_keys_v1.txt是paddle-OCR文件夹中寻得,暂未使用。

 第十一步:放到arm机器上运行

执行:

chmod 777 ./paddle_lite_ocr

 根据ocr_db_crnn.cc源码可知det需要9个参数

 

 执行

./paddle_lite_ocr det ch_PP-OCRv2_det_infer_opt.nb  arm INT8 4 0 lite_demo.png config.txt

det 表示检测

ch_PP-OCRv2_det_infer_opt.nb 表示模型名

arm表示运行平台

INT8/FP32 表示检测相关

4 表示线程个数

0 我个人用的,不知道啥意思

lite_demo.png 检测文件

config.txt 配置文件

第十二步:输出结果

打开vis.jpg

原图:

备注:PaddleOCR 模型下载

备注:Paddle-OCR字典下载 

相关文章:

Ubuntu20.04 交叉编译Paddle-OCR

第一步:交叉编译Paddle-Lite 参考链接:https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步:交叉编译opencv4.x 参考链接:https://blog.csdn.net/sz76211822/article/details/13046168…...

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符: 有四种作用范围由小到大 (p…...

Linux命令集(Linux文件管理命令--touch指令篇)

Linux命令集(Linux文件管理命令--touch指令篇) Linux文件管理命令集(touch指令篇)6. touch(touch)1. 创建名为 file1 的空文件2. 创建名为 file1 和名为 file2 的多个文件3. 创建名为 file1 的文件并将访问时间设置为特定日期4. 创…...

软件工程学习教程大纲

软件工程学习教程大纲 第一章:软件工程概述 1.1 软件工程的定义和作用 软件工程的发展历程和趋势 软件工程的应用领域和特点 1.2 软件开发生命周期 软件开发生命周期的定义和阶段 软件开发生命周期的模型和方法 1.3 软件工程方法和工具 软件工程方法和工具…...

使用ChatGPT生成了十种排序算法

前言 当前ChatGPT非常火爆,对于程序员来说,ChatGPT可以帮助编写很多有用的代码。比如:在算法的实现上,就可以替我们省很多事。所以,小试牛刀一下,看看ChatGPT生成了排序算法怎么样? 简介 排序…...

GEE:MODIS计算遥感指数(NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等)

作者:_养乐多_ 本文将介绍如何使用Google Earth Engine(GEE)进行遥感影像分析,具体地,使用MODIS数据集计算和可视化几种植被指数,以评估植被生长的状况,或者作为随机森林分类器训练需要的特征变量。 主要包括,NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等。 NDVI(Normal…...

《*** 法治思想学习纲要》学习辅导

《*** 法治思想学习纲要》学习辅导 总分:100 及格分数:60 考试剩余时间: 1时 59分 35秒 单选题(共7题,每题5分) 1、全面依法治国中的“关键少数”是()。 正确答案:C、领导…...

初识Go语言18-面向对象【面向对象的概念、构造函数、继承与重写 泛型】

文章目录 面向对象面向对象的概念构造函数继承与重写泛型 面向对象 面向对象的概念 洗衣服过程剖析: 给洗衣机里加脏衣服和洗衣粉。启动洗衣机。洗衣机自动注水,然后滚动。脏衣服从黑颜色变成白颜色。洗衣机自动停止。 用面向过程的思想实现代码。 //…...

4.微服务项目实战---Sentinel--服务容错

4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务…...

Postgres SELECT INSERT 流程 ?

SELECT 当执行SELECT查询时,PostgreSQL数据库会按照以下流程进行处理: 首先,查询语句会被发送到服务器。 服务器会接收查询请求,并根据查询条件从表中读取数据。 数据库会将数据存储在磁盘上的数据文件中,然后将其读…...

OpenAI推企业版ChatGPT,英伟达造AI安全卫士

GPT现在已经进入了淘金时代。虽然全球涌现出成千上万的大模型或ChatGPT变种,但一直能挣钱的人往往是卖铲子的人。 这不,围绕暴风眼中的大模型,已经有不少企业,开始研究起了大模型的“铲子”产品,而且开源和付费两不误…...

【原创】运维的终点是开发~chatGPT告诉你真相

文章目录 软件技术岗位鄙视链,你在哪层呢?让chatGPT告诉你运维工作好,还是开发工作好问它几个问题来自你的消息: 一个三年开发成长的案例和薪资来自ChatAI的消息:来自你的消息: 一个三年运维成长的案例和薪资来自ChatAI的消息:来自你的消息: …...

SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

文章目录 前言一、SSH 服务器1、SSH 能做什么?2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么?2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…...

1.3 HBase 基本架构

架构角色: 1)Master 实现类为 HMaster,负责监控集群中所有的 RegionServer 实例。主要作用如下: (1)管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行 (2&#x…...

微机作业题

答案做的,正确性不保证。 1. 微型计算机的性能主要取决( A )的性能。 A. CPU B. 显示器 C. 硬盘 D. U盘 2. 计算机的工作过程,本质是( A )的过程。 A. 进行科学计算 …...

非极大值抑制详细原理(NMS含代码及详细注释)

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,YOLO,活动领域博主爱笑的男孩。擅长深度学习,YOLO,活动,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect 个…...

女朋友说总是记不住Git命令,怎么办?安排!

如果你也和我女朋友一样总是忘记Git命令,觉得记忆Git命令是很枯燥和麻烦的事情。我写了一个包含了40 条常用Git命令的清单。你一定要收藏起来,当你忘记Git命令的时候,就可以打开来查看啦!!! 1.初始化本地仓…...

【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程

目录 感谢B站秋葉aaaki大佬 前言 部署资源 部署流程 实机演示 ChatGML微调(人格炼成)(个人感觉蛮有趣的地方) 分享有趣の微调人格 实机演示(潘金莲人格) 感谢B站秋葉aaaki大佬 秋葉aaaki的个人空间…...

【MySQL】练习六 关系数据理论及数据库设计

文章目录 主要内容练习题一、选择题二、填空题三、判断题四、简答题主要内容 一个不好的关系模式可能存在的问题;函数依赖及三种函数依赖的定义:完全、部分、传递范式及1NF/2NF/3NF/BCNF的判定模式分解数据库设计的基本步骤概念设计(E-R图)逻辑模型(E-R图转换为逻辑模型的…...

UG NX二次开发(C++)-建模-修改NXObject或者Feature的颜色(一)

文章目录 1、前言2、在UG NX中修改Feature的颜色操作3、采用NXOpen(C)实现3.1 创建修改特征的方法3.2 调用ModifyFeatureColor方法3.3 测试结果 1、前言 在UG NX中,改变NXObject和Feature的操作是不相同的,所以其二次开发的代码也不一样,我们…...

2026年高性价比个人网盘盘点:告别“空间焦虑”,谁才是真正的效率神器?

在预算有限的情况下寻找个人网盘,大多数人的第一反应是打开计算器,算出“每 GB 只要几分钱”。但作为一个在存储行业摸爬滚打多年的老兵,我要告诉你一个反直觉的事实:对于 90% 的办公族和学生来说,网盘的“空间大小”是…...

基于Dify和RAG技术的AI智能客服准确率优化实战

在构建基于Dify的AI智能客服时,我们常常会遇到一个核心挑战:模型给出的回答听起来头头是道,但仔细一核对,却发现它“一本正经地胡说八道”。例如,在一个医疗健康咨询场景中,用户询问“布洛芬和头孢可以一起…...

Android Studio中文界面本地化指南:提升开发效率的全场景解决方案

Android Studio中文界面本地化指南:提升开发效率的全场景解决方案 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack And…...

5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置

5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置 1. 为什么选择OpenClaw飞书Qwen3.5-9B组合 上周我在整理团队周报时,突然意识到一个痛点:每次都要反复切换浏览器、文档和聊天工具,手动复制粘贴信息。这种机械操作不仅浪费…...

Pixel Fashion Atelier效果实测:在RTX 4090上单图生成耗时稳定在3.2秒内

Pixel Fashion Atelier效果实测:在RTX 4090上单图生成耗时稳定在3.2秒内 1. 测试环境与配置 1.1 硬件配置 本次测试使用的硬件平台为高端游戏工作站: 显卡:NVIDIA RTX 4090 (24GB GDDR6X)处理器:Intel i9-13900K内存&#xff…...

FPGA项目实战:用Quartus内置FIFO IP核做个数据缓冲,附ModelSim仿真全流程

FPGA实战:基于Quartus FIFO IP核的数据缓冲系统设计与ModelSim仿真 在数字系统设计中,数据缓冲是连接不同速率模块的关键桥梁。想象这样一个场景:您的FPGA需要处理来自UART的串行数据流,但接收端的数据速率不稳定,而处…...

UVM避坑指南:为什么你的sequence卡住了?item_done没调用的常见问题排查

UVM验证中的sequence卡死问题:item_done未调用的深度排查手册 在芯片验证领域,UVM框架的sequence机制堪称验证工程师的"瑞士军刀",但这把利器偶尔也会出现卡壳的情况。想象一下这样的场景:你的验证环境已经运行了数百个…...

Step3-VL-10B-Base模型微调:LSTM时间序列预测实战

Step3-VL-10B-Base模型微调:LSTM时间序列预测实战 用最简单的方式,教你如何用Step3-VL-10B-Base模型做时间序列预测,无需深厚数学背景,跟着做就能上手 1. 前言:为什么选择这个模型做时间序列预测 时间序列预测是个很有…...

无障碍辅助工具:OpenClaw+GLM-4-7-Flash语音控制电脑操作

无障碍辅助工具:OpenClawGLM-4-7-Flash语音控制电脑操作 1. 为什么需要本地化的语音控制方案 去年夏天,我帮一位因车祸导致手臂骨折的朋友临时搭建了一套语音控制系统。当时市面上主流的语音助手要么需要联网,要么对中文指令的理解能力有限…...

【OpenClaw从入门到精通】第46篇:企业“养虾”合规手册——审批备案+专网隔离+全流程管控(2026企业版)

摘要:着OpenClaw在企业场景的广泛应用,合规风险与安全事件频发,启明星辰报告显示60%的安全事件源于缺乏规范管理。本文基于《OpenClaw类智能应用安全指引V0.1》及金融、能源行业头部企业实践,构建“审批-备案-部署-审计”全流程合规框架。核心内容包括四步审批备案流程、专…...