如何 link linux 中的 liblept 和 libtesseract 文件

How to link liblept and libtesseract files in linux

我正在使用 .net 核心 C# 代码使用 Tesseract 从图像中提取文本。我已使用 NuGet 包命令将 Tesseract 3.3.0 添加到我的项目中。这段代码在我的 windows 机器上运行良好。然而,这在 Linux 机器上失败了。在互联网上研究之后,我知道我需要 link libleptlibtesseract 文件。因此,我正在对 link 文件执行以下操作。

ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 /xxx/yyy/zzzz/project/x64/liblept1753.so
ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.4 /xxx/yyy/zzzz/project/x64/libtesseract3052.so

但是我仍然遇到错误。

+++++++StackTrace+++++++
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
   at InteropDotNet.InteropRuntimeImplementer.CreateInstance[T]()
   at Tesseract.Interop.TessApi.Initialize()
   at Tesseract.Interop.TessApi.get_Native()
   at Tesseract.TesseractEngine..ctor(String datapath, String language, EngineMode engineMode, IEnumerable`1 configFiles, IDictionary`2 initialOptions, Boolean setOnlyNonDebugVariables)
   at Controller.OCRImage(String image_path, Int32 page_id, String page_img_path) in Controller.cs:line 710
+++++++InnerException+++++++
System.Exception: dlsym: /xxx/yyy/zzzz/project/x64/libtesseract3052.so: undefined symbol: TessPDFRendererCreateTextonly
   at InteropDotNet.UnixLibraryLoaderLogic.GetProcAddress(IntPtr libraryHandle, String functionName)
   at InteropDotNet.LibraryLoader.GetProcAddress(IntPtr dllHandle, String name)
   at InteropRuntimeImplementer.TessApiSignaturesInstance.TessApiSignaturesImplementation..ctor(LibraryLoader loader)
+++++++Data+++++++
System.Collections.ListDictionaryInternal
+++++++Source+++++++
System.Private.CoreLib
+++++++HResult+++++++
-2146232828
+++++++TargetSite+++++++
System.Object InvokeMethod(System.Object, System.Object[], System.Signature, Boolean, Boolean)
+++++++Message+++++++
Exception has been thrown by the target of an invocation.
+++++++HelpLink+++++++

下面是实际错误,不知道如何进行。 我被困在这里,非常感谢任何帮助。

/xxx/yyy/zzzz/project/x64/libtesseract3052.so: undefined symbol: TessPDFRendererCreateTextonly

您犯的第一个错误是假装 tesseract 库 4.x 版本是 tesseract 3.x(通过创建符号 link)。这永远行不通。 3.x 库已过时,不支持,所以最好的办法是将您的应用程序升级到 4.x/5.x tesseract.