Skip to content

Commit

Permalink
Multi-page TIFF buffering is broken - fix #233
Browse files Browse the repository at this point in the history
  • Loading branch information
zdenop committed Dec 24, 2016
1 parent 38cb4ac commit 11f2057
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
6 changes: 4 additions & 2 deletions api/baseapi.cpp
Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -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
Expand Down
6 changes: 5 additions & 1 deletion classify/mastertrainer.cpp
Expand Up @@ -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);
}
Expand Down

0 comments on commit 11f2057

Please sign in to comment.