duncantl / Rtesseract

Interface to tesseract OCR system.
12 stars 4 forks source link

Rtesseract no longer installs with tesseract-dev #4

Closed mespe closed 7 years ago

mespe commented 7 years ago

Building Rtesseract against the current development version of Tesseract results in:

render.cpp: In function ‘SEXPREC* R_Tesseract_RenderAsPDF(SEXP, SEXP, SEXP)’: render.cpp:41:100: error: no matching function for call to ‘tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*)’ tesseract::TessPDFRenderer renderer(CHAR(STRING_ELT(r_file, 0)), CHAR(STRING_ELT(r_datadir, 0))); ^ In file included from RtesseractBoxRenderer.h:1:0, from render.cpp:3: /usr/include/tesseract/renderer.h:190:3: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*, bool) TessPDFRenderer(const char* outputbase, const char* datadir, bool textonly); ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:190:3: note: candidate expects 3 arguments, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const tesseract::TessPDFRenderer&) class TESS_API TessPDFRenderer : public TessResultRenderer { ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(tesseract::TessPDFRenderer&&) /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided render.cpp: In function ‘SEXPREC* R_TessPDFRender(SEXP, SEXP)’: render.cpp:105:106: error: no matching function for call to ‘tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*)’ renderer = new tesseract::TessPDFRenderer(CHAR(STRING_ELT(r_file, 0)), CHAR(STRING_ELT(r_datadir, 0))); ^ In file included from RtesseractBoxRenderer.h:1:0, from render.cpp:3: /usr/include/tesseract/renderer.h:190:3: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*, bool) TessPDFRenderer(const char* outputbase, const char* datadir, bool textonly); ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:190:3: note: candidate expects 3 arguments, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const tesseract::TessPDFRenderer&) class TESS_API TessPDFRenderer : public TessResultRenderer { ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(tesseract::TessPDFRenderer&&) /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided

duncantl commented 7 years ago

Thanks. I'll try to find time to take a look. Otherwise, let's meet and fix this on Wed.

duncantl commented 7 years ago

One of the candidates is tesseract::TessPDFRenderer::TessPDFRenderer(const char, const char, bool) and I suspect that is the one want. They probably added one required argument as a bool. Can you give me a URL for the source of the tesseract version you are using. Thanks

duncantl commented 7 years ago

I assume the current code in git?
https://github.com/tesseract-ocr/tesseract

duncantl commented 7 years ago

I just committed a a change to Rtesseract/src/render.cpp which will hopefully work for your setup. If not, just comment out that entire routine (R_Tesseract_RenderAsPDF) as it is not currently accessible via an R function. But hopefully this will compile now with a git pull on Rtesseract.

mespe commented 7 years ago

The problem is not fixed with the latest pull. I get:

render.cpp: In function ‘SEXPREC* R_TessPDFRender(SEXP, SEXP)’: render.cpp:111:106: error: no matching function for call to ‘tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*)’ renderer = new tesseract::TessPDFRenderer(CHAR(STRING_ELT(r_file, 0)), CHAR(STRING_ELT(r_datadir, 0))); ^ In file included from RtesseractBoxRenderer.h:1:0, from render.cpp:3: /usr/include/tesseract/renderer.h:190:3: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const char*, const char*, bool) TessPDFRenderer(const char* outputbase, const char* datadir, bool textonly); ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:190:3: note: candidate expects 3 arguments, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(const tesseract::TessPDFRenderer&) class TESS_API TessPDFRenderer : public TessResultRenderer { ^~~~~~~~~~~~~~~ /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided /usr/include/tesseract/renderer.h:186:16: note: candidate: tesseract::TessPDFRenderer::TessPDFRenderer(tesseract::TessPDFRenderer&&) /usr/include/tesseract/renderer.h:186:16: note: candidate expects 1 argument, 2 provided That routine (TessPDFRender) we are using.

I can install and run everything from the release version (3.05.01), but it might be good to know we might need to fix this eventually.

duncantl commented 7 years ago

But render.cpp has the lines

tesseract::TessPDFRenderer renderer(CHAR(STRING_ELT(r_file, 0)), CHAR(STRING_ELT(r_datadir, 0))

ifdef PDF_RENDER_HAS_TEXT_ONLY

                , LOGICAL(r_textOnly)[0]

endif

                                   );

and

define PDF_RENDER_HAS_TEXT_ONLY 1

before the routine. Are you seeing that? So that should cause the third argument to be passed

mespe commented 7 years ago

I fixed it - there were two spots in render.cpp that called TessPDFRenderer.