在 Windows 10 上安装适用于 C++ 的 tesseract

Posted

技术标签:

【中文标题】在 Windows 10 上安装适用于 C++ 的 tesseract【英文标题】:Install tesseract for C++ on Windows 10 【发布时间】:2018-11-12 12:17:48 【问题描述】:

我在安装 tesseract 以在 Windows 10 上使用 C++ 进行开发时遇到问题。

谁能提供获取指南: 1. Leptonica(tesseract 需要)lib 并包含 2. Tesseract 库和包含 3. 将两者链接到项目(例如 Visual Studio) 所以来自https://github.com/tesseract-ocr/tesseract/wiki/APIExample 的例子有效:

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()

    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) 
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    

    // Open input image with leptonica library
    Pix *image = pixRead("/usr/src/tesseract/testing/phototest.tif");
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // Destroy used object and release memory
    api->End();
    delete[] outText;
    pixDestroy(&image);

    return 0;

【问题讨论】:

【参考方案1】:

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

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

    official tesseract documentation 中有基本提示。 转到“Windows”部分。 我确实安装了swcppan,但我想没有必要。 这里主要是安装vcpkg。 它需要Git,所以我安装了它。 那么:

    &gt; cd c:tools(我安装在c:\tools,你可以选择任意目录)

    &gt; git clone https://github.com/microsoft/vcpkg

    &gt; .\vcpkg\bootstrap-vcpkg.bat

    &gt; .\vcpkg\vcpkg install tesseract:x64-windows-static(我用的是x64版本)

    &gt; .\vcpkg\vcpkg integrate install

他们说,此时一切都应该正常。应包含标头,应链接库。但没有一个对我有用。

    将项目配置更改为 Release x64(如果您安装了 x86 tesseract,则更改为 Release x86)。

    要包含标题:转到项目属性 -> C/C++ -> 常规。将 Additional Include Directories 设置为 C:\tools\vcpkg\installed\x64-windows-static\include(或您安装 vcpkg 的任何位置)

    链接库:项目属性 -> 链接器 -> 常规。将其他库目录设置为C:\tools\vcpkg\installed\x64-windows-static\lib

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

    Tesseract 库无法链接到其依赖项,因此我将已安装的所有库添加到 C:\tools\vcpkg\installed\x64-windows-static\lib。 项目属性 -> 链接器 -> 输入。我将 Additional Dependencies 设置为 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-&gt;Init 返回了-1。要使用 tesseract,您应该拥有 tessdata 目录,其中包含您需要的语言的 .traineddata 文件。

    下载 tessdata。我是从official docs 那里得到的。 顺便说一句,对于我的目的来说,tessdata_fast 比 tessdata_best 效果更好:) 所以我下载了单个“eng”文件并将其保存为C:\tools\TesseractData\tessdata\eng.traineddata

    然后我添加了环境变量TESSDATA_PREFIX,其值为C:\tools\TesseractData\tessdata。我还在路径变量中添加了C:\tools\TesseractData(以防万一)

在这一切之后,它终于对我有用了。

【讨论】:

【参考方案2】:

安装 vcpkg(MS 打包器来安装基于 Windows 的开源项目)并使用类似.\vcpkg install tesseract:x64-windows-static 的 powershell 命令。 Leptonica 之类的依赖库将自动为您安装。 tesseract 可以使用 .\vcpkg integrate install. 自动集成到您的 VS 项目中

【讨论】:

以上是关于在 Windows 10 上安装适用于 C++ 的 tesseract的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c++ 中创建一个适用于 Windows 和 linux 的文件夹(目录)[重复]

在适用于 Linux 的 Windows 子系统上安装 Apache

适用于 Linux 的 Windows 子系统安装指南 (Windows 10) (微软官方文档)

适用于 Windows 8.1 的 Nvidia GeForce 驱动程序无法在 Windows 10 上运行 [关闭]

Windows 上适用于 Linux 的 C++ 编译器? [关闭]

C++ 如何检测 Windows 10