2008-08-27 39 views
28

Làm thế nào để bạn OCR tệp tiff sử dụng giao diện Tesseract trong C#?
Hiện tại tôi chỉ biết cách thực hiện bằng cách sử dụng tệp thực thi.OCR với giao diện Tesseract

+3

bạn có thể vui lòng hướng dẫn tôi cách bạn quản lý để sử dụng Tesseract trong C#? – mouthpiec

+0

bất kỳ mã mẫu nào? – Kiquenet

Trả lời

10

Mã nguồn dường như được hướng đến một tệp thực thi, bạn có thể cần phải viết lại các nội dung một chút để nó có thể tạo thành một tệp DLL thay thế. Tôi không có nhiều kinh nghiệm với Visual C++ nhưng tôi nghĩ rằng nó không phải là quá khó với một số nghiên cứu. Tôi đoán là có thể ai đó đã tạo phiên bản thư viện rồi, bạn nên dùng thử Google.

Khi bạn có mã tesseract-ocr trong một tệp DLL, bạn có thể nhập tệp vào dự án C# của mình qua Visual Studio và tạo lớp bao bọc và thực hiện tất cả các công cụ marshaling cho bạn. Nếu bạn không thể nhập thì DllImport sẽ cho phép bạn gọi các hàm trong DLL từ mã C#.

Sau đó, bạn có thể xem xét tệp thực thi ban đầu để tìm manh mối về hàm nào cần gọi đến đúng OCR hình ảnh tiff.

39

Hãy xem tessnet

+0

Điều này tốt hơn P/Tự gọi nó. –

+2

+1 - Hoạt động khá tốt và bạn quên mất DllImports –

0

Disclaimer: Tôi làm việc cho Atalasoft

OCR module supports Tesseract của chúng tôi và nếu điều đó tỏ ra không đủ tốt, bạn có thể nâng cấp lên động cơ tốt hơn và chỉ cần thay đổi một dòng mã (chúng tôi cung cấp một giao diện chung cho nhiều công cụ OCR).

6

Chương trình C# khởi chạy tesseract.exe và sau đó đọc tệp đầu ra của tesseract.exe.

Process process = Process.Start("tesseract.exe", "out"); 
process.WaitForExit(); 
if (process.ExitCode == 0) 
{ 
    string content = File.ReadAllText("out.txt"); 
} 
6

Tôi phát hiện hôm nay rằng EMGU hiện bao gồm trình bao bọc Tesseract. Trong khi số lượng dlls không được quản lý của lib opencv có vẻ hơi khó khăn, thì không có gì là một bản sao nhanh vào thư mục đầu ra của bạn sẽ không chữa được. Từ đó quá trình OCR thực tế cũng đơn giản như ba dòng:

Tesseract ocr = new Tesseract(Path.Combine(Environment.CurrentDirectory, "tessdata"), "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_ONLY); 
this.ocr.Recognize(clip); 
optOCR.Text = this.ocr.GetText(); 

"robomatics" đặt cùng a very nice youtube video thể hiện một giải pháp đơn giản nhưng hiệu quả.

Các vấn đề liên quan