我正在从事项目工作,并集成了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。