在Emgu.CV.OCR示例项目中,有一个类Tesseract
,它是Tesseract-OCR引擎的包装器。
在Tesseract.cs中,有如下声明:
[DllImport(CvInvoke.EXTERN_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)]
private static extern IntPtr TessBaseAPICreate();
CvInvoke.EXTERN_LIBRARY指向cvextern.dll。
我在DependencyWalker中打开了cvextern.dll,并且没有任何Tesseract函数,只有OpenCV函数。
我确定我遗漏了一些明显的东西,但这里使用的实际功能定义在哪里?
答案 0 :(得分:2)
如果我在DependencyWalker中打开cvextern.dll
并单击左侧窗格中的CVEXTERN.DLL
,我可以在列表中看到Tesseract功能。你必须在该列表的大部分位置滚动,但我可以找到:
TessBaseAPICreate
TessBaseAPIExtractResult
TessBaseAPIGetUTF8Text
TessBaseAPIInit
TessBaseAPIRecognizeImage
TessBaseAPIRelease
TessBaseAPISetVariable
为了进一步证明,我下载了Emgu的源代码(说明here),Tesseract库包含在\ Emgu.CV.Extern \ tesseract中。
上述方法的实现位于\ Emgu.CV.Extern \ tesseract \ tesseract.cpp中。基本上他们使用的EmguTesseract
类继承自tesseract::TessBaseAPI
。