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)
/opt/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-g++ --sysroot=/opt/android-ndk-r17c/platforms/android-24/arch-arm64 -funwind-tables -no-canonical-prefixes -DANDROID_API=23 -fexceptions -frtti -std=c++11 -fopenmp -O3 -DNDEBUG -fPIE -pie -Wl,--gc-sections ocr_db_crnn.o crnn_process.o db_post_process.o clipper.o cls_process.o -o ocr_db_crnn ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_imgcodecs.a ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_imgproc.a ../../../third_party/opencv4.1.0/arm64-v8a/libs/libopencv_core.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libtegra_hal.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibjpeg-turbo.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibwebp.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibpng.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibjasper.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/liblibtiff.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libIlmImf.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libtbb.a ../../../third_party/opencv4.1.0/arm64-v8a/3rdparty/libs/libcpufeatures.a ../../../cxx/lib/libpaddle_api_light_bundled.a /opt/android-ndk-r17c/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_static.a /opt/android-ndk-r17c/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++abi.a -latomic -pthread -ldl -llog -lz ocr_db_crnn.o: In function `loadModel(std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator >)':
ocr_db_crnn.cc:(.text+0x28): undefined reference to ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator > const&)'
ocr_db_crnn.cc:(.text+0x68): undefined reference to `std:: ndk1::shared_ptr paddle::lite_api::CreatePaddlePredictor(paddle::lite_api::MobileConfig const&)'
ocr_db_crnn.o: In function `RunClsModel(cv::Mat, std:: ndk1::shared_ptr, float)':
ocr_db_crnn.cc:(.text+0xc60): undefined reference to (paddle::lite_api::TargetType) const'
ocr_db_crnn.cc:(.text+0xd90): undefined reference to `float paddle::lite_api::Tensor::mutable_data(paddle::lite_api::TargetType) const'
ocr_db_crnn.cc:(.text+0xd9c): undefined reference to >, std::ndk1::allocator<std::ndk1::vector<int, std::ndk1::allocator > > >, std:: ndk1::allocator<std::ndk1::vector<std::ndk1::vector<int, std::ndk1::allocator >, std:: ndk1::allocator<std::ndk1::vector<int, std::ndk1::allocator > > > > >, cv::Mat, std::ndk1::shared_ptr, std:: ndk1::vector<std::ndk1::basic_string<char, std::__ndk1::char_traits, std:: ndk1::allocator >, std::ndk1::allocator<std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator > > >&, std:: ndk1::vector<float, std::ndk1::allocator >&, std:: ndk1::vector<std::__ndk1::basic_string<char, std:: ndk1::char_traits, std::ndk1::allocator >, std:: ndk1::allocator<std::ndk1::basic_string<char, std::__ndk1::char_traits, std:: ndk1::allocator > > >, std::ndk1::shared_ptr, int)':
ocr_db_crnn.cc:(.text+0x230c): undefined reference to (paddle::lite_api::TargetType) const'
ocr_db_crnn.cc:(.text+0x2414): undefined reference to `long const paddle::lite_api::Tensor::data() const'
ocr_db_crnn.cc:(.text+0x2424): undefined reference to ndk1::shared_ptr, cv::Mat, std::ndk1::map<std::ndk1::basic_string<char, std::ndk1::char_traits, std::ndk1::allocator >, double, std:: ndk1::less<std::__ndk1::basic_string<char, std:: ndk1::char_traits, std::ndk1::allocator > >, std:: ndk1::allocator<std::ndk1::pair<std::ndk1::basic_string<char, std::ndk1::char_traits, std::__ndk1::allocator > const, double> > >)':
ocr_db_crnn.cc:(.text+0x37dc): undefined reference to `paddle::lite_api::Tensor::Resize(std:: ndk1::vector<long, std::__ndk1::allocator > const&)'
ocr_db_crnn.cc:(.text+0x37fc): undefined reference to () const'
ocr_db_crnn.cc:(.text+0x39c0): undefined reference to `paddle::lite_api::Tensor::shape() const'
collect2: error: ld returned 1 exit status
paddle::lite_api::ConfigBase::ConfigBase(paddle::lite_api::PowerMode, int)' ocr_db_crnn.cc:(.text+0x5c): undefined reference to
paddle::lite_api::MobileConfig::set_model_from_file(std::paddle::lite_api::Tensor::Resize(std::__ndk1::vector<long, std::__ndk1::allocator<long> > const&)' ocr_db_crnn.cc:(.text+0xc80): undefined reference to
float paddle::lite_api::Tensor::mutable_datalong const* paddle::lite_api::Tensor::data<long>() const' ocr_db_crnn.o: In function
RunRecModel(std::ndk1::vector<std::ndk1::vector<std::ndk1::vector<int, std::ndk1::allocatorpaddle::lite_api::Tensor::Resize(std::__ndk1::vector<long, std::__ndk1::allocator<long> > const&)' ocr_db_crnn.cc:(.text+0x232c): undefined reference to
float paddle::lite_api::Tensor::mutable_datapaddle::lite_api::Tensor::lod() const' ocr_db_crnn.cc:(.text+0x2430): undefined reference to
paddle::lite_api::Tensor::shape() const' ocr_db_crnn.cc:(.text+0x262c): undefined reference tofloat const* paddle::lite_api::Tensor::data<float>() const' ocr_db_crnn.cc:(.text+0x263c): undefined reference to
paddle::lite_api::Tensor::shape() const' ocr_db_crnn.cc:(.text+0x2648): undefined reference topaddle::lite_api::Tensor::lod() const' ocr_db_crnn.o: In function
RunDetModel(std::float* paddle::lite_api::Tensor::mutable_data<float>(paddle::lite_api::TargetType) const' ocr_db_crnn.cc:(.text+0x39a4): undefined reference to
float const* paddle::lite_api::Tensor::data