2011-11-13 9 views
9

Tesseract 3 jest w stanie przeprowadzić analizę układu strony. Jednak nie mogłem znaleźć żadnego przykładowego kodu ani dokumentacji, jak korzystać z biblioteki do takich celów. Mam nadzieję, że ktoś tutaj może wyjaśnić, jak przeprowadzić analizę układu na obrazie i jak przeanalizować uzyskane dane.Analiza układu strony za pomocą Tesseract?

Odpowiedz

8

Tesserakt można podawać parametr trybu strony (-psm), który może przyjmować następujące wartości:

  • 0 = Orientacja i wykrywanie Script (OSD) tylko.
  • 1 = Automatyczna segmentacja stron z OSD.
  • 2 = automatyczna segmentacja strona, ale nie OSD lub OCR
  • 3 = Całkowicie automatyczna segmentacja strona, ale nie OSD. (Domyślnie)
  • 4 = Przyjmij pojedynczą kolumnę tekstu o różnych rozmiarach.
  • 5 = Przyjmij pojedynczy jednolity blok tekstu wyrównanego pionowo.
  • 6 = Załóż jeden jednolity blok tekstu.
  • 7 = Traktuj obraz jako pojedynczą linię tekstu.
  • 8 = Traktuj obraz jako pojedyncze słowo.
  • 9 = Traktuj obraz jako jedno słowo w kółku.
  • 10 = Traktuj obraz jako pojedynczą postać.

Przykład:

tesseract image.tif image.txt -l eng -psm 0 

Jednak nie jestem pewien, że można korzystać z analizy układu w trybie autonomicznym.

+0

Pytanie dotyczy "sposobu korzystania z biblioteki", a nie samodzielnego pliku wykonywalnego. –

5

Najpierw zainicjalizuj instancję TessBaseAPI. Możesz użyć Init() (jeśli chcesz wykonać dalsze rozpoznawanie tekstu) lub InitForAnalysePage() (jeśli jesteś zainteresowany tylko w polach tekstowych).

Po drugie, ustaw obraz za pomocą SetImage().

Na koniec zadzwoń pod numer AnalyseLayout(), aby uzyskać PageIterator, która zawiera pola tekstowe.

tesseract::TessBaseAPI tessApi; 
tessApi.InitForAnalysePage(); 

// tessApi.SetImage(...); 

tesseract::PageIterator *iter = tessApi.AnalyseLayout(); 

// Instead of RIL_WORD you can use any other PageSegMode 
while (iter->Next(tesseract::RIL_WORD)) { 
    int left, top, right, bottom; 

    iter->BoundingBox(
      tesseract::RIL_WORD, 
      &left, &top, &right, &bottom 
    ); 
}