Tesseract-OCR-05-主要API功能介紹

肖朋偉發表於2018-09-07

Tesseract-05-主要API功能介紹

  • tesseract本身程式碼是由c/c++混編而成的,其中有用的簡單的介面函式幾乎都是在baseapi.h中
  • 從其處理過程中,不難得出:
    • 它還需要有一個image處理的類,及相關的方法;
    • 這樣子,讀取圖片後,生成image物件,再獲取相關的引數;
    • 當然還需要有對image物件的讀取,版面分析等介面函式;
    • 再次,它還定義了很多自身的資料型別,比如:BITS16、array_record、BLOCK、IMAGE等;
    • 而且它具有自學的能力

現在,我們從頭有調理地簡單講述一下子:

(1)tesseract::TessBaseAPI,基礎的介面函式,包含了初始化,簡單的 處理圖片文字資訊,版面分析的結果體等。
(2)IMAGE,只是一個類,裡邊封裝了相關的圖片操作,包括圖片的 讀取,圖片引數資訊的獲取等。
(3)其他,包括資料型別宣告,相關結構體宣告,跨平臺處理,命令端引數提取等。
我們在實際中用到的就是前兩個裡邊的東西

宣告:以下函式皆是在 tesseract::TessBaseAPI 域下

1: SetImage

函式宣告:
void tesseract::TessBaseAPI::SetImage ( const unsigned char * imagedata,
int width,
int height,
int bytes_per_pixel,
int bytes_per_line
)
為Tesseract 提供待識別的圖片。

2:SetSourceResolution

函式宣告:
void tesseract::TessBaseAPI::SetSourceResolution(int ppi)
設定源影象的解析度(畫素每英尺),可以計算最終的字型大小資訊。 SetImage之後呼叫此函式。

3:SetRectangle

函式宣告:

void tesseract::TessBaseAPI::SetRectangle ( int left,
int top,
int width,
int height
)
將識別限制到影象的一個子矩形區域,SetImage 之後呼叫此函式。每一次該函式呼叫後將清除識別結果,以便同一張影象可以進行多矩形區域的識別。

4:SetThresholder

函式宣告:
void tesseract::TessBaseAPI::SetThresholder(ImageThresholder * thresholder)
在一些特殊的情況下, 通常是產生一個閾值器類的子類的時候,該函式可以提供一個不同的閾值器,閾值器可能會隨著圖片和設定預裝入,或者被隨後設定。Tesseract 擁有閾值器支配權,並在它被替換或是API被析構後刪除。

5:GetThresholdedImage

函式宣告:
Pix * tesseract::TessBaseAPI::GetThresholdedImage()
從Tesseract獲得內部閾值影象的拷貝,在SetImage 或者TesseractRect 之後可以隨時別呼叫。 注意,只有安裝了Leptonica之後才可使用。

6:GetRegions

函式宣告:
Boxa * tesseract::TessBaseAPI::GetRegions ( Pixa ** pixa )
以aleptonica-style Boxa, Pixa pair 格式獲得頁面結構分析的結果,在Recognize前後均可被呼叫。

7:GetTextlines

函式宣告:

Boxa * tesseract::TessBaseAPI::GetTextlines ( Pixa ** pixa,
int ** blockids
)
以aleptonica-style Boxa, Pixa pair 格式獲取文字行,在Recognize前後均可被呼叫。如果blockids(block數目) 是空的話,每行block- id返回每行一個元素的陣列,使用之後被刪除。

8:GetStrips

函式宣告:
Boxa * tesseract::TessBaseAPI::GetStrips ( Pixa ** pixa,
int ** blockids
)
以aleptonica-style Boxa, Pixa pair 格式獲取影象區域的文字行和條形區域,方便後面非矩形區域的處理。在Recognize前後均可被呼叫

9:GetWords

函式宣告:
Boxa * tesseract::TessBaseAPI::GetWords(Pixa ** pixa)
以aleptonica-style Boxa, Pixa pair 格式獲取影象區域的文字,在Recognize前後均可被呼叫。

10:GetConnectedComponents

函式宣告:
Boxa * tesseract::TessBaseAPI::GetConnectedComponents ( Pixa ** pixa )
在頁面分析之後識別之間,以aleptonica-style Boxa, Pixa pair 格式獲得獨立連通的文字區域,在Recognize前後均可被呼叫。

