0

我有当前的代码:

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(...) 行的用途。

你能帮忙的话,我会很高兴!

4

3 回答 3

1

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

于 2011-04-10T01:50:14.520 回答
1

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

  1. 我卸载了 Tesseract 3.xx
  2. 检查了 Tesseract 3.xx 的 RegEdit 并删除了它们(任何想要执行此步骤的人;请注意不要破坏任何东西)
  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”文件夹中(当然在这个文件夹中我还有一个文件夹:苔丝数据)

有效!!!

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

内斯

于 2012-04-19T21:45:38.843 回答
0

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

于 2011-05-21T13:00:58.857 回答