How to build tesseract 3.03 with Visual Studio 2013
by Paul Vorbach 2014-04-10
【最新tesseract4.0的vs2015、ubuntu安裝已更新在博客裏,歡迎點擊!】
注:此爲方法一。
根據Paul Vorbach寫於 http://vorba.ch/2014/tesseract-3.03-vs2013.html 。
後面有很多網友的疑問+解答,但是直接打開看不到,故整理,同時再增添我實際操作的問題。
由於tesseract一直在更新,所以有些問題可能就被較新版本解決掉了。
P:Paul的有用的回答。
G:一些有用的回覆。
M:我的建議。我在64/32位系統上都遇到過問題,因而截圖中的路徑可能不一樣。
當然,最重要的是你代碼複製對了沒?(svn那一行很容易錯)
0.前期工作
可能的解決方案:
M:git安裝的時候,選擇command。(看別人建議的)
M:我建議TortoiseSVN。因爲可視化操作比較簡單。只是安裝的時候需要選中command line選項。
(原本第二個command line client tootls是個叉號,點擊選第一個選項,就變成如下所示)
M:選擇paul推薦的svn軟件也可以。只是安裝的時候,選擇complete較好。如果報錯”不是內部的也不是外部的“,試試在path加路徑”;C:\...\...bin“
M:vs2013普遍是32的程序。但64位系統是可以用32的程序。安裝路徑儘量選別的盤,因爲佔內存挺多的。
我選了vs 2013 community update5,這是免費版本。
安裝依賴關係:
集中於第六步"msbuild build.proj"出錯。
可能的解決方案:
G:升級到vs2013update4就可以了(注:vs2013更新到update5,選5就好了)
M:第2步可以使用cmd,或者git(如下兩圖可選,這裏有改變路徑)。
M:第4步如下圖找。
M:第6步,我有378個警告,0個錯誤。
具體錯誤:
Error1error C2275: 'l_int32' : illegal use of this type as an expressionC:\tesseract-build\tesseract-vs2013\liblept\src\boxfunc1.c901liblept-171
Error2error C2146: syntax error : missing ';' before identifier 'x1'C:\tesseract-build\tesseract-vs2013\liblept\src\boxfunc1.c901liblept-171
G:可能是vs設置的問題,將變量改爲int.不僅修改定義的位置,需要檢查vs2013報錯的地方。
G:將"l_int32"變爲 "int",在這些文件"liblept\src\boxfunc1.c"&"liblept\src\utils.c"下修改。
http://stackoverflow.com/questions/9903582/error-c2275-illegal-use-of-this-type-as-an-expression
"tesseract-vs2013\build\obj\Win32\Release\zlib-128\infback.obj: fatal error LNK1136: invalid or corrupt file"
G:刪除文件"tesseract-vs2013/build/obj/Win32/Release/zlib-128/infback.obj"(0字節)以及libjpeg-8c下的0字節文件。
建立tesseract工程
集中於第2、4步。(第7步錯的往下拉見第三部分)
可能的解決方案:
M:第1-2步可以有不同的方式。第二句是將下載的東西放在tesseract-ocr(所以前面有個空格!)
選定git bash或用TortoiseSVN(右擊Tesseract-Build 選擇checkout ,輸入網址+路徑如下即可。)
具體錯誤:
svn: E175002: Unable to connect to a repository at URL 'http://tesseract-ocr.googlecode.com/svn/trunk'
svn: E175002: OPTIONS request on '/svn/trunk' failed: 408 Request Time-out
或
svn: E170013: Unable to connect to a repository at URL 'http://tesseract-ocr.googlecode.com/svn/trunk'
svn: E120112: 執行上下文錯誤:APR dose not understand this error codeG:這一步要*翻*牆*,否則下載不下來。但是,是給SVN設置*翻*牆*。(注:如使用TortoiseSVN,右擊文件,選擇”TortoiseSVN“,選擇setting, 進行如下改變(address
+port)推薦*s**h**a**d**o**w**s**o**c**k**s*,100元1年很不錯)
第四步打補丁失敗"not a working directory":
G:很可能是svn checkout http://tesseract-ocr.googlecod... tesseract-ocr這一步出錯。
編譯sln文件
可能的解決方案:
G:進入 "...\Tesseract-Build\tesseract-vs2013" 文件夾,用VS2013打開 tesseract.sln. 右擊 "libept-171" 工程的” Solution Explorer window“(解決方案瀏覽器窗口), 點擊屬性. 將配置改爲 "All Configurations"(所有配置,左上角) , 將平臺改爲 "All Platforms" (所有平臺,右上角)。 進入 "C/C++ -> Advanced" 選項,將"Compile As" 選項改爲 "Compile as C++ Code (/TP)". 點擊OK.
M:按ctrl+f5會跳出窗口,按enter確認。如果按F7,不會跳出窗口。這兩個都會顯示成功(如下圖)。建議把tesseract右擊設爲啓動項目。
具體問題:
Libs\tesserect\tesseract-vs2013\liblept\leptonica.vcxproj] src\boxfunc1.c(90): error C2065: 'w1' : undeclared identifier [E:\QtProject\ Libs\tesserect\tesseract-vs2013\liblept\leptonica.vcxproj]
G:用上述可能的解決方案。
error LNK1104: cannot open file'liblept170d.lib'(或liblept171d.lib)
P: 檢查一下"C:\Tesseract-Build\lib\x64" and"C:\Tesseract-Build\lib\Win32"有沒有"liblept170d.lib" 。如果沒有,重新操作"Building Tesseract"的第五步。
G: 將"DLL_Debug"改變成"DLL_Release"
G: DLL_Debug 條件下, "Link/General"-》"Additional Library Directories" ,將"..\..\..\lib" 改爲"..\..\..\lib\$(Platform)" instead.DDL_Release條件下,不需改動.This program can't be start because liblept170.dll is missing from your computer. try reinstalling the program to fix this problem.(或liblept171d.lib)
G:把 C:\build folder\lib下的liblept170.dll複製到exe所在文件夾下
error C2146: syntax error : missing ';' before identifier '縲・'static const STRING kCharsToEx[] = { "'", "`", "\"", "\", ",", ".","〈", "〉", "《", "》", "」", "「", ""};
error C2146: 語法錯誤: 缺少“}”(在標識符“銆”的前面)法1:選中全文,File => Advanced Save Options => Encoding ,選擇 “Chinese Simplified (GB2312) - Codepage 936”
法2:(1) 打開equationdetect.cpp(比如說notepad++), 將encoding轉爲ansi.,然後再轉爲utf-8
(2) 你會發現這些字符 "〈", "〉", "《", "》", "」", "「" ,被一些奇詭的字符所替換了。 複製這些 ""〈", "〉", "《", "》", "」", "「", " 去替換這些奇怪的字符。(utf-8編碼導致的)
完成了教程之後的測試1:利用生成的exe去識別。
可能的解決方案:
M:雙擊exe都會閃退。所以,使用exe需要用cmd命令行等。
M:測試時,複製圖片和tessdata文件(...\Tesseract-Build\tesseract-vs2013\tessdata)到該目錄(E:\tesseract20160324\Tesseract-Build\tesseract-ocr\vs2013\bin\x64\DLL_Release,也可以是LIB_Release)下,,如圖輸入命令即可。
M:tessdata拷貝到exe的所在目錄是比較快捷的方式,比較好的方法是在path設置TESSDATA_PREFIX環境變量(具體請百度)
具體問題:
輸入tresseract input.tif output pdf,期待輸出pdf文件,但並沒有。
P: r1114版本可以運行。 試一試tesseract -v? 你有語言包+ %TESSDATA_PREFIX%\tessdata正確的設置路徑嗎? (注:\tessdata下面放中文包、英文包等等,使用識別的時候比如參數”-l en“)
P:建議使用ImageMagick。
Paul是否依靠這個教程生成訓練工具?
P:使用了linux虛擬機來訓練。爲了在Windows/Visual Studio 2013 訓練文件,需要將vs2008的所有工程設置轉化爲 Visual Studio 2013.
tesseract is not recognized as an external and internal command
試過這樣的方法嗎?(注:大概是環境變量的問題,,所以一般是要盡到exe的文件夾下去執行exe或者如下使用全部路徑)
C:\Tesseract-Build\tesseract-ocr\vs2013\bin\Win32\DLL_Debug\tesseract-dll input.png out -l eng
這樣編譯好的exe是否可以直接複製,對方也不需要編譯而是直接用了?
P:可以,32位對應32位,64位對應64位
the compiled executable on their computer (注:之前我到svn那一步失敗了,直接複製了別人編譯好的tesseract-ocr文件夾,打開sln即可使用)
完成了教程之後的測試2:建立項目。調用tesseractde的api函數。
可能的解決方案
G:配置tesseract的項目
Release | Win32
VC++ Directories ===》 Library Directories
+ C:\Tesseract-Build\lib
+ C:\Tesseract-Build\lib\Win32
C/C++ ===》General ===》Additional Include Directories
+ C:\Tesseract-Build\include
+C:\Tesseract-Build\include\leptonica
Linker ===》General ====》Additional Library Dependencies
+ C:\Tesseract-Build\lib
+ C:\Tesseract-Build\lib\Win32
Linker ==》Input--》Additional Dependencies
+libtesseract303.lib
+liblept170.lib
具體問題:
調用api,使用了#include <tesseract\baseapi.h>報錯:
P:沒有tesseract文件夾,改爲#include "baseapi.h"
在某個工程中如何使用tesseract和opencv?
P: 你可能需要建立the DLL_Release解決方案。之後你在OpenCV工程中引用Leptonica的allheaders.h等頭文件,複製tesseract解決方案的設置。(注:Paul也不是很清楚,具體解決自行百度)
其他
關於finger print recognition
P:建議使用opencv。tesseract無法幫助。
心得總結:
隨着paul的教程,我安裝了兩次。第一次到svn 失敗了,然後我直接copy了別人編譯過的tesseract-ocr,可以用。第二次,到svn失敗,因爲是做全文翻譯,所以要順着作者的順序跑一遍,纔敢心安理得地翻譯。可能因爲我的系統是盜版的,報錯“svn不是內部也不是外部”,我重複安裝、卸載svn的軟件,最後纔沒有報錯。當然,svn還是不行。本來想放棄了,但是看到一篇blog是16年2月的,可以實現。所以,就猜測我只是瀏覽器可以翻過去,但是svn沒有設置好。果然,順利解決。編譯成功之後,我雙擊exe一直不行閃退,後來想到第一次好像也不行(如果有誰知道爲什麼不行,麻煩告訴我一下,謝謝!)。但是生成的exe可以用cmd調用。ok,3天的成果,順利解決。
關於git、vs2013、svn本想各自單獨做教程,想到不能直接粘貼,就附在本文裏面了,好吧,實在是寫的太累了。還有些推薦的鏈接。要是他們當年早點寫,我第一次就不用研究了一整週了。都寫得非常好!
Good Luck!
有用的鏈接請看:
git
http://blog.csdn.net/renfufei/article/details/41647875
svn
http://blog.csdn.net/mitea90/article/details/19075673
vs2013:
community版本:
記錄Vs2013中文語言包安裝卡住進度條不動的問題
http://shiyousan.com/post/635760212471110341
Visual Studio Community 2013英文版安裝中文語言包步驟
http://shiyousan.com/post/635525476136492970
Visual Studio Community 2013中文語言包安裝問題?
https://www.zhihu.com/question/26638414(甘明的回答+評論)
卸載和修復Visual Studio 2013中文語言包
http://blog.csdn.net/risingwonderland/article/details/45584877
ultimate版本:
VS2013安裝詳細步驟
http://tieba.baidu.com/p/2835036681
Visual Studio 2013 詳細安裝教程(安裝+註冊)
http://jingyan.baidu.com/article/09ea3ede3b2496c0afde3944.html
Pro版本
取得並安裝 VISUAL STUDIO 2013內附圖文教學!
http://www.sukitech.com/296/%E5%8F%96%E5%BE%97%E4%B8%A6%E5%AE%89%E8%A3%9D-visual-studio-2013-%E5%85%A7%E9%99%84%E5%9C%96%E6%96%87%E6%95%99%E5%AD%B8/
vs使用技巧
http://www.cnblogs.com/xfuture/p/3698528.html
類似paul版本的安裝過程:
Tesseract 3.04 + VS2013 配置心得(包含靜態庫版本和Release版本)(有本文未收集到的一些錯誤解決方案)
http://blog.csdn.net/fengkewei/article/details/40977511
Visual Studio 2013編譯Tesseract3.04(可參考!但是我按照作者的後續步驟,打開vs2010沒法正常使用,會報錯lib文件缺失,但是放到目錄下也不行。可能是放的頭文件不全)
http://yanghespace.com/2015/09/25/Visual%20Studio%202013%E7%BC%96%E8%AF%91Tesseract%203.04/
VS2013上編譯並使用Tesseract3.0.3.中文識別技術(非常詳細!)
http://blog.csdn.net/yongshi6/article/details/50616889
韓國版:
http://blog.naver.com/PostView.nhn?blogId=killkimno&logNo=220062688967
http://ngjeon.tistory.com/archive/20140513
有錯請指出,謝謝!
歡迎加Tesseract OCR 討論羣 389402579