टेसरैक्ट रनिंग एरर


82

मुझे लिनक्स पर टेसरैक्ट-ऑरो इंजन चलाने में समस्या है। मैंने RUS भाषा डेटा डाउनलोड किया है और इसे tessdata निर्देशिका (/ usr / स्थानीय / शेयर / tessdata) में डाल दिया है। जब मैं कमांड के साथ टेसरैक्ट चलाने की कोशिश कर रहा हूं 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.traineddataगितूब को पकड़ सकते हैं :

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

प्रशिक्षित भाषा डेटा की पूरी सूची के लिए https://github.com/tesseract-ocr/tessdata की जाँच करें

जब आप फ़ाइल (ओं) को पकड़ लेते हैं, तो उन्हें /usr/local/share/tessdataफ़ोल्डर में ले जाएं। चेतावनी: कुछ लिनक्स वितरण (जैसे कि ओपनएसयूएसबी और उबंटू) /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

1
संपादित करें: किसी कारण से, tesseract नहीं चलेगा जब तक कि eng.trainedate मौजूद न हो - भले ही इसकी आवश्यकता न हो। तो AAAfarmclub का जवाब ठीक है।
Arne

3
चेतावनी: अन्य लिनक्स इंस्टॉलेशन (ubuntu vivid) एक अलग निर्देशिका में काम करते हैं: / usr / share / tesseract-ocr / tessdata इसके बजाय
ऑक्टोहेड्रॉन

@ गज़ता: हाँ, OpenSUSE को उस निर्देशिका की आवश्यकता है
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)

जैसा कि आप देख सकते हैं, यह अन्य भाषाओं (यानी टेसेरैक्ट-ऑक्रो-फ़्रा) की राह खोलता है।


3
यह स्वीकृत उत्तर होना चाहिए। मैन्युअल रूप से पैकेज प्रबंधकों के पीछे की फाइलों के साथ छेड़छाड़ करना (यह मानते हुए कि आपने पहले स्थान पर
टेसेरैक्ट

2
MacPort का उपयोग करने वाले मैक उपयोगकर्ता के लिए: sudo port install tesseract-eng
p-mercier

4
आप tesseract --list-langsसभी उपलब्ध भाषाओं को देखने के लिए उपयोग कर सकते हैं। आप sudo apt-get install tesseract-ocr-*उन सभी को स्थापित करने के लिए भी उपयोग कर सकते हैं
रोड्रिगो लागुना

आर्क के लिए पैकेजों को कहा जाता है tesseract-data-eng, आदि
loki

दुर्भाग्य से यह उत्तर डॉकटर कंटेनर में काम नहीं करता है, हालांकि यह इसके बाहर काम करता है।
Ælex

28

मेरी यह त्रुटि विंडोज मशीन पर भी थी।

मेरा समाधान।

1) https://github.com/tesseract-ocr/tessdata/tree/3.04.00 से अपनी भाषा फ़ाइलों को डाउनलोड करें

उदाहरण के लिए, eng के लिए, मैंने सभी फ़ाइलों को eng उपसर्ग के साथ डाउनलोड किया।

2) उन्हें कुछ फ़ोल्डर के अंदर tessdata निर्देशिका में रखें । इस फ़ोल्डर को TESSDATA_PREFIX के रूप में सिस्टम पथ चर में जोड़ें

परिणाम सिस्टम env var होगा: TESSDATA_PREFIX = D: / Java / OCR और OCR फ़ोल्डर में भाषा फ़ाइलों के साथ tessdata है

यह निर्देशिका का एक स्क्रीनशॉट है:

यहाँ छवि विवरण दर्ज करें


4
हां, हर कोई लिनक्स के बारे में बात कर रहा है। कृपया लोग, बाजार में मौजूद एक और लोकप्रिय ओएस को न भूलें।
खान

4

मेरे लिए पिछले किसी समाधान ने काम नहीं किया।

मैंने apt-getटेसडेटा को डाउनलोड और मैन्युअल रूप से डाउनलोड किया है, चारों ओर /usrऔर इतने पर स्थानांतरित किया है और कोई भी काम नहीं करता है, भले ही मैंने चर हजार बार निर्यात किया हो।

अंत में, रोने के लिए शुरू करने से पहले एक आखिरी कोशिश पर मैंने टेसरैक्ट () के उदाहरण के लिए सीधे पथ को पारित करने की कोशिश की है।

पायथन में: tr = Tesseract("/usr/local/share/tesseract-ocr/")और अब यह काम करता है। स्पष्ट करने के लिए, tesserwrapमॉड्यूल का उपयोग करके im ।


