如何 link linux 中的 liblept 和 libtesseract 文件
How to link liblept and libtesseract files in linux
我正在使用 .net 核心 C# 代码使用 Tesseract 从图像中提取文本。我已使用 NuGet 包命令将 Tesseract 3.3.0 添加到我的项目中。这段代码在我的 windows 机器上运行良好。然而,这在 Linux 机器上失败了。在互联网上研究之后,我知道我需要 link liblept 和 libtesseract 文件。因此,我正在对 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.
我正在使用 .net 核心 C# 代码使用 Tesseract 从图像中提取文本。我已使用 NuGet 包命令将 Tesseract 3.3.0 添加到我的项目中。这段代码在我的 windows 机器上运行良好。然而,这在 Linux 机器上失败了。在互联网上研究之后,我知道我需要 link liblept 和 libtesseract 文件。因此,我正在对 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.