[筆記]Win10下編譯Tesseract-OCR 4.0
阿新 • • 發佈:2019-01-06
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
編譯動態庫
如果想得到動態庫,使用下面的命令:
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
不清楚原因是什麼。