1
मैं समझ सकता हूँ! मैं अभी वहीं हूं। अंतर यह है कि चीजों को बदतर बनाने के लिए, मैं इसे कमांड लाइन से काम करने की कोशिश कर रहा हूं।
खोजकर्ता

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

मेरे मामले में, जो गलतियाँ मैंने की हैं, या वे प्रयास जो सफल नहीं हुए।

  • मैं github रेपो क्लोन किया और वहाँ से फ़ाइलों की प्रतिलिपि बनाई
    • / usr / स्थानीय / शेयर / tessdata /
    • / usr / share / tesseract-ocr / tessdata /
    • / usr / शेयर / tessdata /
  • TESSDATA_PREFIXऊपर के रास्तों के साथ उपयोग किया जाता है
  • sudo apt-get Install tesseract-ocr-eng

पहले 2 प्रयासों से काम नहीं हुआ, क्योंकि फाइलों से git clone उन कारणों के लिए काम नहीं किया जिन्हें मैं नहीं जानता। मुझे यकीन नहीं है कि मेरे लिए # 3 प्रयास क्यों काम किए।

आखिरकार,

  1. मैंने eng.traindata फ़ाइल का उपयोग करके डाउनलोड किया wget
  2. इसे कुछ निर्देशिका में कॉपी किया गया
  3. --tessdata-dirनिर्देशिका नाम के साथ प्रयोग किया जाता है

पैकेज प्रबंधक स्थापना और निर्देशिकाओं पर निर्भर होने के बजाय, टूल को अच्छी तरह से सीखना और उसका उपयोग करना मेरे लिए दूर ले जाएं


2

आप सी कोड से 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, हाँ, यह सी ++ कोड है जो डेबियन जीएनयू / लिनक्स में परीक्षण किया गया है। जैसा कि आप देख रहे हैं, रसेल क्रो को फ़ंक्शन TessAPI :: Init (NULL, "rus") की समस्या है। टेसरैक्ट सोर्स कोड (TessAPI वर्ग विधि) का निरीक्षण करना सार्थक है।
अलेक्जेंडर लुबागिन

1

मैं विजुअल स्टूडियो 2017 कम्युनिटी एडिशन का उपयोग कर रहा हूं।
मैंने अपनी परियोजना के डिबग डायरेक्टरी में टेसडाटा नामक एक निर्देशिका बनाकर इस समस्या को हल किया । फिर मैंने उक्त निर्देशिका में eng.traineddata फ़ाइल डाल दी ।


1

मैं विंडोज़ ओएस का उपयोग कर रहा हूं, मैंने ऊपर दिए गए सभी समाधानों की कोशिश की और उनमें से कोई भी काम नहीं करता है।

अंत में, मैं सी ड्राइव के बजाय D ड्राइव पर Tesseract-OCR स्थापित करता हूं (जहां मैं अपनी पायथन स्क्रिप्ट चलाता हूं)।

इसलिए, यदि आप विंडोज़ का उपयोग कर रहे हैं, तो अपने टेसरेक्ट-ओसीआर के समान ड्राइव में अपनी पायथन स्क्रिप्ट चलाएं।


1

सी # डेवलपर यहां विंडोज पर काम कर रहा है। मेरे लिए क्या काम करता है बस निम्नलिखित URL से फ़ाइल eng.traineddata डाउनलोड करें:

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

और मेरे कंसोल एप्लिकेशन प्रोजेक्ट में इसे निम्न निर्देशिका में कॉपी करें:

[परियोजना निर्देशिका] \ bin \ Debug \ tessdata

मैंने मैन्युअल रूप से ऊपर टेस्डेटा फ़ोल्डर बनाया था ।


0

विंडोज उपयोगकर्ताओं के लिए:

पर्यावरण चर में, "TESSDATA_PREFIX" नाम के साथ सिस्टम चर में एक नया चर जोड़ें और मान है "C: \ Program Files (x86) \ Tesseract-OCR \ tessdata"।


सहमत हैं, और इसे सुचारू रूप से काम करने के लिए, कुछ और इंस्टॉलेशन की आवश्यकता है, machineintelligent.blogspot.com/2019/03/…
अमित वशिष्ठ

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
यह कोई जवाब नहीं है। कृपया बताएं कि यहां क्या हो रहा है ताकि आपकी प्रतिक्रिया पढ़ने पर अन्य उपयोगी जानकारी प्राप्त कर सकें।
एलेक्सएच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.