2012-04-08 48 views
20

http://code.google.com/p/tesseractdotnet/Tesseract 3 (OCR) - .NET Wrapper

Tôi gặp sự cố khi Tesseract hoạt động trong các dự án Visual Studio 2010 của tôi. Tôi đã thử giao diện điều khiển và winforms và cả hai đều có cùng một kết quả. Tôi đã đi qua một dll bởi một người khác khẳng định đã cho nó hoạt động trong VS2010:

http://code.google.com/p/tesseractdotnet/issues/detail?id=1

Tôi thêm một tham chiếu đến các dll có thể được tìm thấy trong các thuộc gửi 64 từ trang web trên. Mỗi lần tôi xây dựng dự án của mình, tôi nhận được một số AccessViolationException nói rằng một nỗ lực đã được thực hiện để đọc hoặc ghi bộ nhớ được bảo vệ.

public void StartOCR() 
{ 
    const string language = "eng"; 
    const string TessractData = @"C:\Users\Joe\Desktop\tessdata\"; 

    using (TesseractProcessor processor = new TesseractProcessor()) 
    { 
     using (Bitmap bmp = Bitmap.FromFile(fileName) as Bitmap) 
     { 
      if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)) 
      { 
       string text = processor.Recognize(bmp); 
      } 
     } 
    } 
} 

Ngoại lệ vi phạm truy cập luôn trỏ đến if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)). Tôi đã nhìn thấy một số đề xuất để đảm bảo nền tảng giải pháp được đặt thành x86 trong trình quản lý cấu hình và vị trí thư mục tessdata được hoàn thành với dấu gạch chéo, không có kết quả. Bất kỳ ý tưởng?

+1

bạn có thể vui lòng chia sẻ việc triển khai đầy đủ của mình không? Tôi nghĩ rằng tôi đang đọc hướng dẫn xung đột về cách thiết lập điều này. – Roger

+0

Không thể nhận tín dụng nhưng điều này làm việc cho tôi: Thay thế 'eng.traineddata' trong thư mục tessdata bằng http://code.google.com/p/tesseract-ocr/downloads/detail?name=eng.traineddata này. gz – Alex

Trả lời

7

Nó dường như là nội dung của thư mục tessdata đã gây ra vấn đề. Thu được thư mục tessdata từ liên kết đầu tiên và tất cả hiện đang hoạt động.

2

Tôi vừa hoàn thành một dự án với động cơ tesseract 3. tôi nghĩ, có một lỗi trong động cơ, cần được sửa chữa. Những gì tôi đã làm để loại bỏ "AccessViolationError" là, thêm "\ tessdata" vào chuỗi thư mục tessdata thực. Tôi không biết tại sao, nhưng động cơ dường như đang cắt ngắn thư mục bên trong nhất trong con đường Tessdata.

Chỉ cần thực hiện đầy đủ OCR gói (DLL + Tessdata (tiếng Anh)) làm việc với .NET Framework 4.

+0

Đúng! Thư mục nằm trong "e: \ tessdata" và định nghĩa biến là 'const string tessractData = @" e: \ tessdata \ tessdata ";' –

0

Nếu ai đó có cùng vấn đề và lời khuyên với dấu gạch chéo không hoạt động, hãy thử ... HAI kết thúc dấu gạch chéo! Seriosly. Nó làm việc cho tôi.

if (processor.Init(@".\tessdata\\", "eng", (int)eOcrEngineMode.OEM_DEFAULT)) 
0

Có vẻ vấn đề của bạn liên quan đến vấn đề ổn định được đề cập here. Trên số site chính thức, có đề xuất sử dụng bản phát hành ổn định trước đó 2.4.1. Bạn có thể cài đặt nó từ nuget.org thông qua lệnh trình quản lý gói: Install-Package Tesseract -Version 2.4.1