@@ -359,6 +359,32 @@ protected void init() {
359359 if (psm > -1 ) {
360360 api .TessBaseAPISetPageSegMode (handle , psm );
361361 }
362+
363+ validateDatapathAndLanguagePacks ();
364+ }
365+
366+ /**
367+ * Validates specified datapath and language data existence.
368+ */
369+ void validateDatapathAndLanguagePacks () {
370+ String dataPath = api .TessBaseAPIGetDatapath (handle );
371+ if (!new File (dataPath ).exists ()) {
372+ throw new IllegalArgumentException ("Specified datapath " + dataPath + " does not exist." );
373+ }
374+
375+ Pointer ptr = api .TessBaseAPIGetLoadedLanguagesAsVector (handle ).getPointer ();
376+ String [] loadedLangs = ptr .getStringArray (0 );
377+ PointerByReference pref = new PointerByReference ();
378+ pref .setPointer (ptr );
379+ api .TessDeleteTextArray (pref );
380+ ptr = api .TessBaseAPIGetAvailableLanguagesAsVector (handle ).getPointer ();
381+ String [] availLangs = ptr .getStringArray (0 );
382+ pref .setPointer (ptr );
383+ api .TessDeleteTextArray (pref );
384+
385+ if (!Arrays .asList (availLangs ).containsAll (Arrays .asList (loadedLangs ))) {
386+ throw new IllegalArgumentException ("Specified language data does not exist." );
387+ }
362388 }
363389
364390 /**
@@ -437,26 +463,6 @@ protected void setROI(Rectangle rect) {
437463 * @return the recognized text
438464 */
439465 protected String getOCRText (String filename , int pageNum ) {
440- // check for valid datapath and language data existence
441- String dataPath = api .TessBaseAPIGetDatapath (handle );
442- if (!new File (dataPath ).exists ()) {
443- throw new IllegalArgumentException ("Specified datapath " + dataPath + " does not exist." );
444- }
445-
446- Pointer ptr = api .TessBaseAPIGetLoadedLanguagesAsVector (handle ).getPointer ();
447- String [] loadedLangs = ptr .getStringArray (0 );
448- PointerByReference pref = new PointerByReference ();
449- pref .setPointer (ptr );
450- api .TessDeleteTextArray (pref );
451- ptr = api .TessBaseAPIGetAvailableLanguagesAsVector (handle ).getPointer ();
452- String [] availLangs = ptr .getStringArray (0 );
453- pref .setPointer (ptr );
454- api .TessDeleteTextArray (pref );
455-
456- if (!Arrays .asList (availLangs ).containsAll (Arrays .asList (loadedLangs ))) {
457- throw new IllegalArgumentException ("Specified language data does not exist." );
458- }
459-
460466 if (filename != null && !filename .isEmpty ()) {
461467 api .TessBaseAPISetInputName (handle , filename );
462468 }
0 commit comments