diff --git a/CMakeLists.txt b/CMakeLists.txt index a23698d..341d96e 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,11 +22,13 @@ add_library(bpocrapi SHARED ${OCR_SRC}) target_compile_definitions(bpocrapi PUBLIC -D_BPOCR_LIB) - +# test program set(BPOCRTESTSRC api4cpp/bpocrapitest.cpp) add_executable(bpocrtest ${BPOCRTESTSRC}) +#opencv +set(OPENCV_LIB opencv_core opencv_imgproc opencv_imgcodecs) if(WIN32) @@ -36,10 +38,11 @@ elseif(UNIX) message(STATUS ${CMAKE_CURRENT_SOURCE_DIR}/lib/linux) target_link_directories(bpocrapi PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/linux ) -target_link_libraries(bpocrapi onnxruntime opencv_core) +target_link_libraries(bpocrapi onnxruntime ${OPENCV_LIB}) + +target_link_directories(bpocrtest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/linux) +target_link_libraries(bpocrtest onnxruntime ${OPENCV_LIB} bpocrapi gomp) -target_link_directories(bpocrtest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/linux ) -target_link_libraries(bpocrtest onnxruntime opencv_core bpocrapi) endif() diff --git a/api4cpp/baipiaoocr_api.cpp b/api4cpp/baipiaoocr_api.cpp index cff4931..c98ceb1 100755 --- a/api4cpp/baipiaoocr_api.cpp +++ b/api4cpp/baipiaoocr_api.cpp @@ -4,23 +4,42 @@ extern "C" { #endif - _QM_OCR_API BPHANDLE BPOcrInit(const char* szDetModel, const char* szClsModel, const char* szRecModel) + _QM_OCR_API BPHANDLE BPOcrInit(const char* szDetModel, const char* szClsModel, const char* szRecModel,const char *szKeyPath, int nThreads) { + omp_set_num_threads(nThreads); + OcrLite * pOcrObj=new OcrLite; + if(pOcrObj) + { + pOcrObj->setNumThread(nThreads); - return NULL; + pOcrObj->initModels(szDetModel, szClsModel, szRecModel, szKeyPath); + + return pOcrObj; + } + else + { + return nullptr; + } + } - _QM_OCR_API const char* BPOcrDoOcr(BPHANDLE handle, const char* szImgPath, BOOL bAutoParam) + _QM_OCR_API const char* BPOcrDoOcr(BPHANDLE handle, const char* szImgPath, BOOL bAutoParam,BPOCR_PARAM *pParam) { + OcrLite * pOcrObj=( OcrLite *)handle; + if(!pOcrObj) + return NULL; - return NULL; + return ""; } _QM_OCR_API void BPOcrDeinit(BPHANDLE handle) { + OcrLite * pOcrObj=( OcrLite *)handle; + if(pOcrObj) + delete pOcrObj; } diff --git a/api4cpp/bpocrapitest.cpp b/api4cpp/bpocrapitest.cpp index fc15d0f..30004b6 100644 --- a/api4cpp/bpocrapitest.cpp +++ b/api4cpp/bpocrapitest.cpp @@ -1,10 +1,24 @@ -#include "../include/precomp.h" +#include +#include #include "../include/baipiaoocr_api.h" +#define BPOCR_DET_MODEL "" +#define BPOCR_CLS_MODEL "" +#define BPOCR_REC_MODEL "" +#define BPOCR_KEY_PATH "" - +#define THREAD_NUM 3 int main(int argc, char * argv[]) { + + BPHANDLE Handle= BPOcrInit(BPOCR_DET_MODEL,BPOCR_CLS_MODEL,BPOCR_REC_MODEL,BPOCR_KEY_PATH,THREAD_NUM); + if(!Handle) + { + printf("cannot initialize the OCR Engine.\n"); + return -1; + } + + return 0; } \ No newline at end of file diff --git a/include/baipiaoocr_api.h b/include/baipiaoocr_api.h index b08f933..c91adf7 100755 --- a/include/baipiaoocr_api.h +++ b/include/baipiaoocr_api.h @@ -1,3 +1,4 @@ +#pragma once #ifdef __cplusplus extern "C" { @@ -24,13 +25,24 @@ typedef char BOOL; #define TRUE 1 #define FALSE 0 - _QM_OCR_API BPHANDLE BPOcrInit(const char * szDetModel, const char * szClsModel, const char * szRecModel); - _QM_OCR_API const char* BPOcrDoOcr(BPHANDLE handle, const char* szImgPath, BOOL bAutoParam); +typedef struct __bpocr_param +{ + int nLongsizeLen; + float fClipRate; +} BPOCR_PARAM; - _QM_OCR_API void BPOcrDeinit(BPHANDLE handle); +/* +By default, nThreads should be the number of threads +*/ +_QM_OCR_API BPHANDLE BPOcrInit(const char * szDetModel, const char * szClsModel, const char * szRecModel,const char *szKeyPath,int nThreads); + +_QM_OCR_API const char* BPOcrDoOcr(BPHANDLE handle, const char* szImgPath, BOOL bAutoParam, BPOCR_PARAM *pParam); + +_QM_OCR_API void BPOcrDeinit(BPHANDLE handle); + diff --git a/include/precomp.h b/include/precomp.h index dc99fa2..6909fce 100755 --- a/include/precomp.h +++ b/include/precomp.h @@ -1,3 +1,5 @@ #pragma once #include "OcrUtils.h" -#include "baipiaoocr_api.h" \ No newline at end of file +#include "baipiaoocr_api.h" +#include "omp.h" +#include "OcrLite.h" \ No newline at end of file