बहु सूत्रण का प्रयोग करें, लेकिन TessBaseAPI के लिए धागा प्रति एक उदाहरण बनाने के लिए बारे में पता होना। उन्हें विभिन्न धागे के बीच साझा न करें। एन धागे (एन> = कोर की संख्या) बनाएं, और जावा सुनिश्चित करेगा कि आप कम से कम कोर बार की संख्या बढ़ाएं।
मुझे क्या करना एन धागे जो उनके स्वयं के संदर्भ में TessBaseAPI वस्तुओं को बनाने के (रन विधि में) और जब तक बाधित एक पाश में ओसीआर अनुरोध के लिए प्रतीक्षा पैदा कर रही है।
...
...
@Override
public void run() {
TessBaseAPI tessBaseApi = new TessBaseAPI();
tessBaseApi.init(Ocrrrer.DATA_PATH, "eng");
setTessVariable(tessBaseApi, "load_system_dawg", "0");
setTessVariable(tessBaseApi, "load_freq_dawg", "0");
setTessVariable(tessBaseApi, "load_unambig_dawg", "0");
setTessVariable(tessBaseApi, "load_punc_dawg", "0");
setTessVariable(tessBaseApi, "load_number_dawg", "0");
setTessVariable(tessBaseApi, "load_fixed_length_dawgs", "0");
setTessVariable(tessBaseApi, "load_bigram_dawg", "0");
setTessVariable(tessBaseApi, "wordrec_enable_assoc", "0");
setTessVariable(tessBaseApi, "tessedit_enable_bigram_correction", "0");
setTessVariable(tessBaseApi, "assume_fixed_pitch_char_segment", "1");
setTessVariable(tessBaseApi, TessBaseAPI.VAR_CHAR_WHITELIST, "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ<");
Log.d(TAG, "Training file loaded");
while (!interrupted()) {
reentrantLock.lock();
try {
Log.d(TAG, this.getName() + " wait for OCR");
jobToDo.await();
Log.d(TAG, this.getName() + " input arrived. Do OCR");
this.ocrResult = doOcr(tessBaseApi);
ocrDone.signalAll();
} catch (InterruptedException e) {
return;
} finally {
try {
reentrantLock.unlock();
} catch (Exception ex) {
}
}
}
}
...
...
आप देख सकते हैं कि tessBaseApi वस्तु रन विधि करने के लिए स्थानीय है, इसलिए पूरी तरह से साझा नहीं किया।
क्या आप गति या पहचान सटीकता के बारे में बात कर रहे हैं? – rmtheis
मैं गति ले रहा हूं, यह बहुत धीमी है। –
अरे @QuiLlHoN क्या आपको इतने धीमी प्रदर्शन के लिए कोई समाधान मिला? मुझे एक ही समस्या का सामना करना पड़ रहा है:/ – Vucko