【问题标题】:Emgu CV C# Exception creating tesseract objectEmgu CV C#异常创建tesseract对象
【发布时间】:2015-02-21 23:29:32
【问题描述】:

我可以访问所有 emgu 库。 VS 找到库,using Emgu.CV.OCR 没有返回错误。

当我尝试创建 Tesseract 对象时,Program.cs 会抛出 FileLoadException。在System.Windows.Forms.dll

删除创建 tesseract 的代码行可以让程序运行良好。

我尝试将 tessdata 复制到我的调试文件中,但也没有成功。

这是我的代码:

private void button1_Click(object sender, EventArgs e)
    {
        Tesseract _ocr;
        _ocr = new Tesseract(@"tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

        OpenFileDialog Openfile = new OpenFileDialog();
        if (Openfile.ShowDialog() == DialogResult.OK)
        {
            Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(Openfile.FileName);
            pictureBox1.Image = My_Image.ToBitmap();
        }
    }

【问题讨论】:

    标签: c#-4.0 emgucv


    【解决方案1】:

    我在同一问题上摆弄了一段时间;现在我明白了。

    首先,确保您具有以下使用指令(您可能需要通过 NuGet 下载 Emgu.CV):

    using Emgu.CV;
    using Emgu.CV.OCR;
    using System.Reflection;
    using System.IO;
    using System.Drawing;
    

    然后,确保您拥有最新的 tessdata。如果没有,请导航到github 并下载它(单击“克隆或下载”并选择“下载 ZIP 文件”)。然后,您应该解压缩文件并将文件夹“tessdata-master”重命名为“tessdata”。将此文件夹复制到二进制文件所在的位置(程序集位置)。

    最后,指定正确的路径,然后就可以进行 OCR 了!

    string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\";  
    var _ocr = new Tesseract(path, "eng", OcrEngineMode.Default);
    _ocr.SetImage(yourImage);
    _ocr.Recognize();
    var result = _ocr.GetCharacters();
    

    【讨论】:

      【解决方案2】:

      首先,您需要检查您的项目 References 。如果没有请先添加“Emgu.CV.OCR”库。然后试试下面的代码,也许它会为你工作。

      private void button1_Click(object sender, EventArgs e)
          {
              Tesseract _ocr;
             _ocr = new Tesseract(@"C:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV.OCR\tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);//first Parameter set your path ..complete path like i did
                  _ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz");
      
              OpenFileDialog Openfile = new OpenFileDialog();
              if (Openfile.ShowDialog() == DialogResult.OK)
              {
                  Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(Openfile.FileName);
                  pictureBox1.Image = My_Image.ToBitmap();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 2013-01-20
        • 2016-11-16
        • 1970-01-01
        • 2017-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多