I remember the opposite situation (on windows):debug was crasshit while release was ok. I also remember some problems with static builds. try to build tesseract by yourself as described in link above and use a shared library - it is not a big deal. Maybe the problem is related with SSE/FMA/AVX/AVX2 support. AFAIK autodetection should be fixed in the latest 4.1 version, so I suggest to try the 5.alpha version where this kind of problems should be fixed.
Zdenko št 31. 12. 2020 o 22:37 Minseok Kim <minseok.eric....@gmail.com> napísal(a): > I don't know if this adds on anything, but maybe you have some insight in > this. > I find that this works fine on more modern computer set-ups, but fails on > older ones. > One of the systems I tried to run this code on is using an i5 2400 and it > simply crashes even without an error. > Again, the debug version works on it, but the release build does not. > > On Thursday, December 31, 2020 at 3:31:41 PM UTC-6 zdenop wrote: > >> I am not able to reproduce the problem - but I do not use vcpkg (so maybe >> there is problem): >> >> 1. I used official opencv for windows >> https://netix.dl.sourceforge.net/project/opencvlibrary/4.5.1/opencv-4.5.1-vc14_vc15.exe >> -> Installed to F:\opencv2 >> 2. Because of using opencv2 I prefer to use "minimalistic tesseract" as >> described in https://spell.linux.sk/building-minimalistic-tesseract >> 3. As input image I used >> https://user-images.githubusercontent.com/71965365/94549264-84b00980-0284-11eb-9a28-0135d8c74de1.jpg >> 4. If there any strange behaviour you should use official training data: >> e.g. I used >> https://github.com/tesseract-ocr/tessdata_best/blob/master/eng.traineddata >> 5. Modified code (tess_cv.cpp) looks like this: >> #include <tesseract/baseapi.h> >> #include <leptonica/allheaders.h> >> #include <opencv2/opencv.hpp> >> >> int main() { >> std::string imPath = "image.jpeg"; >> cv::Mat im = cv::imread(imPath, cv::IMREAD_GRAYSCALE); >> >> setMsgSeverity(9); // turn off leptonica messages >> >> tesseract::TessBaseAPI* ocr = new tesseract::TessBaseAPI(); >> >> if (ocr->Init(NULL, "eng")) { >> std::cout << "Failed to initialize." << std::endl; >> } else { >> >> ocr->SetVariable("user_defined_dpi", "96"); >> ocr->SetImage(im.data, im.cols, im.rows, 1, im.cols); >> >> std::cout << "test1" << std::endl; >> >> char* str = ocr->GetUTF8Text(); >> std::cout << str << std::endl; >> std::cout << "test2" << std::endl; >> >> ocr->Clear(); >> >> ocr->End(); >> >> delete ocr; >> if (str) >> delete[] str; >> } >> >> system("pause"); >> } >> >> 6. Compiled from command line with: >> cl /EHsc tess_cv.cpp /If:\win64_msvc_min\include >> /If:\opencv2\opencv\build\include /link /LIBPATH:F:/WIN64_MSVC_MIN/LIB >> /LIBPATH:F:/WIN64_MSVC_MIN/LIB >> /LIBPATH:f:\opencv2\opencv\build\x64\vc15\lib\ tesseract50.lib >> leptonica-1.81.0.lib opencv_world451.lib /machine:x64 /out:tess_cv.exe >> >> Output of tess_cv.exe: >> test1 >> Python3WebSpider >> >> test2 >> >> 8. The statement *using namespace std* is generally *considered* bad >> practice and is known (in past) to cause compilation errors with >> tesseract. >> >> Zdenko >> >> >> št 31. 12. 2020 o 21:22 Minseok Kim <minseok....@gmail.com> napísal(a): >> >>> #include <iostream> >>> #include <string> >>> #include <tesseract/baseapi.h> >>> #include <leptonica/allheaders.h> >>> #include <opencv2/opencv.hpp> >>> >>> using namespace std; >>> using namespace cv; >>> >>> int main() >>> { >>> string outText = "", imPath = "image.jpeg"; >>> Mat im = cv::imread(imPath, cv::IMREAD_GRAYSCALE); >>> cv::bitwise_not(im, im); >>> cv::imwrite("image_inverted.jpeg", im); >>> >>> tesseract::TessBaseAPI* ocr = new tesseract::TessBaseAPI(); >>> >>> if (ocr->Init(NULL, "Impact")) >>> { >>> cout << "Failed to initialize." << endl; >>> } >>> else >>> { >>> //ocr->SetVariable("tessedit_char_whitelist", >>> "ABCDEFGHIJKLMNOP"); >>> ocr->SetVariable("user_defined_dpi", "96"); >>> //ocr->SetVariable("unlv_tilde_crunching", "false"); >>> //ocr->SetImage(im.data, im.cols, im.rows, 1, im.cols); >>> Pix* image = pixRead("image_inverted.jpeg"); >>> ocr->SetImage(image); >>> >>> cout << "test1" << endl; >>> char* str = ocr->GetUTF8Text(); >>> outText = string(str); >>> cout << outText << endl; >>> cout << "test2" << endl; >>> >>> ocr->Clear(); >>> //ocr->End(); >>> >>> delete ocr; >>> if (str) >>> delete[] str; >>> pixDestroy(&image); >>> } >>> >>> system("pause"); >>> } >>> >>> VS2019 - v142 >>> Windows 10 >>> vcpkg build of Tesseract (static libs) - 4.1.1#5 >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "tesseract-ocr" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to tesseract-oc...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/tesseract-ocr/774d1a41-1e6e-4bcd-951f-290e3b65e723n%40googlegroups.com >>> <https://groups.google.com/d/msgid/tesseract-ocr/774d1a41-1e6e-4bcd-951f-290e3b65e723n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "tesseract-ocr" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to tesseract-ocr+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tesseract-ocr/2ef3768e-267a-4308-a203-de974971f06bn%40googlegroups.com > <https://groups.google.com/d/msgid/tesseract-ocr/2ef3768e-267a-4308-a203-de974971f06bn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "tesseract-ocr" group. To unsubscribe from this group and stop receiving emails from it, send an email to tesseract-ocr+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tesseract-ocr/CAJbzG8xCKsU0pyKBuVsaEFAx04y5C-AmUi3XAQ%2Bx2zEarsNkxw%40mail.gmail.com.