tesseract3.03:vs2013 + x64 / x86 +win7 + 《How to build tesseract 3.03 with Visual Studio 2013》

                       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 code

G:這一步要*翻*牆*,否則下載不下來。但是,是給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


發佈了30 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章