c++ - 在 Windows 10 上为 C++ 安装 tesseract

标签 c++ installation ocr tesseract

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

任何人都可以提供指南以获取:
1. Leptonica (tesseract 需要) lib 和 includes
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;
}

最佳答案

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

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

  1. official tesseract documentation 中有基本提示. 转到“Windows”部分。 我确实安装了 swcppan 但我想这不是必需的。 这里主要是安装vcpkg . 它需要 Git所以我安装了它。 然后:

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

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

    > .\vcpkg\bootstrap-vcpkg.bat

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

    > .\vcpkg\vcpkg 集成安装

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

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

  2. 要包含 header :转至项目属性 -> C/C++ -> 常规。将附加包含目录设置为 C:\tools\vcpkg\installed\x64-windows-static\include(或安装 vcpkg 的任何位置)

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

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

  5. Tesseract lib 无法链接到其依赖项,因此我将已安装的所有库添加到 C:\tools\vcpkg\installed\x64-windows-static\lib。 项目属性 -> 链接器 -> 输入。我将附加依赖项设置为 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. 下载测试数据。我从official docs得到的. 顺便说一句,就我的目的而言,tessdata_fast 比 tessdata_best 工作得更好:) 所以我下载了单个“eng”文件并将其保存为 C:\tools\TesseractData\tessdata\eng.traineddata

  2. 然后我添加了环境变量 TESSDATA_PREFIX,其值为 C:\tools\TesseractData\tessdata。我还将 C:\tools\TesseractData 添加到 Path 变量(以防万一)

经过这一切,它终于对我有用了。

关于c++ - 在 Windows 10 上为 C++ 安装 tesseract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658953/

相关文章:

c++ - 如何在 C++ 中初始化 3D 数组

windows - 来自CMD命令提示符的Docker错误:运行SSH命令时出现问题

python - PyPi站 pip 缺少sys,subprocess和timeit软件包

c++ - 如何从 MNIST 数字数据库中读取像素并创建 iplimage

c++ - 如何将一个 vector 拆分为另外两个包含 N 个随机选择的元素和其余元素的 vector ?

c++ - 无法使用默认参数初始化 lambda 成员变量

c++ - 虚拟函数调用的性能作为for循环中的上限

linux - 在 slackware 13.37 上安装 libpar2 时出错

javascript - 使用 Google 应用程序脚本将文本从 PDF 转换为文本

xamarin - 相机预览和 OCR