Analiza układu strony za pomocą Tesseract?
Tesseract 3 jest w stanie wykonać 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 parsować dane wynikowe.
4 answers
Tesseract może otrzymać parametr page mode (-psm
), który może mieć następujące wartości:
-
0
= tylko Orientacja i wykrywanie skryptów (OSD). -
1
= Automatyczna segmentacja stron za pomocą OSD. -
2
= Automatyczna segmentacja stron, ale bez OSD, lub OCR -
3
= W Pełni Automatyczna segmentacja stron, ale bez OSD. (Domyślnie) -
4
= zakładaj pojedynczą kolumnę tekstu o zmiennych rozmiarach. -
5
= zakładać pojedynczy Mundur blok tekstu wyrównanego pionowo. -
6
= zakładaj pojedynczy jednolity blok tekstu. -
7
= traktuj obraz jako pojedynczą linię tekstu. -
8
= traktuj obraz jako pojedyncze słowo. -
9
= traktuj obraz jako pojedyncze słowo w okręgu. -
10
= traktuj obraz jako pojedynczy znak.
Przykład:
tesseract image.tif image.txt -l eng -psm 0
Nie jestem jednak pewien, czy możliwe jest wykorzystanie analizy układu w trybie samodzielnym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-16 08:59:38
Najpierw zainicjalizuj instancję TessBaseAPI
. Możesz użyć Init()
(jeśli chcesz wykonać dalsze rozpoznawanie tekstu) lub InitForAnalysePage()
(jeśli interesują Cię tylko pola tekstowe).
Po Drugie, Ustaw obraz za pomocą SetImage()
.
I na koniec zadzwoń AnalyseLayout()
, aby uzyskać PageIterator
, który zapewnia 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
);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-15 12:08:46
Istnieje opcja od 3.04:
tesseract -c preserve_interword_spaces=1 test.tif test
Oto odniesienie do tego, co wygląda jak powiązany wątek programistyczny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-30 02:22:58
Nie jestem pewien, czy to dokładnie odpowiada na twoje pytanie, ale wylądowałem tutaj, szukając sposobów, aby uzyskać informacje o współrzędnych Bbox(i tekst rozpoznany wewnątrz Bbox opcjonalnie) biorąc pod uwagę obraz wejściowy. Rozwiązanie, które jest teraz możliwe przy użyciu tesseract.
$> tesseract test.tiff test.txt -l eng -psm 1 tsv
Param, które należy zauważyć w powyższym fragmencie kodu, to ' psm ' I 'tsv'. "psm" wybiera tryb segmentacji stron, a " tsv " generuje ładny tabelaryczny plik wyjściowy ze wszystkimi informacjami (numer bloku strony, kody Bbox, pewność siebie, przewidywany tekst), którego potrzebujesz na swoim obrazku tekstowym (pokazanym poniżej)
level page_num block_num par_num line_num word_num left top width height conf text
1 1 0 0 0 0 0 0 5500 4250 -1
2 1 1 0 0 0 327 285 2218 53 -1
3 1 1 1 0 0 327 285 2218 53 -1
4 1 1 1 1 0 327 285 2218 53 -1
5 1 1 1 1 1 327 285 246 38 87 INFOPAC
5 1 1 1 1 2 620 287 165 38 87 PAGE
5 1 1 1 1 3 952 290 100 37 95 NAME
5 1 1 1 1 4 1173 292 1082 45 39 ENTRYDATE
5 1 1 1 1 5 2333 302 212 36 48 EMAIL
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-20 07:36:02