Check for correct scanline order in your constructed image. Tesseract uses bottom-left origin coordinate system as opposed to the one used in image bitmaps (top-left origin).
Warm regards, Dmitri Silaev www.CustomOCR.com On Thu, Apr 14, 2011 at 11:05 PM, zl2k <[email protected]> wrote: > I now code the image as raw binary image and the error disappear. > However, the output is totally wrong. Strangely, if I directly call > "tesseract image.tif result -l eng" from command line, the result is > correct. > Here is my few lines of code: > > tesseract::TessBaseAPI api; > api.Init(NULL, "eng"); > //construct raw image > api.SetImage(raw_image, raw_image_width, raw_image_height, 0, > char_per_line); > char* result = api.GetUTF8Text(); > > Any comments? > > On Apr 14, 9:46 am, zl2k <[email protected]> wrote: >> I noticed it is in TessBaseAPI::Recognize >> >> int TessBaseAPI::Recognize(struct ETEXT_STRUCT* monitor) { >> //... >> if (thresholder_ == NULL || thresholder_->IsEmpty()) { >> tprintf("Please call SetImage before attempting recognition."); >> return -1; >> } >> //... >> >> } >> >> My input image is coded binary, single char, how may I fix the >> thresholder problem? Thanks for help. >> >> zl2k >> >> On Apr 14, 9:20 am, zl2k <[email protected]> wrote: >> >> >> >> >> >> >> >> > I block the Recognize but still get the same error. Other comments? >> >> > On Apr 14, 5:23 am, Leonardo Gomes <[email protected]> wrote: >> >> > > I'm a newbie with Tesseract, but I know that api.GetUTF8Text() calls >> > > Recognize for you. Try removing the call to Recognize to see what >> > > happens. >> >> > > Cheers, >> > > Leo. >> >> > > On Thu, Apr 14, 2011 at 7:58 AM, zl2k <[email protected]> wrote: >> > > > hi, all >> >> > > > I have composed a Pix image and here are the 4 lines of code to >> > > > recognize the input image (I am using tesseract 3.00) >> >> > > > tesseract::TessBaseAPI api; >> > > > // construct pix_image >> > > > api.SetImage(pix_image); >> > > > api.SetRectangle(0, 0, pixGetWidth(pix_image), >> > > > pixGetHeight(pix_image)); >> > > > api.Recognize(NULL); >> > > > std::string result = api.GetUTF8Text(); >> >> > > > The code compiles fine but got the following runtime error: >> > > > Please call SetImage before attempting recognition.Please call >> > > > SetImage before attempting recognition.terminate called after throwing >> > > > an instance of 'std::logic_error' >> > > > what(): basic_string::_S_construct NULL not valid >> > > > Aborted >> >> > > > Could you give me some hint on how to fix the problem? Thanks for >> > > > help. >> >> > > > zl2k >> >> > > > -- >> > > > You received this message because you are subscribed to the Google >> > > > Groups >> > > > "tesseract-ocr" group. >> > > > To post to this group, send email to [email protected]. >> > > > To unsubscribe from this group, send email to >> > > > [email protected]. >> > > > For more options, visit this group at >> > > >http://groups.google.com/group/tesseract-ocr?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "tesseract-ocr" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/tesseract-ocr?hl=en. > > -- You received this message because you are subscribed to the Google Groups "tesseract-ocr" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/tesseract-ocr?hl=en

