在 Windows 10 上安装 tesseract for C++

Install tesseract for C++ on Windows 10

本文关键字:tesseract for C++ 安装 Windows      更新时间:2023-10-16

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

任何人都可以提供获得的指南:1.
Leptonica (由 tesseract 要求( lib 并包括
2.Tesseract lib 并包括
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. 官方 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(以防万一(

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

安装vcpkg(MS 打包程序安装基于 Windows 的开源项目(并使用 Powershell 命令,就像.vcpkg install tesseract:x64-windows-static一样。像Leptonica这样的依赖项库将自动安装。 可以使用.vcpkg integrate install.自动将镶嵌器集成到您的VS项目中

此外,我发现您还必须通过以下方式安装lzo2.lib./vcpkg install lzo:x64-windows-static. 然后按照@Nick所述拉入 lzo2.lib。

上面列出的一些库不再受最新版本的 Tesseract 支持。当您简单地复制它们时,VS19 会抱怨它;只需通过交叉检查删除不再需要的那些。

例如,tiffxx.lib,hashxx.lib和其他一些。

编写命令 msys2
pacman -S mingw-w64-{i686,x86_64}-tesseract-ocr