diff --git a/api/baseapi.cpp b/api/baseapi.cpp index 375401af39..6a7d848788 100644 --- a/api/baseapi.cpp +++ b/api/baseapi.cpp @@ -984,6 +984,7 @@ bool TessBaseAPI::ProcessPagesMultipageTiff(const l_uint8 *data, OpenclDevice od; #endif // USE_OPENCL int page = (tessedit_page_number >= 0) ? tessedit_page_number : 0; + size_t offset = 0; for (; ; ++page) { if (tessedit_page_number >= 0) page = tessedit_page_number; @@ -995,8 +996,8 @@ bool TessBaseAPI::ProcessPagesMultipageTiff(const l_uint8 *data, } else { #endif // USE_OPENCL pix = (data) ? - pixReadMemTiff(data, size, page) : - pixReadTiff(filename, page); + pixReadMemFromMultipageTiff(data, size, &offset) : + pixReadFromMultipageTiff(filename, &offset); #ifdef USE_OPENCL } #endif // USE_OPENCL @@ -1010,6 +1011,7 @@ bool TessBaseAPI::ProcessPagesMultipageTiff(const l_uint8 *data, pixDestroy(&pix); if (!r) return false; if (tessedit_page_number >= 0) break; + if (!offset) break; } return true; #else diff --git a/classify/mastertrainer.cpp b/classify/mastertrainer.cpp index cd7e93b9f2..849fb06010 100644 --- a/classify/mastertrainer.cpp +++ b/classify/mastertrainer.cpp @@ -214,10 +214,14 @@ void MasterTrainer::AddSample(bool verification, const char* unichar, // Must be called after ReadTrainingSamples, as the current number of images // is used as an offset for page numbers in the samples. void MasterTrainer::LoadPageImages(const char* filename) { + size_t offset = 0; int page; Pix* pix; - for (page = 0; (pix = pixReadTiff(filename, page)) != NULL; ++page) { + for (page = 0; ; page++) { + pix = pixReadFromMultipageTiff(filename, &offset); + if (!pix) break; page_images_.push_back(pix); + if (!offset) break; } tprintf("Loaded %d page images from %s\n", page, filename); }