PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
42.83k stars 7.7k forks source link

安卓项目 ocr demo 编译问题 #6302

Closed Noahs007 closed 2 years ago

Noahs007 commented 2 years ago

拉下来的 android ocr demo 编译不通过

> Task :app:generateJsonModelDebug FAILED
D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt : C/C++ debug|x86 : CMake Warning at D:/chromeDownload/PaddleOCR-release-2.5/deploy/android_demo/app/OpenCV/sdk/native/jni/OpenCVConfig.cmake:47 (message):
  Found OpenCV Android Pack but it has no binaries compatible with your ABI
  (can't find: /abi-x86)
Call Stack (most recent call first):
  CMakeLists.txt:19 (find_package)

D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt : C/C++ debug|x86 : CMake Warning at D:/chromeDownload/PaddleOCR-release-2.5/deploy/android_demo/app/OpenCV/sdk/native/jni/OpenCVConfig.cmake:47 (message):
  Found OpenCV Android Pack but it has no binaries compatible with your ABI
  (can't find: /abi-x86)
Call Stack (most recent call first):
  CMakeLists.txt:19 (find_package)

Execution failed for task ':app:generateJsonModelDebug'.
> D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt : C/C++ debug|x86 : CMake Error at D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt:19 (find_package):
    Found package configuration file:

buildOutput 控制台输出:

D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt : C/C++ debug|x86 : CMake Error at D:\chromeDownload\PaddleOCR-release-2.5\deploy\android_demo\app\src\main\cpp\CMakeLists.txt:19 (find_package):
  Found package configuration file:

    D:/chromeDownload/PaddleOCR-release-2.5/deploy/android_demo/app/src/main/cpp/../../../OpenCV/sdk/native/jni/OpenCVConfig.cmake

  but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be

  NOT FOUND.
zhang0225 commented 2 years ago

请问您解决了吗,遇到了同样的问题

Noahs007 commented 2 years ago

当时貌似是  opencv 那个路径没有找到,然后单独下载 opencv sdk 解压后把 #set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../OpenCV/sdk/native/jni") 路径指向改成 

set(OpenCV_DIR "D:/xl/opencv-4.5.4-android-sdk/OpenCV-android-sdk/sdk/native/jni")

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2022年5月31日(星期二) 中午11:47 收件人: @.>; 抄送: @.>; "State @.>; 主题: Re: [PaddlePaddle/PaddleOCR] 安卓项目 ocr demo 编译问题 (Issue #6302)

请问您解决了吗,遇到了同样的问题

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.***>

zhang0225 commented 2 years ago

目前下载了Android sdk然后使用了绝对路径开始有别的错误了

zhang0225 commented 2 years ago

当时貌似是  opencv 那个路径没有找到,然后单独下载 opencv sdk 解压后把 #set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../OpenCV/sdk/native/jni") 路径指向改成  set(OpenCV_DIR "D:/xl/opencv-4.5.4-android-sdk/OpenCV-android-sdk/sdk/native/jni") ------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2022年5月31日(星期二) 中午11:47 收件人: @.>; 抄送: @.>; "State @.>; 主题: Re: [PaddlePaddle/PaddleOCR] 安卓项目 ocr demo 编译问题 (Issue #6302) 请问您解决了吗,遇到了同样的问题 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.***>

找到问题了,感谢您的回复

apsonLi commented 2 years ago

@zhang0225

当时貌似是  opencv 那个路径没有找到,然后单独下载 opencv sdk 解压后把 #set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../OpenCV/sdk/native/jni") 路径指向改成  set(OpenCVDIR "D:/xl/opencv-4.5.4-android-sdk/OpenCV-android-sdk/sdk/native/jni") ------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2022年5月31日(星期二) 中午11:47 收件人: _@_.>; 抄送: @.>; "State _@_.>; 主题: Re: [PaddlePaddle/PaddleOCR] 安卓项目 ocr demo 编译问题 (Issue #6302) 请问您解决了吗,遇到了同样的问题 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @_.***>

找到问题了,感谢您的回复

请问你是怎么解决的

apsonLi commented 2 years ago

找到问题了,需要先下载 https://opencv.org/releases/ opencv android,然后修改路径为绝对路径 路径修改方法参照上面的老哥的方案 当时貌似是 opencv 那个路径没有找到,然后单独下载 opencv sdk 解压后把 #set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../OpenCV/sdk/native/jni") 路径指向改成 set(OpenCV_DIR "D:/xl/opencv-4.5.4-android-sdk/OpenCV-android-sdk/sdk/native/jni")

而且因为 paddlelite 只有 arm64-v8a 的 lib,所以 需要 gradle 修改,指定只构建 arm64-v8a 的 lib 修改后 如下: externalNativeBuild { cmake { cppFlags "-std=c++11 -frtti -fexceptions -Wno-format" arguments '-DANDROID_PLATFORM=android-23', '-DANDROID_STL=c++_shared' ,"-DANDROID_ARM_NEON=TRUE" abiFilters "arm64-v8a" } }

zhang0225 commented 2 years ago

@apsonLi 正解,因为昨天发现下载paddlelite 2.10版本的库只有arm64-v7a的,所以可以像你这种指定只编译自己需要的库 如果arm64-v7a与arm64-v8a都想要的话可以使用paddlelite2.9.0的库,只需要删除原pallelite包,在build.gradle中将archives下的 paddlelite下载地址与版本修改为如下 [ 'src' : 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/paddle_lite_libs_v2_9_0.tar.gz', 'dest': 'PaddleLite' ], 重新编译就不会有错了。

twinklelucas commented 2 years ago

你们方法错了,不是绝对路径的问题,在app的build.gradle里面加上externalNativeBuild { cmake { cppFlags "-std=c++11 -frtti -fexceptions -Wno-format" arguments '-DANDROID_PLATFORM=android-23', '-DANDROID_STL=c++_shared' ,"-DANDROID_ARM_NEON=TRUE" abiFilters "arm64-v8a" } },就搞定了

zybooo1 commented 2 years ago

app.gradle这样配置好像也可以,另外就是要把编译出的.so文件放到项目jniLib下
ndk { abiFilters 'arm64-v8a' }

GUOhm230 commented 2 years ago
  • Message

请问大佬:用android_demo是可以进行安卓部署,放到某一个app上嘛?

yeziyfx commented 1 year ago

@apsonLi 正解,因为昨天发现下载paddlelite 2.10版本的库只有arm64-v7a的,所以可以像你这种指定只编译自己需要的库 如果arm64-v7a与arm64-v8a都想要的话可以使用paddlelite2.9.0的库,只需要删除原pallelite包,在build.gradle中将archives下的 paddlelite下载地址与版本修改为如下 [ 'src' : 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/paddle_lite_libs_v2_9_0.tar.gz', 'dest': 'PaddleLite' ], 重新编译就不会有错了。

大佬你好,你说的重新编译是release模式也不会出错了是吧?我试了,release模式下,都想要的话,得需要加上 abiFilters 'arm64-v8a', 'armeabi-v7a',不然还是报错。我是打的release包,题主说的问题,我的是在release时出错,在as直接运行的话,不报错,能正常安装到手机。