Mark Williams 14 Posted July 25, 2019 I'm trying to use the TesseractOCR4 wrapper from GitHub. I have cloned the project and downloaded it. I get all the example projects to work as expected. However, I run into floating point operation errors with the dlls when I try and use it in my own application. I have all the necessary units included in my uses. I have copied all the necessary dlls to my application folder and also the test data. My app runs and loads the library fine and I can call the recognize function to extract the text. However, it extracts as a single word (ie with no gaps between words). I assume this is the default setting (although I can't imagine why). There is a PageSegMode property which can be used to change the way Tesseract recognizes the text. I can change this fine within the example apps, but whenever I try and set it in my own app to one of the pre-defined constants it causes a floating point violation within one of the dlls. I assume there must be some project option which is set/unset in my app which is causing this issue. Can anyone please point me in the right direction? Share this post Link to post
David Heffernan 2345 Posted July 25, 2019 (edited) I guess you need to mask floating point exceptions before calling in to the dll. https://stackoverflow.com/q/19187479/505088 Edited July 25, 2019 by David Heffernan Share this post Link to post
Mark Williams 14 Posted July 25, 2019 That works in the sense that it masks the exception, but the operation basically stops early. The example applications do not use masking of this error and yet they work for me. I assume it has to be a different configuration of the project option, but I could not find any differences that appeared significant in this context although I update my project optiosn to align just in case and no joy. Share this post Link to post
David Heffernan 2345 Posted July 25, 2019 (edited) 6 minutes ago, Mark Williams said: I assume it has to be a different configuration of the project option Doesn't sound likely to me at all. Do you understand why I suggest to mask floating point exceptions when calling into other code? Edited July 25, 2019 by David Heffernan Share this post Link to post
Mark Williams 14 Posted July 26, 2019 No you are right. I have created a new project and copied the main form from the example project to my new project and then pointed my project at the copied form. It works fine. However, if I create a new project and replicate the form from the example folder, it keeps spitting out the floating point error. I have stripped back the example form so it consists of nothing more that a button and a TOpenDialog. I have pared back its code to about 20 lines and it still works okay. But when I try to recreate (rather than copy) the example form in a new project it bums out again. Even if I copy and paste the entire .pas unit for the example form into my new .pas and even if I right click and view as text and then paste from the example to the new form. So it seems to be something about the way the form is configured, but as to what that is I have no idea. Share this post Link to post