Странная ошибка при использовании Tesseract в VB.net - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть текущий код:

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 ]

1 голос
/ 20 апреля 2012

Прежде всего, большое спасибо за ваш простой, но эффективный код. После 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)

Это сработало !!!

Надеюсь, это поможет вам или любому, кто ищет эту проблему, как я :)

Nes

1 голос
/ 10 апреля 2011

Если вы поместите свой код в блок Try / Catch, вы сможете узнать, что это за ошибка, без закрытия вашей программы.Вы также можете отладить программу вместо ее запуска, и вместо ее сбоя отладчик покажет вам, где именно происходит ошибка.

0 голосов
/ 21 мая 2011

Первый параметр метода Init указывает местоположение папки tessdata.Если он находится в местоположении по умолчанию, которое совпадает с местоположением двоичного файла Tesseract, оно должно быть нулевым или Nothing в VB.NET.

...