Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案
基本概念
Tesseract OCR:Tesseract-OCR 引擎最先由HP實驗室于1985年開始研發,至1995年時已經成為OCR業內最準確的三款識別引擎之一。然而,HP不久便決定放棄OCR業務,Tesseract也從此塵封。數年以后,HP 意識到,與其將Tesseract束之高閣,不如貢獻給開源軟件業,讓其重煥新生。在2005年,Tesseract 由美國內華達州信息技術研究所獲得,并求諸于 Google 對 Tesseract 進行改進、消除Bug、優化工作,Tesseract 由惠普公司宣布開源。從2006年到現在,都由 Google 公司開發維護。
編譯環境
Windows 10
CMake-GUI?
Visual Studio 2019
Anaconda3(可無)
解決方案
注意事項
關閉殺毒軟件。
源碼下載
tesseract的編譯有諸多依賴,tesseract依賴于leptonica,而leptonica又依賴于png,tiff,jpeg等基礎庫,所以需要下載這些依賴的源碼,并且依次編譯
考慮到某些圖片格式的基礎庫源碼較老并且久未更新難于編譯,本文只編譯了較新的libtiff,并作為示例,其他圖片格式未測試
下載地址:
- libtiff 4.09,http://download.osgeo.org/libtiff/tiff-4.0.9.zip
- leptonica 1.76.0,http://www.leptonica.com/source/leptonica-1.76.0.tar.gz
- tesseract 3.05.01,https://github.com/tesseract-ocr/tesseract/archive/3.05.01.zip
下載完后解壓縮到文件夾,這里將三個項目源碼都放在D:\Code\Project目錄
編譯過程
特別指定,本文中所有項目生成都是使用cmake-gui工具(首先要會用這個工具),C++編譯使用vs2019,所有cmake編譯目錄都定為build_x64
所有的編譯模式都是:vs2015 win64 release
由于tiff --> leptonica --> tesseract 三者之間層層遞進,環環相扣,所以編譯一定要注意順序和設置
step1:編譯tiff
常規cmake流程編譯出 tiff.lib和tiff.dll,位置在 D:\Code\Project\tiff-4.0.9\build\libtiff\Release
如果有安裝Anaconda3可以跳過這步。
step2:編譯leptonica
cmake配置,勾選Grouped和Advanced,會顯示png和tiff等圖片庫的設置入口,要先將tiff的目錄配置進去,使得支持tiff格式
?如果沒有安裝Anaconda3情況下
Visual Studio 2019打開項目
編譯?
使用libtiff需要修改 libtiff目錄下的兩個頭文件,將tiffconf.vc.h和tif_config.vc.h改名為tiffconf.h和tif_config.h
得到兩個文件
- leptonica-1.76.0.lib,位置?D:\Code\Project\leptonica-1.76.0\build\src\Release
- leptonica-1.76.0.dll,位置?D:\Code\Project\leptonica-1.76.0\build\bin\Release
如果要支持png,需要下載編譯libpng和zlib源碼,并且在cmake-gui里面先設置zlib,再設置libpng
step3:編譯tesseract
根目錄的cmake配置文件在
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/.cppan)這句話之前加上
set(Leptonica_DIR D:/Code/Project/leptonica-1.76.0/build) include_directories(D:/Code/Project/leptonica-1.76.0/srcD:/Code/Project/leptonica-1.76.0/build4/src )目的是為了讓tesseract在cmake的config階段找到leptonica的頭文件和庫,當然,也可以在cmake-gui里面直接設置Leptonica_DIR
在configure的過程會出現如下日志,顯示正在下載ICU的依賴,等到其下載完成即可,注意打開科學上網,否則會因為網絡問題不成功
如果一直網絡超時,可以在?https://github.com/unicode-org/icu/releases?手動下載icu的開發包?icu4c-67_1-Win64-MSVC2017.zip,然后重命名為icu64.zip拷貝到編譯的對應目錄
然后修改源碼目錄的??tesseract-3.05.01\src\training\CMakeLists.txt,注釋以下行
# file(DOWNLOAD # "http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win${ARCH_DIR_NAME}-msvc10.zip" # "${icu_archive}" # SHOW_PROGRESS # INACTIVITY_TIMEOUT 60 # seconds # EXPECTED_HASH MD5=${icu_hash} # )# set(ICU_ROOT ${icu_dir}/icu)?
再重新configure完成
Visual Studio2019打開項目,進行編譯,一般情況下會出現一個字符編碼的報錯(最新版4.1.1已不報)
此時不用驚慌,只需要將tesseract中equationdetect.cpp文件修改一下,再編譯就好了
static const STRING kCharsToEx[] = {"'", "`", "\"", "\\", ",", ".", "〈", "〉", "《", "》", "」", "「", ""};改為
static const STRING kCharsToEx[] = { "'", "`", "\"", "\\", ",", ".", "<", ">", "<<", ">>", "" };如果報錯PACKAGE_VERSION找不到,可以手動在根目錄的CMakeLists.txt中添加宏
add_definitions(-DPACKAGE_VERSION="3.05.01" )編譯
順利編譯出tesseract項目的各種二進制工具exe,lib和dll
- tesseract305.lib,位置?D:/Code/Project/tesseract-3.05.01\build\Release
- tesseract305.dll,位置 D:/Code/Project/tesseract-3.05.01\build\bin\Release
- tesseract.exe,位置?D:/Code/Project/tesseract-3.05.01\build\bin\Release
簡單使用
拷貝文件
在\tesseract-3.05.01\build\bin\Release目錄下,從源碼目錄將tessdata拷貝進去,并且提前下載好已訓練語言包(https://github.com/tesseract-ocr/tessdata)
另外,將用到的tiff和liptonica以及要識別的圖片都拷貝進來
文本識別?
bmp格式原生支持
打開CMD
cd D:/Code/Project/tesseract-3.05.01/build/bin/Release tesseract 20180602231441791.bmp euro識別結果
euro.txt
The (quick) [brown] {fox} jumps! Over the $43,456.78 <lazy> #90 dog & duck/goose, as 12.5% of E-mail from aspammer@website.com is spam. Der ,,schnelle” braune Fuchs springt ?ber den faulen Hund. Le renard brun ?rapide? saute par-dessus le chien paresseux. La volpe marrone rapida salta sopra il cane pigro. El zorro marrén répido salta sobre el perro perezoso. A raposa marrom répida salta sobre 0 C50 preguicoso.官方的模型有些字符不是特別準確,需要訓練
參考文章
windows編譯和使用tesseract(C++ api)
cmake-gui使用教程
VS2017/VS2015編譯tesseract
總結
以上是生活随笔為你收集整理的Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cython——Windows环境下配置
- 下一篇: IntelliJ IDEA——连接Apa