在 Windows 10 上安装 tesseract for C++
Install tesseract for C++ on Windows 10
我在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 文档都没有关于该怎么做的完整说明列表。
我会列出我所做的,希望它能帮助某人。我不假装这是这样做的最佳方法。
-
官方 tesseract 文档中有基本提示。 转到"窗口"部分。 我确实安装了
sw
和cppan
但我想没有必要。 这里最主要的是安装 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
他们说,在这一点上,一切都应该会起作用。应该包含标头,应该链接库。但没有一个对我有用。
-
将项目配置更改为 x64 版(如果安装了 x86 tesseract,则更改为 x86 版(。
-
要包含标头:转到项目属性 -> C/C++ -> 常规。将"其他包含目录"设置为
C:toolsvcpkginstalledx64-windows-staticinclude
(或安装 vcpkg 的任何位置( -
链接库:项目属性 -> 链接器 -> 常规。将其他库目录设置为
C:toolsvcpkginstalledx64-windows-staticlib
-
项目属性 -> C/C++ ->代码生成。将运行时库设置为
Multi-threaded(/MT)
。否则我收到诸如"运行时不匹配静态与 DLL"之类的错误 -
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文件。
-
下载 tessdata。我从官方文档中得到它。 顺便说一句,就我的目的而言,tessdata_fast比tessdata_best工作得更好:) 所以我下载了单个"eng"文件并像
C:toolsTesseractDatatessdataeng.traineddata
一样保存它。 -
然后我添加了值为
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
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- 调用专用模板时出错"no matching function for call to [...]"
- 为什么我的for循环不能正确获取argv
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- Python中的for循环与C++有何不同
- std::memory_order for std::atomic:<T>:wait
- 在 Windows 10 上安装 tesseract for C++
- tesseract.lib (version 4 ) for windows 10 (x64)
- CMake for Tesseract and OpenCV
- 将tess-two(Tesseract Tools for Android)库集成到Android工作室并构建ndk的问