基於OpenVINO的端到端DL網絡-Tesseract5+VS2017+win10源碼編譯攻略


一,記錄我目前在win10 X64和VS2017的環境下成功編譯Tesseract5.0的方式;

二,記錄在VS2017 C++工程中調用Tesseract4.0的方法;

三,記錄編譯和調用Tesseract4.0過程中踩到的坑和相應的解決方案或看法。

最終結果:

 

識別為:

=======================================================================================================================

一、資料准備

 

下載最新的CPPAN版本。解壓縮后,將cppan.exe所在的路徑添加到系統變量中; 

 

CPPAN是跨平台的C / C++ 依賴管理器。它建立在 CMake 的基礎之上,並具有構建系統的能力。CPPAN 支持快速的腳本式編碼和原型制作,以及處理大型項目。查找,共享和重用庫,發布您的項目。把時間花在你的代碼上,而不是管理依賴關系。CPPAN為您降低包時間到幾秒鍾!它支持簡單的交叉編譯,繼承和推送你自己的設置,標志到每個依賴。

 

鏈接為 https://cppan.org/client/

    編譯過程中相應的支持庫是由cppan下載的,我們需要下載cppan並設置其環境變量

   解壓后 在系統變量里面選擇PATH變量,將cppan.exe所在的文件路徑作為環境變量的值  ,或者也可以將cppan.exe放置在path包含的目錄下

下載cmakehttps://cmake.org/download/,本文用的是cmake-3.10.1-win64-x64,將cmake.exe所在的路徑添加到系統變量中

   為cmake設置環境變量,解壓后目錄下的bin文件夾的目錄地址加載至系統環境變量PATH中,

   與cppan設置環境變量的方法一致。  

下載Tesseract源碼https://github.com/tesseract-ocr/tesseract,,最新版已經到5.0

解壓后放英文目錄

***************************************************************************************************************

 二、tesseract編譯

1.cmd,以 管理員身份進入命令行終端

2.運行cppan

   進入 解壓后的Tesseract文件夾,可以發現有個cppan.yml,

   直接敲入命令:cppan   (如果出現 “no spec file”,就是目錄不對,沒有找到cppan.yml)

   下載相關依賴

 

3.cmake編譯

 

 

 

 
 

 

 

  使用GUI進行2次configure,1次generate,一路回車即可。

  

4  生成tesseract.sln,打開並編譯。

進入項目,一般選擇Install和all_build進行批生成最為穩妥,在我們這個項目中,生成install是足夠

編譯的過程中,可能出現這樣的錯誤

 

出現這個錯誤的原因是因為字符集不相符,首先參考

https://jingyan.baidu.com/article/9faa7231df5453473c28cbd9.html ,為vs2017恢復“高級保存”

而后,一次打開出現問題的文件,使用“高級保存選項”將字符進行轉碼為GB碼。

需要轉碼的文件主要集中在glib模塊

 

 

5、最終在c盤下會出現tesseract目錄,並得到這樣結果:

三、在VS2017 C++工程中調用Tesseract4.0

1. 找到所有依賴lib文件並整理

編譯tesseract.sln並安裝之后,在C:/Program Files/tesseract/lib路徑下僅有tesseract500.lib和tesseract500d.lib,但在工程中調用Tesseract4.0時,僅有這兩個文件是不夠的,為了方便調用,我們要找到其他的lib文件,它們在這里:C:\Users\username\.cppan\storage\lib,包含重要的pvt.cppan.demo.danbloomberg.leptonica-1.76.0.lib。

需要按照規則添加進去。

2.找到所有依賴dll文件並整理

在C:/Program Files/tesseract/bin路徑下僅有tesseract500.dll和tesseract500d.dll,

其他的dll文件在 C:\Program Files\tesseract\bin 下,全部添加到PATH中

3. 找到leptonica所需要的頭文件並整理

有兩個頭文件是編譯的時候需要的,這里也必須添加到include中去

如果你不添加,會自動報錯,也能夠幫助你找到這兩個目錄。

4. 新建VS2017 C++工程,下載https://github.com/cppan/tesseract_example/blob/master/with_cppan/main.cpp並添加到該工程中。

4.1 項目屬性—>配置屬性–>C/C++–>常規,在“附加包含目錄”中添加:

4.2 項目屬性–>鏈接器–>常規,在”附加庫目錄”中添加

4.3 項目屬性–>鏈接器–>輸入,在“附加依賴項”中添加

4.4 在工程目錄下新建文件夾tessdata,到tesseract下載相應的語言文件,copy到tessdata文件目錄下。

 

5. 完成上述動作后,編譯代碼

# include  "pch.h"
# include  <iostream >
# include  <memory >
# include  <allheaders.h >  // leptonica main header for image io
# include  <baseapi.h >  // tesseract main header
int main( int argc,  char  *argv[])
{
     if (argc  ==  1)
         return  1;
    tesseract : :TessBaseAPI tess;
     if (tess.Init( "E:/OpenCV_DNN數據集/tessdata""eng"))
    {
        std : :cout  <<  "OCRTesseract: Could not initialize tesseract."  << std : :endl;
         return  1;
    }
     // setup
    tess.SetPageSegMode(tesseract : :PageSegMode : :PSM_AUTO);
    tess.SetVariable( "save_best_choices""T");
     // read image
     auto pixs  = pixRead(argv[ 1]);
     if ( !pixs)
    {
        std : :cout  <<  "Cannot open input file: "  << argv[ 1<< std : :endl;
         return  1;
    }
     // recognize
    tess.SetImage(pixs);
    tess.Recognize( 0);
     // get result and delete[] returned char* string
    std : :cout  << std : :unique_ptr < char[] >(tess.GetUTF8Text()).get()  << std : :endl;
     // cleanup
    tess.Clear();
    pixDestroy( &pixs);
     return  0;
}
 實現題圖結果。





附件列表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM