Android app 接入PaddleOCR
一、 解压文件
解压文件夹,文件目录如下
- assets:模型资源
- cpp:c++源码
- ocr:使用模型需要用到的类
- OpenCV | PaddleLite :编译和使用模型需要的库

二、 库、模型、cpp文件的设置
1. 将你的项目目录切换至Project视图(以下所有操作都要在project视图下完成)

2. 将OCR下的 “OpenCV” 和 “PaddleLite” 复制至Application-app下,这是编译和使用模型需要用到的库

3. 在app-src-main目录下创建一个assets文件夹,具体方式如下

4. 将OCR下assets中的全部内容复制到app-main-scr-assets下,此时目录结构如图

5. 将OCR下的cpp文件夹复制到app-src-main下,其中存放的是C++功能代码

6. 右键cpp文件夹,选择 “Mark Directory as” - “Sources Root”

三、 代码设置
1. 将OCR下的ocr文件夹复制到项目目录app-src-main-java-com.**(你的包名)下,如图

并将ocr文件下代码路径(包名)修改为自己项目的路径(后面的 “.ocr” 不要去掉)

2. 在app-src-main-res中创建文件夹xml,并新建一个xml文件 “file_paths.xml”

并在 “file_paths.xml” 中添加如下代码,照片权限相关
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="my_images" path="Pictures" />
</paths>
3. 在 “AndroidManifest.xml” 中<manifest></manifest>
之间添加如下带代码
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
并在 <application></application>
之间添加如下带代码,注意修改包名
<!--注意android:authorities中"com.example.myapplication"要改成自己的包名-->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapplication.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
4. 打开Build.gradle(:app),在android{}中添加如下代码
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt
version "3.10.2"
}
}
并在defaultConfig {}中添加如下代码
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions -Wno-format"
arguments '-DANDROID_PLATFORM=android-23','-DANDROID_STL=c++_shared',"-DANDROID_ARM_NEON=TRUE"
}
}
ndk {
// abiFilters "arm64-v8a", "armeabi-v7a"
abiFilters "arm64-v8a", "armeabi-v7a"
ldLibs "jnigraphics"