Skip to content

Commit 052540e

Browse files
committed
Refactor
1 parent 36ef4cb commit 052540e

File tree

2 files changed

+52
-40
lines changed

2 files changed

+52
-40
lines changed

src/main/java/net/sourceforge/tess4j/Tesseract.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

src/main/java/net/sourceforge/tess4j/Tesseract1.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,32 @@ protected void init() {
341341
if (psm > -1) {
342342
TessBaseAPISetPageSegMode(handle, psm);
343343
}
344+
345+
validateDatapathAndLanguagePacks();
346+
}
347+
348+
/**
349+
* Validates specified datapath and language data existence.
350+
*/
351+
void validateDatapathAndLanguagePacks() {
352+
String dataPath = TessBaseAPIGetDatapath(handle);
353+
if (!new File(dataPath).exists()) {
354+
throw new IllegalArgumentException("Specified datapath " + dataPath + " does not exist.");
355+
}
356+
357+
Pointer ptr = TessBaseAPIGetLoadedLanguagesAsVector(handle).getPointer();
358+
String[] loadedLangs = ptr.getStringArray(0);
359+
PointerByReference pref = new PointerByReference();
360+
pref.setPointer(ptr);
361+
TessDeleteTextArray(pref);
362+
ptr = TessBaseAPIGetAvailableLanguagesAsVector(handle).getPointer();
363+
String[] availLangs = ptr.getStringArray(0);
364+
pref.setPointer(ptr);
365+
TessDeleteTextArray(pref);
366+
367+
if (!Arrays.asList(availLangs).containsAll(Arrays.asList(loadedLangs))) {
368+
throw new IllegalArgumentException("Specified language data does not exist.");
369+
}
344370
}
345371

346372
/**
@@ -419,26 +445,6 @@ protected void setROI(Rectangle rect) {
419445
* @return the recognized text
420446
*/
421447
protected String getOCRText(String filename, int pageNum) {
422-
// check for valid datapath and language data existence
423-
String dataPath = TessBaseAPIGetDatapath(handle);
424-
if (!new File(dataPath).exists()) {
425-
throw new IllegalArgumentException("Specified datapath " + dataPath + " does not exist.");
426-
}
427-
428-
Pointer ptr = TessBaseAPIGetLoadedLanguagesAsVector(handle).getPointer();
429-
String[] loadedLangs = ptr.getStringArray(0);
430-
PointerByReference pref = new PointerByReference();
431-
pref.setPointer(ptr);
432-
TessDeleteTextArray(pref);
433-
ptr = TessBaseAPIGetAvailableLanguagesAsVector(handle).getPointer();
434-
String[] availLangs = ptr.getStringArray(0);
435-
pref.setPointer(ptr);
436-
TessDeleteTextArray(pref);
437-
438-
if (!Arrays.asList(availLangs).containsAll(Arrays.asList(loadedLangs))) {
439-
throw new IllegalArgumentException("Specified language data does not exist.");
440-
}
441-
442448
if (filename != null && !filename.isEmpty()) {
443449
TessBaseAPISetInputName(handle, filename);
444450
}

0 commit comments

Comments
 (0)