初始化Tesseract

时间:2014-11-10 14:18:51

标签: vb.net ocr tesseract

我尝试使用OCR获取图像的一些文本。我必须为此初始化Tesseract,这是我的尝试:

Imports Emgu.CV
Imports Emgu.Util
Imports Emgu.CV.Structure
Imports Emgu.CV.OCR
Imports Emgu.CV.UI
Imports Emgu.CV.CvEnum

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim lolProcess() As Process = Process.GetProcessesByName("lolClient")
        Dim snap As New CScreenFromWindow

        Dim OCRz As Tesseract = New Tesseract("tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_ONLY)

        OCRz.Recognize(New Image(Of Bgr, Byte)(snap.GetFromAll(lolProcess(0))))
        MsgBox(OCRz.GetText())

    End Sub
End Class

启动我的代码时出现以下错误: " System.TypeInitializationException" " Emgu.CV.OCR.Tesseract"引起异常

我搜索了很多,但无法找到我的错误。我从this link下载了EMGU并安装了.exe。然后我从bin目录中添加了每个.dll作为对我项目的引用。我还将所有opencv_XXXXX.dll文件添加到我的项目中。然后我还将tessdata目录添加到我的项目中。我已将所有添加的dll标记为"始终复制到输出目录"。

x86和x64有opencv_XXXXXX.dll文件。我试图将它们换成x64,但那些也没有用。

有人看到我的错吗?

这是错误消息和堆栈跟踪:

   System.ArgumentException: Unable to create ocr model using Path tessdata and language eng.
   bei Emgu.CV.OCR.Tesseract.Init(String dataPath, String language, OcrEngineMode mode) in c:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\Emgu.CV.OCR\Tesseract.cs:Zeile 226.
   bei Emgu.CV.OCR.Tesseract..ctor(String dataPath, String language, OcrEngineMode mode) in c:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\Emgu.CV.OCR\Tesseract.cs:Zeile 118.
   bei Dodgemaster.Form1.Button1_Click(Object sender, EventArgs e) in X:\Dokumente\Visual Studio 2013\Projects\Dodgemaster\Dodgemaster\Form1.vb:Zeile 16.

Hello World测试程序运行正常。所以引用可能不对,对吧?

3 个答案:

答案 0 :(得分:0)

当您引用.dlls时,尝试将属性中的“复制到输出目录”值更改为“始终复制” 还可以尝试在3.5 .NET框架上运行它。

如果没有尝试,请执行以下操作: https://www.youtube.com/watch?v=RqvvXJXuRYY&list=UUxAnMtjN08ryThpgYTBmILg

非常有帮助的教程。

答案 1 :(得分:0)

经过几次不同的emgu-installs的重新安装后,我终于找到了一个,这是有效的。它是旧版本,而不是当前版本,但它适用于x64。考虑到每个文件/ dll都需要x64并且像视频一样正常工作,我终于得到了它的工作。 似乎是x86 / x64问题。

答案 2 :(得分:0)

您必须将DPath从“tessdata”更改为“”。

Dim OCRz As Tesseract = New Tesseract("", "eng", OcrEngineMode.TesseractOnly)

这就是我的工作方式。(libemgucv-windows-universal-cuda-3.0.0.2158)