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> .\bootstrap-vcpkg.bat
PS> .\vcpkg integrate install
編譯Tesseract-OCR 4.0
PS> .\vcpkg install tesseract:x86-windows-static
如果需要64位的exe,將上面的x86
換成x64
即可。
如果發現某個組件下載失敗,可以自行下載后,將文件放在vcpkg\downloads\
目錄下,然后重新運行上面的命令。
最后成功時,會得到exe文件在vcpkg\packages\tesseract_x86-windows-static\tools\tesseract\tesseract.exe
驗證exe文件
PS> .\tesseract.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