11:GetComponentImages

函式宣告:
Boxa * tesseract::TessBaseAPI::GetComponentImages ( PageIteratorLevel
level,
bool text_only,
Pixa ** pixa,
int ** blockids
)
以aleptonica-style Boxa, Pixa pair 格式獲得制定級別的元素(block,textline, word),在Recognize前後均可被呼叫。果blockids(block數目) 是空的話,每行block- id返回每行一個元素的陣列,使用之後被刪除。如果text_only 為真, 只有text可被返回。

12:GetThresholdedImageScaleFactor

函式宣告:
int tesseract::TessBaseAPI::GetThresholdedImageScaleFactor()const
返回閾值影象的比例係數,該閾值影象由yGetThresholdedImage() 和呼叫了GetComponentImages()的GetX()函式返回。

13:DumpPGM

函式宣告:
void tesseract::TessBaseAPI::DumpPGM ( const char * filename )
將內部二值影象放到PGM檔案中。

14:AnalyseLayout

函式宣告:
PageIterator * tesseract::TessBaseAPI::AnalyseLayout()
以SetPageSegMode設定的模式進行頁面結構分析,返回一個(iterator),錯誤返回為空。Iterator 使用後必須刪除。注意:該函式指向TessBaseAPI 類內部的資料,因此必須在TessBaseAPI 存在的情況下才可被呼叫。不能被改變內部PAGE_RES的 Init, SetImage, Recognize, Clear, End DetectOS或者其他呼叫。

15:Recognize

函式宣告:
int tesseract::TessBaseAPI::Recognize(ETEXT_DESC * monitor)
識別 來自SetAndThresholdImage的影象, 產生Tesseract 內部結構資料,成功返回0,如果需要,下面的Get*Tex函式會呼叫它。識別完成後,在SetImage之前,輸出都會保持在內部。

16:RecognizeForChopTest

函式宣告:
int tesseract::TessBaseAPI::RecognizeForChopTest(ETEXT_DESC * monitor)
檢索來自SetAndThresholdImage(), Recognize() or TesseractRect()的資訊(在需要的情況下隱式呼叫Recognize)。對Recognize 變化一測試chopper.

17:ProcessPages

函式宣告:

bool tesseract::TessBaseAPI::ProcessPages ( const char * filename,
const char * retry_config,
int timeout_millisec,
STRING *
text_out
)
識別指定檔案的所有頁面,檔案格式為(a multi-page tiff or list of filenames, or single image), 並且根據引數(tessedit_create_boxfile, tessedit_make_boxes_from_boxes, tessedit_write_unlv, tessedit_create_hocr.)得到合適的文字。在輸入檔案的每一頁執行ProcessPage,輸入檔案可以是(a multi-page tiff, single-page other file format, or a plain text list of images to read),返回值放在text_out中。如果tessedit_page_number 非負,程式將會在其所代表那一頁開始。執行錯誤返回false. 如果程式暫停在某一頁timeout_millisec (非負) 時間終止程式,或者由於某些原因一些頁面處理失敗,該頁面將會以retry_config 的配置檔案重新處理。

18:ProcessPage

函式宣告:

bool tesseract::TessBaseAPI::ProcessPage ( Pix * pix,
int page_index,
const char * filename,
const char * retry_config,
int timeout_millisec,
STRING *
text_out
)
為 ProcessPages進行單頁面識別。Text放到text_out中, pix是檔名,page_index是邊緣處理後的後設資料,比如box檔案,或者hOCR格式檔案。

19:GetIterator

函式宣告:
ResultIterator * tesseract::TessBaseAPI::GetIterator()
為 LayoutAnalysis and/or Recognize執行結果獲取讀取順序的迭代器(iterator),使用之後刪除。

20:GetMutableIterator

函式宣告:
MutableIterator * tesseract::TessBaseAPI::GetMutableIterator()
為 LayoutAnalysis and/or Recognize執行結果獲取可變的迭代器(iterator),使用之後刪除。

21:GetUTF8Text

函式宣告:
char * tesseract::TessBaseAPI::GetUTF8Text()
識別的文字被返回為字元指標,以UTF8編碼(must be freed with the delete [] operator)。從內部資料結構中獲得文字字串。

更多文章連結:Tesseract 隨筆



    • 本筆記不允許任何個人和組織轉載

相關文章