Tesseract 실행 오류


82

Linux에서 tesseract-ocr 엔진을 실행하는 데 문제가 있습니다. RUS 언어 데이터를 다운로드하여 tessdata 디렉터리 (/ usr / local / share / tessdata)에 저장했습니다. 명령을 사용하여 tesseract를 실행하려고 tesseract blob.jpg out -l rus하면 오류가 표시됩니다.

Error opening data file /usr/local/share/tessdata/eng.traineddata

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.

Failed loading language eng
Tesseract couldn't load any languages!

Could not initialize tesseract.

에 따르면 컴파일 가이드 , 내가 사용하는 export TESSDATA_PREFIX='/usr/local/share/' 내 tessdata 디렉토리를 가리 키도록. 구성 파일을 편집해야할까요? Tesseract는 'rus'대신 'eng'데이터 파일을로드하려고합니다.

스크린 샷 : http://i.stack.imgur.com/I0Guc.png

답변:


87

eng.traineddataGithub 를 가져올 수 있습니다 .

wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata

훈련 된 언어 데이터의 전체 목록은 https://github.com/tesseract-ocr/tessdata 를 확인 하십시오 .

파일을 가져 오면 해당 파일을 /usr/local/share/tessdata폴더 로 이동 합니다. 경고 : 일부 Linux 배포 (예 : openSUSE 및 Ubuntu)에서 /usr/share/tessdata대신 사용할 수 있습니다 .

# If you got the data from Google, unzip it first!
gunzip eng.traineddata.gz 
# Move the data
sudo mv -v eng.traineddata /usr/local/share/tessdata/

2
내가 틀렸다면 정정 해주세요.하지만 새로운 언어 (rus)를 포함하고 (결함) 오류 메시지가 가리키는 언어를 제공하지 않는 것에 대한 질문이 아니 었나요?
Arne 2014

1
편집 : 어떤 이유로 eng.traineddate가 없으면 tesseract가 실행되지 않습니다-필요하지 않더라도. 그래서 AAAfarmclub의 대답은 괜찮습니다.
Arne

3
경고 : 다른 Linux 설치 (ubuntu vivid)는 다른 디렉토리에서 작동합니다. / usr / share / tesseract-ocr / tessdata
octohedron

@Gazta : 예, 오픈 수세 대신 그 디렉토리를 필요로
Avindra Goolcharan

3
우분투 그놈 16.04에서 : 그건/usr/share/tesseract-ocr/tessdata/
kmario23

55

가장 간단한 방법은 필요한 패키지를 설치하는 것입니다.

sudo apt-get install tesseract-ocr-eng  #for english
sudo apt-get install tesseract-ocr-tam  #for tamil
sudo apt-get install tesseract-ocr-deu  #for deutsch (German)

아시다시피 다른 언어 (예 : tesseract-ocr-fra)로가는 길을 열어줍니다.


3
이것은 받아 들여진 대답이어야합니다. 수동 (당신이 처음에 정팔 포체를 설치하는 데 하나를 사용하는 가정) 다시 패키지 관리자 뒤에 파일을 땜질하는 것은 좋은 생각입니다
Ishay 펠 레드

2
MacPort를 사용하는 Mac 사용자의 경우 : sudo port install tesseract-eng
p-mercier

4
를 사용 tesseract --list-langs하여 사용 가능한 모든 언어를 볼 수 있습니다. 당신은 또한 사용할 수 있습니다 sudo apt-get install tesseract-ocr-*그들 모두 설치
로드리고 라구나

아치의 경우 패키지는라고합니다 tesseract-data-eng.
loki

불행히도이 답변은 Docker 컨테이너 외부에서 작동하지만 작동하지 않습니다.
Ælex

28

Windows 시스템 에서도이 오류가 발생했습니다.

내 솔루션.

1) https://github.com/tesseract-ocr/tessdata/tree/3.04.00 에서 언어 파일을 다운로드하십시오.

예를 들어 eng의 경우 eng 접두사가있는 모든 파일을 다운로드했습니다.

2) 일부 폴더 내의 tessdata 디렉토리에 넣으십시오 . 이 폴더를 시스템 경로 변수에 TESSDATA_PREFIX 로 추가하십시오 .

결과는 System env var : TESSDATA_PREFIX = D : / Java / OCR이며 OCR 폴더에는 언어 파일 이있는 tessdata 가 있습니다.

다음은 디렉토리의 스크린 샷입니다.

여기에 이미지 설명 입력


4
예, 모두가 리눅스에 대해 이야기하고 있습니다. 제발, 시장에 하나 더 인기있는 OS가 있다는 것을 잊지 마십시오.
Khan

4

이전 솔루션이 저에게 효과가 없었습니다.

