Tesseract-OCR 4.0使用了LSTM网络,准确性相比3.x版本提升不少。
官网提供的安装包会提供一堆DLL,而我需要的是一个静态链接的exe文件,所以只能重新编译。
编译环境
-
Windows 10 专业版
-
Visual Studio 2017
需要选择开发桌面程序的相关组件,并选择英文。
- cmake
我的cmake版本是3.13.2,貌似没它也行。
- cppan
从cppan官网下载CPPAN客户端,编译动态库时使用。
- vckpg
下载vcpkg源码,使用管理员权限打开PowerShell,编译之。
> git clone https://github.com/Microsoft/vcpkg.git
> cd vcpkg
PS> .ootstrap-vcpkg.bat
PS> .vcpkg integrate install
编译Tesseract-OCR 4.0
PS> .vcpkg install tesseract:x86-windows-static
如果需要64位的exe,将上面的x86
换成x64
即可。
如果发现某个组件下载失败,可以自行下载后,将文件放在vcpkgdownloads
目录下,然后重新运行上面的命令。
最后成功时,会得到exe文件在vcpkgpackages esseract_x86-windows-static ools esseract esseract.exe
验证exe文件
PS> . esseract.exe --version
tesseract 4.0.0
leptonica-1.76.0 (Jan 5 2019, 23:01:20) [MSC v.1916 LIB Release x86]
libgif 5.1.4 : libjpeg 6b (libjpeg-turbo 1.5.3) : libpng 1.6.35 : libtiff 4.0.10 : zlib 1.2.11
Found AVX
Found SSE
使用Tesseract-OCR 4.0识别图片文件
将tesseract.exe拷贝到某个目录,然后在该目录之下建立tessdata
目录,下载所需的语言库文件放在里面。
要识别简体中文,需要下载的是chi_sim_best.traineddata
和chi_sim_vert.traineddata
文件。
举例要识别a.jpg
文件,命令行如下:
> tesseract.exe a.jpg output -l chi_sim_best --oem 1
识别结果在output.txt
文件内。
OpenMP
安装Visual C++ Redistributable 2015
,就有了vcomp140.dll
,以支持OpenMP。
编译动态库
如果想得到动态库,使用下面的命令:
cppan --build pvt.cppan.demo.google.tesseract.tesseract-master
中间出现错误,将equationdetect.cpp
使用带BOM的UTF-8编码另存一下就解决了,最终生成的动态库文件如下:
pvt.cppan.demo.danbloomberg.leptonica-1.76.0.dll
pvt.cppan.demo.google.tesseract.libtesseract-master.dll
pvt.cppan.demo.google.tesseract.tesseract-master.exe
pvt.cppan.demo.jpeg-9.2.0.dll
pvt.cppan.demo.madler.zlib-1.2.11.dll
pvt.cppan.demo.openjpeg.openjp2-2.3.0.dll
pvt.cppan.demo.png-1.6.35.dll
pvt.cppan.demo.tiff-4.0.9.dll
pvt.cppan.demo.webp-0.6.1.dll
pvt.cppan.demo.xz_utils.lzma-5.2.4.dll
Tesseract训练工具
从cppan官网下载CPPAN客户端,然后执行
cppan --build pvt.cppan.demo.google.tesseract-master
最后也没成功,部分报错如下:
Performing Test HAVE_DECL_DECL - Failed
...
error C2065: 'decl': undeclared identifier
不清楚原因是什么。
[更新于 2019-11-05]
上述流程可以应用于生成最新版的Tesseract,目前编译成功了 4.1.0
- 可以使用VS2019 Commnunity版
- 安装时需要选择使用C++的桌面开发,默认配置即可
- 注意要包含
Windows 10 SDK
- 语言包要勾选English