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


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 隨筆


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


免責聲明!

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



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