2014-11-10 6 views
0

OCR을 사용하여 이미지의 일부 텍스트를 가져 오려고합니다. 내가 그에 대한 정팔 포체를 초기화해야하고 이것이 나의 시도했다 : Tesseract 초기화

Imports Emgu.CV 
Imports Emgu.Util 
Imports Emgu.CV.Structure 
Imports Emgu.CV.OCR 
Imports Emgu.CV.UI 
Imports Emgu.CV.CvEnum 

Public Class Form1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     Dim lolProcess() As Process = Process.GetProcessesByName("lolClient") 
     Dim snap As New CScreenFromWindow 

     Dim OCRz As Tesseract = New Tesseract("tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_ONLY) 

     OCRz.Recognize(New Image(Of Bgr, Byte)(snap.GetFromAll(lolProcess(0)))) 
     MsgBox(OCRz.GetText()) 

    End Sub 
End Class 

나는 다음과 같은 오류가 내 코드를 실행 : "System.TypeInitializationException" "Emgu.CV.OCR.Tesseract"는 예외를 발생

나는 많이 봤지만 내 실수는 찾을 수 없습니다. EMGU를 this link에서 다운로드하고 .exe를 설치했습니다. 그런 다음 bin 디렉토리의 모든 .dll을 프로젝트에 대한 참조로 추가했습니다. 또한 모든 프로젝트에 opencv_XXXXX.dll 파일을 추가했습니다. 그런 다음 프로젝트에 tessdata-directory도 추가했습니다. 추가 된 모든 dll을 "항상 출력 디렉토리에 복사"로 표시했습니다.

x86 및 x64 용 opencv_XXXXXX.dll 파일이 있습니다. x64로 바꾸려고했으나 작동하지 않습니다.

내 실수를 본 사람이 있습니까?

System.ArgumentException: Unable to create ocr model using Path tessdata and language eng. 
    bei Emgu.CV.OCR.Tesseract.Init(String dataPath, String language, OcrEngineMode mode) in c:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\Emgu.CV.OCR\Tesseract.cs:Zeile 226. 
    bei Emgu.CV.OCR.Tesseract..ctor(String dataPath, String language, OcrEngineMode mode) in c:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\Emgu.CV.OCR\Tesseract.cs:Zeile 118. 
    bei Dodgemaster.Form1.Button1_Click(Object sender, EventArgs e) in X:\Dokumente\Visual Studio 2013\Projects\Dodgemaster\Dodgemaster\Form1.vb:Zeile 16. 

헬로 월드 테스트 programm에 잘 작동 :

는 오류 메시지와 스택 트레이스 있습니다. 그래서 참조가 잘못된 것은 아닙니다. 맞습니까?

+0

당신이 등 스택 추적 ++ 모든 내부 예외의 – tolanj

답변

0

.dlls를 참조한 경우 속성의 "출력 디렉토리로 복사"값을 "항상 복사"로 변경하십시오. 3.5 .NET 프레임 워크에서 실행 해보십시오. 이 다음 시도

실패 : https://www.youtube.com/watch?v=RqvvXJXuRYY&list=UUxAnMtjN08ryThpgYTBmILg

정말 도움이 튜토리얼.

+0

포함한 전체 오류 메시지를 제공 할 수 내가 일하는 비디오를 알아 내라. 나는 그가 한 모든 일을 다했다고 생각하지만 여전히 오류가 있습니다. "항상 복사"가 활성화되어 있고 3.5에서는 작동하지 않습니다. –

+1

그리고 CUDA를 지원합니까? – Aphire

+0

그게 한 가지 문제 일 수 있습니다. 저는 AMD-Radeon을 가지고 있으므로 CUDA가 저를 위해 일하지 않아야합니다. 하지만 나는 [이 링크] (http://sourceforge.net/projects/emgucv/files/emgucv/2.4.2/)에서 새로운 Emgu를 다운로드했으며 CUDA와 x64에서는 아무 것도 말하지 않지만 여전히 동일합니다. 오류. –

0

다른 emgu 설치를 여러 번 설치 한 후 마침내 하나가 발견되었습니다. 현재 버전이 아니라 이전 버전이지만 x64 버전입니다. 염두에두고 파일/dll이 x64에 있어야하고 비디오 에서처럼 잘 작동해야한다는 것을 염두에두고 마침내 작동하게되었습니다. x86/x64 문제인 것으로 보입니다.

0

DPath를 "tessdata"에서 ""로 변경해야합니다.

Dim OCRz As Tesseract = New Tesseract("", "eng", OcrEngineMode.TesseractOnly) 

그건 내가 나의 일을 가지고 방법은 다음과 같습니다. (libemgucv - 창 - 유니버설 - CUDA-3.0.0.2158)