나는 apt-gettessdata를 설치 하고 수동으로 다운로드하고 이동하는 /usr등의 작업을 수행했으며 변수를 수천 번 내보내더라도 아무도 작동하지 않았습니다.

마지막으로 울기 시작하기 전에 마지막 시도에서 경로를 Tesseract () 인스턴스에 직접 전달하려고했습니다.

Python : tr = Tesseract("/usr/local/share/tesseract-ocr/")이제 작동합니다. 명확히하기 위해 im using tesserwrapmodule.


1
나는 당신을 느낍니다! 나는 바로 지금 거기에 있습니다. 차이점은 상황을 악화시키기 위해 명령 줄에서 작동하도록 노력하고 있다는 것입니다.
탐험가

4
tesseract  --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>

제 경우에는 제가 저지른 실수 나 성공하지 못한 시도입니다.

  • github repo를 복제하고 거기에서 파일을 복사했습니다.
    • / usr / local / share / tessdata /
    • / usr / share / tesseract-ocr / tessdata /
    • / usr / share / tessdata /
  • TESSDATA_PREFIX위의 경로와 함께 사용
  • sudo apt-get 설치 tesseract-ocr-eng

처음 두 번의 시도는 작동하지 않았습니다. 왜냐하면 파일 git clone이 내가 모르는 이유로 작동하지 않았기 때문입니다. # 3 시도가 왜 효과가 있었는지 모르겠습니다.

드디어,

  1. eng.traindata 파일을 다운로드했습니다. wget
  2. 일부 디렉토리에 복사했습니다.
  3. --tessdata-dir디렉토리 이름과 함께 사용

나를 위해 가져가는 것은 패키지 관리자 설치 및 디렉토리에 의존하는 대신 도구를 잘 배우고 사용하는 것입니다 .


2

C 코드에서 tesseract API 함수를 호출 할 수 있습니다.

#include <tesseract/baseapi.h>
#include <tesseract/ocrclass.h>; // ETEXT_DESC

using namespace tesseract;

class TessAPI : public TessBaseAPI {
    public:
    void PrintRects(int len);
};

...
TessAPI *api = new TessAPI();
int res = api->Init(NULL, "rus");
api->SetAccuracyVSpeed(AVS_MOST_ACCURATE);
api->SetImage(data, w0, h0, bpp, stride);
api->SetRectangle(x0,y0,w0,h0);

char *text;
ETEXT_DESC monitor;
api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
printf("m.count: %s\n", monitor.count);
printf("m.progress: %s\n", monitor.progress);

api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
...
api->End();

그리고 다음 코드를 작성하십시오.

g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus

(사진 로딩을 위해 FreeImage가 필요합니다)


@DarkSkull, 예, 이것은 Debian GNU / Linux에서 테스트 한 C ++ 코드입니다. 보시다시피 Russel Crowe는 TessAPI :: Init (NULL, "rus") 함수에 문제가 있습니다. Tesseract 소스 코드 (TessAPI 클래스 메서드)를 살펴 보는 것은 의미가 있습니다.
Alexander Lubyagin

1

Visual Studio 2017 Community Edition을 사용하고 있습니다. 내 프로젝트의 Debug 디렉토리에 tessdata
라는 디렉토리를 만들어이 문제를 해결했습니다 . 그런 다음 eng.traineddata 파일을 해당 디렉토리에 넣습니다.


1

나는 Windows OS를 사용하고 있으며 위의 모든 솔루션을 시도했지만 아무것도 작동하지 않습니다.

마지막으로 C 드라이브 대신 Tesseract-OCR을 D 드라이브 (내 파이썬 스크립트를 실행하는 곳)에 설치하면 작동합니다.

따라서 Windows를 사용하는 경우 Tesseract-OCR과 동일한 드라이브에서 Python 스크립트를 실행하십시오.


1

여기 Windows에서 작업하는 C # 개발자. 저에게 효과적인 것은 다음 URL에서 eng.traineddata 파일을 다운로드하는 것입니다 .

https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata

내 콘솔 애플리케이션 프로젝트의 다음 디렉토리에 복사하십시오.

[프로젝트 디렉토리] \ bin \ Debug \ tessdata

위 의 tessdata 폴더를 수동으로 만들었습니다 .



0
tessdata_dir_config = r'--tessdata-dir "/usr/local/Cellar/tesseract/4.1.1/share/tessdata"'
pytesseract.image_to_string(imgCrop,lang='eng',config=tessdata_dir_config)

4
이것은 대답이 아닙니다. 다른 사람들이 귀하의 답변을 읽을 때 유용한 통찰력을 얻을 수 있도록 여기에서 무슨 일이 일어나고 있는지 설명하십시오.
AlexH 2010 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.