升级ndk-14后,共享库会出现问题

时间:2017-04-06 10:34:44

标签: android gradle android-ndk card.io tess-two

我正在从事项目工作,并集成了card.io和tess-two库。我已经拥有这些图书馆,用于阅读国民身份证和其他身份证。在升级到ndk-14之前,一切运行良好。但升级后,我遇到了很多问题。我降级到ndk-13,但还有这些错误。这是我的日志:

04-06 14:22:41.997 3075-3075/com.javadbadirkhanly.newcardscannerproject A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 3075 (dscannerproject)

                                                                            [ 04-06 14:22:42.000   375:  375 W/         ]
debuggerd: handling request: pid=3075 uid=10125 gid=10125 tid=3075
04-06 14:22:42.099 3236-3236/? A/DEBUG: pid: 3075, tid: 3075, name: dscannerproject  >>> com.javadbadirkhanly.newcardscannerproject <<<
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #04 pc 0000000000139a60 /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZNK7ERRCODE5errorEPKc16TessErrorLogCodeS1_z+360)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #05 pc 0000000000148b90  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZN9tesseract8Classify22InitAdaptiveClassifierEb+252)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #06 pc 0000000000233364  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZN9tesseract7Wordrec14program_editupEPKcbb+56)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #07 pc 00000000000f0bfc  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZN9tesseract9Tesseract23init_tesseract_internalEPKcS2_S2_NS_13OcrEngineModeEPPciPK13GenericVectorI6STRINGESA_b+268)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #08 pc 00000000000f06bc  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZN9tesseract9Tesseract14init_tesseractEPKcS2_S2_NS_13OcrEngineModeEPPciPK13GenericVectorI6STRINGESA_b+392)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #09 pc 00000000000a1788  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libtess.so (_ZN9tesseract11TessBaseAPI4InitEPKcS2_NS_13OcrEngineModeEPPciPK13GenericVectorI6STRINGESA_b+288)
04-06 14:22:42.169 3236-3236/? A/DEBUG:     #10 pc 000000000001f37c  /data/app/com.javadbadirkhanly.newcardscannerproject-1/lib/arm64/libcardioRecognizer_tegra2.so (Java_com_javadbadirkhanly_newcardscannerproject_hardware_CardScanner_nSetup+104)
04-06 14:22:43.255 4939-3258/? W/ActivityManager:   Force finishing activity com.javadbadirkhanly.newcardscannerproject/.activities.CardIOActivity

                                              [ 04-06 14:22:43.276   375:  375 W/         ]
                                              debuggerd: resuming target 3075
04-06 14:22:43.284 4939-19110/? I/WindowManager: WIN DEATH: Window{63d7429 u0 com.javadbadirkhanly.newcardscannerproject/com.javadbadirkhanly.newcardscannerproject.activities.CardIOActivity}
04-06 14:22:43.285 4939-4958/? I/ActivityManager: Process com.javadbadirkhanly.newcardscannerproject (pid 3075) has died
04-06 14:22:43.285 4939-4958/? W/ActivityManager: Scheduling restart of crashed service com.javadbadirkhanly.newcardscannerproject/com.android.tools.fd.runtime.InstantRunService in 1000ms
04-06 14:22:43.286 4939-6710/? W/InputDispatcher: channel '7e4664e com.javadbadirkhanly.newcardscannerproject/com.javadbadirkhanly.newcardscannerproject.activities.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
04-06 14:22:43.286 4939-6710/? E/InputDispatcher: channel '7e4664e com.javadbadirkhanly.newcardscannerproject/com.javadbadirkhanly.newcardscannerproject.activities.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-06 14:22:43.292 4939-21535/? I/WindowManager: WIN DEATH: Window{7e4664e u0 com.javadbadirkhanly.newcardscannerproject/com.javadbadirkhanly.newcardscannerproject.activities.MainActivity}
04-06 14:22:43.292 4939-21535/? W/InputDispatcher: Attempted to unregister already unregistered input channel '7e4664e com.javadbadirkhanly.newcardscannerproject/com.javadbadirkhanly.newcardscannerproject.activities.MainActivity (server)'
04-06 14:22:43.305 4939-4958/? I/ActivityManager: Start proc 3261:com.javadbadirkhanly.newcardscannerproject/u0a125 for activity com.javadbadirkhanly.newcardscannerproject/.activities.MainActivity
04-06 14:22:43.611 3261-3261/? I/InstantRun: Starting Instant Run Server for com.javadbadirkhanly.newcardscannerproject
04-06 14:22:43.815 4939-4996/? I/ActivityManager: Displayed com.javadbadirkhanly.newcardscannerproject/.activities.MainActivity: +523ms
04-06 14:24:38.638 4939-3258/? W/ActivityManager: Ignoring remove of inactive process: ProcessRecord{fad747e 0:com.javadbadirkhanly.newcardscannerproject/u0a125}

关于libtess.so库的问题,但我不知道为什么?请帮助我,并询问更多细节。

以下是jni的一些基本代码:

初始化:

int res = api->Init(env->GetStringUTFChars(dataPath, 0), "aze");

if (res) {
    dmz_error_log("Could not initialize tesseract");
} else {
    dmz_debug_log("Initialized tesseract");
}

从卡片获取图片:

char *getCardNumberImage(cv::Mat cardImage) {
cv::Rect cropRect(kCreditCardTargetWidth * 76 / mmCardWidth,
                  kCreditCardTargetHeight * 14 / mmCardHeight,
                  kCreditCardTargetWidth * 24 / mmCardWidth,
                  kCreditCardTargetHeight * 4 / mmCardHeight);

api->SetVariable("tessedit_char_whitelist",
                 "0123456789");

return getOCRText(cardImage(cropRect));
}

从tesseract获得结果:

char *getOCRText(cv::Mat image) {
api->SetImage((uchar *) image.data, image.size().width, image.size().height,
              image.channels(), image.step1());
// Get OCR result
char *outText = api->GetUTF8Text();
dmz_debug_log("TEXT %s", outText);
return outText;
}

I当我使用3.05训练的训练数据时效果很好,但是当我使用训练有4.00的数据时,它会给我这样的错误。我的tesseract版本是4.00 Alpha。

0 个答案:

没有答案