如何将 Tesseract 链接到 VS 2019 中的C++项目?

How do I link Tesseract to a C++ project in VS 2019?

本文关键字:中的 2019 C++ 项目 VS Tesseract 链接      更新时间:2023-10-16

所以我已经链接了OpenCV,这非常简单,网上有很多指南如何做到这一点。

但是我不知道如何下载Tesseract以在自己的应用程序中使用。我想获取 API 并将其与 OpenCV 结合使用。任何人都可以指导我完成我需要下载的内容以及我需要修改哪些设置才能实现此目的?

安装 vcpkg(MS packager 安装基于 Windows 的开源项目(并使用 powershell 命令,如下所示 .\vcpkg install tesseract:x64-windows-static.像Leptonica这样的依赖库将自动为您安装。可以使用 .\vcpkg 集成安装自动将 tesseract 集成到您的 VS 项目中。

我遇到了类似的问题,在这个线程中,我分享了我如何解决它的经验。可能对某人有帮助。我将在这里处理文本:

几天来,我一直在尝试将tesseract库链接到Visual Studio 2019中的c ++项目,我终于设法做到了。 我找到的任何线程甚至官方 tesseract 文档都没有关于该怎么做的完整说明列表。

我会列出我所做的,希望它能帮助某人。我不假装这是这样做的最佳方法。

  1. 官方 tesseract 文档中有基本提示。 转到"窗口"部分。 我确实安装了swcppan但我想没有必要。 这里最主要的是安装 vcpkg。 它需要 Git,所以我安装了它。 然后:

    > cd c:tools(我把它安装在c:tools,你可以选择任何目录(

    > git clone https://github.com/microsoft/vcpkg

    > .vcpkgbootstrap-vcpkg.bat

    > .vcpkgvcpkg install tesseract:x64-windows-static(我用的是x64版本(

    > .vcpkgvcpkg integrate install

他们说,在这一点上,一切都应该会起作用。应该包含标头,应该链接库。但没有一个对我有用。

  1. 将项目配置更改为 x64 版(如果安装了 x86 tesseract,则更改为 x86 版(。

  2. 要包含标头:转到项目属性 -> C/C++ -> 常规。将"其他包含目录"设置为C:toolsvcpkginstalledx64-windows-staticinclude(或安装 vcpkg 的任何位置(

  3. 链接库:项目属性 -> 链接器 -> 常规。将其他库目录设置为C:toolsvcpkginstalledx64-windows-staticlib

  4. 项目属性 -> C/C++ ->代码生成。将运行时库设置为Multi-threaded(/MT)。否则我收到诸如"运行时不匹配静态与 DLL"之类的错误

  5. Tesseract 库无法链接到它的依赖项,所以我将我安装的所有库都添加到C:toolsvcpkginstalledx64-windows-staticlib. 项目属性 ->链接器 ->输入。我将"其他依赖项"设置为archive.lib;bz2.lib;charset.lib;gif.lib;iconv.lib;jpeg.lib;leptonica-1.80.0.lib;libcrypto.lib;libpng16.lib;libssl.lib;libwebpmux.lib;libxml2.lib;lz4.lib;lzma.lib;lzo2.lib;openjp2.lib;tesseract41.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;xxhash.lib;zlib.lib;zstd_static.lib;%(AdditionalDependencies)

之后,它终于编译并启动了。

但。。。api->Init返回-1.要使用tesseract,您应该拥有tessdata目录,其中包含所需语言的.traineddata文件。

  1. 下载 tessdata。我从官方文档中得到它。 顺便说一句,就我的目的而言,tessdata_fast比tessdata_best工作得更好:) 所以我下载了单个"eng"文件并像C:toolsTesseractDatatessdataeng.traineddata一样保存它。

  2. 然后我添加了值为C:toolsTesseractDatatessdata的环境变量TESSDATA_PREFIX。我还向 Path 变量添加了C:toolsTesseractData(以防万一(

在这一切之后,它终于为我工作了。