You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio 2022 C++控制台应用中使用Tesseract NuGet包报错求解决

解决Visual Studio 2022中C++使用Tesseract NuGet包编译错误的方案

一、确认NuGet包的正确性

  • 确保安装的是原生C++版本的Tesseract包,而非.NET版本。推荐使用UB-Mannheim发布的Tesseract包,它自带Leptonica依赖及完整原生库文件。
  • 安装后检查项目依赖,确认Tesseract与Leptonica版本匹配(如Tesseract 5.2.0对应Leptonica 1.82.0左右),且均已正确安装。

二、项目配置检查

  1. 平台架构匹配
    • 右键项目→属性→配置属性→常规:设置平台工具集为v143(VS2022默认),平台为x64,与你安装的64位运行环境保持一致,避免使用Any CPU或x86。
  2. 包含与库目录验证
    • 右键项目→属性→配置属性→VC++目录:
      • 包含目录需包含$(SolutionDir)\packages\Tesseract.5.2.0\build\native\include和$(SolutionDir)\packages\Leptonica.1.82.0\build\native\include(版本号对应你的安装包),缺失则手动添加。
      • 库目录需包含$(SolutionDir)\packages\Tesseract.5.2.0\build\native\lib\x64\v143\Release和Leptonica对应的lib目录,确认路径存在,缺失则补充。
  3. 链接器输入配置
    • 右键项目→属性→配置属性→链接器→输入:附加依赖项中需添加libtesseract52.lib和libleptonica-1.82.0.lib(版本号对应安装包),未自动添加则手动补充。
  4. 字符集设置
    • 右键项目→属性→配置属性→常规:将字符集设为使用多字节字符集,避免Unicode字符集导致的函数名不匹配问题。

三、代码调整与优化

  1. 语言数据路径指定
    • api->Init(nullptr, "eng")中的nullptr可能无法找到NuGet包自带的语言数据,需手动指定tessdata文件夹路径:
      // 替换为你项目中tessdata的实际路径,示例如下
      if (api->Init("你的项目根目录\\packages\\Tesseract.5.2.0\\build\\native\\bin\\x64\\v143\\Release\\tessdata", "eng")) {
          fprintf(stderr, "Could not initialize Tesseract.\n");
          exit(1);
      }
      
    • 确保tessdata文件夹下存在eng.traineddata语言包文件。
  2. 资源释放顺序修正
    • 原代码中delete[] outText需放在api->End()之前,因为outText由Tesseract API分配内存,API结束后无法正确释放:
      // 修正后的资源释放流程
      delete[] outText;
      api->End();
      pixDestroy(&image);
      
  3. 图片路径有效性判断
    • 为避免路径错误导致图片无法读取,添加空指针判断:
      Pix* image = pixRead("D:/tools/img.png");
      if (!image) {
          fprintf(stderr, "Could not open image file.\n");
          api->End();
          exit(1);
      }
      

四、运行时环境配置

  • 将Tesseract和Leptonica的DLL文件复制到项目输出目录(如x64\Release):
    • Tesseract DLL路径:packages\Tesseract.5.2.0\build\native\bin\x64\v143\Release\libtesseract52.dll
    • Leptonica DLL路径:packages\Leptonica.1.82.0\build\native\bin\x64\v143\Release\libleptonica-1.82.0.dll
  • 也可通过后期生成事件自动复制:右键项目→属性→配置属性→生成事件→后期生成事件,添加命令:
    copy "$(SolutionDir)\packages\Tesseract.5.2.0\build\native\bin\x64\v143\Release\libtesseract52.dll" "$(OutDir)"
    copy "$(SolutionDir)\packages\Leptonica.1.82.0\build\native\bin\x64\v143\Release\libleptonica-1.82.0.dll" "$(OutDir)"
    

内容的提问来源于stack exchange,提问作者KFK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:17:34