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’데이터 파일을로드하려고합니다.
답변
eng.traineddata
Github 를 가져올 수 있습니다 .
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-get
tessdata를 설치 하고 수동으로 다운로드하고 이동하는 /usr
등의 작업을 수행했으며 변수를 수천 번 내보내더라도 아무도 작동하지 않았습니다.
마지막으로 울기 시작하기 전에 마지막 시도에서 경로를 Tesseract () 인스턴스에 직접 전달하려고했습니다.
Python : tr = Tesseract("/usr/local/share/tesseract-ocr/")
이제 작동합니다. 명확히하기 위해 im using tesserwrap
module.
답변
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 시도가 왜 효과가 있었는지 모르겠습니다.
드디어,
- eng.traindata 파일을 다운로드했습니다.
wget
- 일부 디렉토리에 복사했습니다.
--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 파일을 해당 디렉토리에 넣습니다.