在VB.net中使用Tesseract时出现奇怪的错误

时间:2011-04-10 01:40:50

标签: vb.net ocr tesseract

我有当前的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Bitmap As New Bitmap("image.png")
    Dim ocr As tessnet2.Tesseract = New tessnet2.Tesseract()
    ocr.SetVariable("tessedit_char_whitelit", "0123456789")
    ocr.Init("c:\", "fra", False)
    Dim result As List(Of tessnet2.Word) = ocr.DoOCR(Bitmap, Rectangle.Empty)
    For Each word As tessnet2.Word In result
        RichTextBox1.Text &= word.Text & "(" & word.Confidence & ") "
    Next
End Sub

我只是在表单上有一个普通的RichTextBox和一个按钮。我在调试目录中也有一个名为“image.png”的图像。

每次运行时,程序都会关闭。我走了一步,突然间文件定位器出现了“tessnet2.cpp”

我有一个dll的引用。我也不知道ocr.Init(...)行的用途。

任何帮助都会很好!

3 个答案:

答案 0 :(得分:1)

如果您将代码放在Try / Catch块中,您应该能够在程序关闭的情况下找出错误。您也可以调试程序而不是运行它,而不是程序崩溃,调试器将显示错误发生的确切位置。

答案 1 :(得分:1)

首先,非常感谢您提供的简单而有效的代码。经过3天的搜索,我发现这个代码用于VB(而不是VC)。当然我立即复制并粘贴它,同样的问题也出现了。然后:

  1. 我卸载了Tesseract 3.xx
  2. 检查RegEdit以获取Tesseract 3.xx并将其删除(无论谁想要执行此步骤;请注意不要破坏任何内容)
  3. 将tessdll.dll复制到同一文件夹中。

  4. 主要问题是: ocr.Init("c:\", "fra", False)它应该是这样的: ocr.Init("c:\tessdata", "fra", False)实际上我的真实路线是: ocr.Init(Application.StartupPath & "\tessdata", "eng", False)

  5. 注意到文件夹“... \ Visual Studio 2008 \ Projects ....”我仍然遇到了同样的问题,然后将所有文件夹复制到“D:\ Test”文件夹中(当然在此文件夹我还有一个文件夹:tessdata)

  6. 它奏效了!!!

    希望对您或任何像我这样搜索此问题的人有所帮助:)

    Nes的

答案 2 :(得分:0)

Init方法的第一个参数指定tessdata文件夹的位置。如果你在默认位置(与Tesseract二进制文件相同),它应该为null,或者在VB.NET中为Nothing。