Route 0 - Overall path
main[api/tesseractmain.cpp] ->
TessBaseAPI::ProcessPages[api/baseapi.cpp] ->
TessBaseAPI::ProcessPage[api/baseapi.cpp] ->
{
TessBaseAPI::Recognize [api/baseapi.cpp] ->
{
TessBaseAPI::FindLines [api/baseapi.cpp] ->
Tesseract::SegmentPage [ccmain/pagesegmain.cpp] ->
Tesseract::AutoPageSeg [ccmain/ pagesegmain.cpp]
...
}
TessResultRenderer::AddImage [api/renderer.cpp] --->
TessTextRenderer::AddImageHandler [api/renderer.cpp] --->
TessBaseAPI::GetUTF8Text [api/baseapi.cpp] ->
TessBaseAPI::Recognize [api/baseapi.cpp] ->
{
TessBaseAPI::FindLines [api/baseapi.cpp] ->
Tesseract::SegmentPage [ccmain/pagesegmain.cpp] ->
Tesseract::AutoPageSeg [ccmain/ pagesegmain.cpp]
..
}
}
Recognize(NULL) can be called by:
- TessBoxTextRenderer::AddImageHandler –>TessBaseAPI::GetBoxText()
- TessHOcrRenderer::AddImageHandler –> TessBaseAPI::GetHOCRText()
- TessTextRenderer::AddImageHandler —> TessBaseAPI::GetUTF8Text()
- TessUnlvRenderer::AddImageHandler —> TessBaseAPI::GetUNLVText()
- TessBaseAPI::MeanTextConf() —> TessBaseAPI::AllWordConfidences()
Route 1 - Read image and setup internal structure (PIX)
main[api/tesseractmain.cpp] ->
TessBaseAPI::ProcessPages[api/baseapi.cpp] ->
TessBaseAPI::ProcessPagesInternal[api/baseapi.cpp] ->
(i) **For TIFF**
{
TessBaseAPI::ProcessPagesMultipageTiff[api/baseapi.cpp] ->
}
(ii) **For non TIFF**
pixReadMem[liblept/src/readfile.c]
(This is a variation of pixReadStream(), where the data is read from a memory buffer rather than a file.)
(IFF_BMP, IFF_JFIF_JPEG, IFF_PNG, IFF_TIFF[#####], IFF_PNM, IFF_GIF, IFF_JP2, IFF_WEBP, IFF_SPIX, IFF_UNKNOWN)
->
pixReadMemPng [liblept/src/pngio.c]->
pixReadStreamPng [liblept/src/pngio.c]->
TessBaseAPI::ProcessPage[api/baseapi.cpp] ->
SetInputName[api/baseapi.cpp]
SetImage[api/baseapi.cpp]->
TessBaseAPI::InternalSetImage[api/baseapi.cpp]->
ImageThresholder::SetImage[ccmain/thresholder.cpp]
TessBaseAPI::Recognize [api/baseapi.cpp] ->
TessBaseAPI::FindLines [api/baseapi.cpp] ->
....
Comments from liblept/src/pngio.c
spp == 2 (gray + alpha), spp == 3 (rgb), spp == 4 (rgba)
grayscale + alpha; convert to RGBA
do not support 2 spp PIX
Any image with alpha is converted to RGBA (spp = 4, with equal red, green and blue channels) on reading.
There are three important cases with alpha:
- (a) grayscale-with-alpha (spp = 2), where bpp = 8, and each pixel has an associated alpha (transparency) value in the second component of the