Tesseract-OCR 3.02 with libc++

前端 未结 2 858
逝去的感伤
逝去的感伤 2021-02-04 22:27

Xcode 4.6, iOS SDK 6.1, tesseract-ocr 3.02

Since the last OpenCV versions are built using libc++, and tesseract-ocr is built using libstdc+

2条回答
  •  醉酒成梦
    2021-02-04 22:41

    Ok, so my problem was that after adding and removing references to libraries a few times in my project, I had quite a mess in my Library Search Paths. Plus, I didn't add the new "include" folder (created when building tesseract) to the User Header Search Paths.

    So, just a quick recap, in order to build tesseract-ocr using libc++, so it can work along with newer OpenCV versions:

    • Download leptonica-1.69
    • Download tesseract 3.02
    • Arrange them in the folder structure explained in the original tutorial here
    • Download this script to the same folder.
    • Edit the script for your relevant IOS_BASE_SDK and IOS_DEPLOY_TGT.
    • Edit CXX to use clang++: CXX="/usr/bin/clang++"
    • Edit CXXFLAGS to use libc++ as the standard library: CXXFLAGS="$CFLAGS -stdlib=libc++"
    • Use the script and build tesseract and leptonica.
    • Add these libraries to your xcode project, change the "C++ Standard Library" setting to libc++.
    • Make sure your "Library Search Paths" setting is not pointing to any old tesseract libs.
    • Make sure your "User Header Search Paths" setting is pointing to the new "include" folder created when you built the new libs.
    • Now, when you try building your project, you'll have a few missing header files. Just copy them from the old "include" folder from tesseract and leptonica.

    That's it. At this point, you'll have a project capable of using both new OpenCV versions AND tesseract 3.02 together. If it's a new project, don't forget to edit your prefix file accordingly to include OpenCV and Tesseract in case of __cplusplus, and rename any .m file using them to .mm

    Big thanks to to this answer, that got me well on my way.

提交回复
热议问题