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

C# run tesseract (or any command) in Linux

我有一个 运行 Tesseract 的 C# 包装器,它在 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;
        }
    }

您可以使用现有的 .NET Tesseract wrapper (e.g. via NuGet package)。它在 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