C# 在 Linux 中运行 tesseract(或任何命令)

Raf*_*tro 2 c# linux tesseract

我有一个 C# 包装器来运行 Tesseract,它在 Windows 下运行良好。我查看注册表项并获取安装目录以便运行 Tesseract.exe。我想知道我该如何做同样的事情,因为我正在将 .Net Core 3.1 的代码移植到 Linux。我为 Windows 设置 Tesseract 信息的代码是:

private bool SetTesseractInfo(string dataDir = null)
    {
        try
        {
            //using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Tesseract-OCR"))
            using (RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Tesseract-OCR"))
            {
                if (key != null)
                {
                    Object o = key.GetValue("Path");
                    if (o != null)
                    {
                        _tesseractExePath = Path.Combine(o.ToString(), "tesseract.exe");

                        if (String.IsNullOrEmpty(dataDir))
                            dataDir = Path.Combine(o.ToString(), "tessdata");

                        Environment.SetEnvironmentVariable("TESSDATA_PREFIX", dataDir);
                    }

                    o = key.GetValue("CurrentVersion");
                    if (o != null)
                        _tesseractVersion = o.ToString();
                }
                else
                    return false;
            }
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Vit*_*aev 5

您可以使用现有的.NET Tesseract 包装器(例如通过NuGet 包)。它可以在 Linux 或 Mac 上正确启动 OCR。

顺便说一句,它不依赖于已安装的 Tesseract.exe。相反,它使用 libtesseract 和 libleptonica 库的 .NET 绑定来运行 OCR。你可以看看TesseractEngine.cs的实现

以下是 Ubuntu 20.04 的配置步骤:

cd ~/YourProject/x64 # Place "x64" directory on the same level with "tessdata"

sudo apt install libleptonica-dev
ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 libleptonica-1.78.0.so

sudo apt install libtesseract-dev
ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.4.0.1 libtesseract41.so
Run Code Online (Sandbox Code Playgroud)