[ocr] Tesseract 실행 오류

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



답변

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/


답변

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

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)로가는 길을 열어줍니다.


답변

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 가 있습니다.

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

여기에 이미지 설명 입력


답변

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

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

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

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


답변

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디렉토리 이름과 함께 사용

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


답변

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가 필요합니다)


답변

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