Skip to content

Commit

Permalink
Upgrade to Tesseract 5.4.1
Browse files Browse the repository at this point in the history
Upgrade to Tesseract 5.4.1
  • Loading branch information
nguyenq committed Jun 24, 2024
1 parent 0631f7d commit bae35f5
Show file tree
Hide file tree
Showing 17 changed files with 265 additions and 133 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.11.1-SNAPSHOT</version>
<version>5.12.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Tess4J - Tesseract for Java</name>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/sourceforge/tess4j/ITesseract.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public interface ITesseract {
*/
public enum RenderedFormat {

TEXT, HOCR, PDF, PDF_TEXTONLY, UNLV, BOX, ALTO, TSV, LSTMBOX, WORDSTRBOX
TEXT, HOCR, PDF, PDF_TEXTONLY, UNLV, BOX, ALTO, PAGE, TSV, LSTMBOX, WORDSTRBOX
}

/**
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/net/sourceforge/tess4j/TessAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public interface TessAPI extends Library, ITessAPI {
TessResultRenderer TessHOcrRendererCreate2(String outputbase, int font_info);

TessResultRenderer TessAltoRendererCreate(String outputbase);

TessResultRenderer TessPAGERendererCreate(String outputbase);

TessResultRenderer TessTsvRendererCreate(String outputbase);

Expand Down Expand Up @@ -532,6 +534,14 @@ void TessBaseAPISetImage(TessBaseAPI handle, ByteBuffer imagedata, int width, in
* @return internal thresholded image
*/
Pix TessBaseAPIGetThresholdedImage(TessBaseAPI handle);

/**
* Return average gradient of lines on page.
*
* @param handle
* @return average gradient (angle) of lines on page
*/
float TessBaseAPIGetGradient(TessBaseAPI handle);

/**
* Get the result of page layout analysis as a Leptonica-style
Expand Down Expand Up @@ -787,6 +797,16 @@ void TessBaseAPISetImage(TessBaseAPI handle, ByteBuffer imagedata, int width, in
* @return the pointer to Alto text
*/
Pointer TessBaseAPIGetAltoText(TessBaseAPI handle, int page_number);

/**
* Make an XML-formatted string with PAGE markup from the internal data
* structures.
*
* @param handle the TesseractAPI instance
* @param page_number page number
* @return the pointer to PAGE text
*/
Pointer TessBaseAPIGetPAGEText(TessBaseAPI handle, int page_number);

/**
* Make a TSV-formatted string from the internal data structures.
Expand Down Expand Up @@ -940,6 +960,11 @@ void TessBaseAPISetImage(TessBaseAPI handle, ByteBuffer imagedata, int width, in
* ASCII string, the name of the script, e.g. "Latin";
* <code>script_conf</code> is confidence level in the script.
*
* @param handle the TesseractAPI instance
* @param orient_deg
* @param orient_conf
* @param script_name
* @param script_conf
* @return TRUE on success and writes values to each parameter as an output
*/
int TessBaseAPIDetectOrientationScript(TessBaseAPI handle, IntBuffer orient_deg, FloatBuffer orient_conf, PointerByReference script_name, FloatBuffer script_conf);
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/net/sourceforge/tess4j/TessAPI1.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ public class TessAPI1 implements Library, ITessAPI {

public static native TessResultRenderer TessAltoRendererCreate(String outputbase);

public static native TessResultRenderer TessPAGERendererCreate(String outputbase);

public static native TessResultRenderer TessTsvRendererCreate(String outputbase);

public static native TessResultRenderer TessPDFRendererCreate(String outputbase, String datadir, int textonly);
Expand Down Expand Up @@ -533,6 +535,14 @@ public static native void TessBaseAPISetRectangle(TessBaseAPI handle, int left,
* @return internal thresholded image
*/
public static native Pix TessBaseAPIGetThresholdedImage(TessBaseAPI handle);

/**
* Return average gradient of lines on page.
*
* @param handle
* @return average gradient (angle) of lines on page
*/
public static native float TessBaseAPIGetGradient(TessBaseAPI handle);

/**
* Get the result of page layout analysis as a Leptonica-style
Expand Down Expand Up @@ -789,6 +799,16 @@ public static native void TessBaseAPISetRectangle(TessBaseAPI handle, int left,
*/
public static native Pointer TessBaseAPIGetAltoText(TessBaseAPI handle, int page_number);

/**
* Make an XML-formatted string with PAGE markup from the internal data
* structures.
*
* @param handle the TesseractAPI instance
* @param page_number page number
* @return the pointer to PAGE text
*/
public static native Pointer TessBaseAPIGetPAGEText(TessBaseAPI handle, int page_number);

/**
* Make a TSV-formatted string from the internal data structures.
* page_number is 0-based but will appear in the output as 1-based. Returned
Expand Down Expand Up @@ -942,6 +962,11 @@ public static native int TessBaseAPIGetTextDirection(TessBaseAPI handle, IntBuff
* ASCII string, the name of the script, e.g. "Latin";
* <code>script_conf</code> is confidence level in the script.
*
* @param handle the TesseractAPI instance
* @param orient_deg
* @param orient_conf
* @param script_name
* @param script_conf
* @return TRUE on success and writes values to each parameter as an output
*/
public static native int TessBaseAPIDetectOrientationScript(TessBaseAPI handle, IntBuffer orient_deg, FloatBuffer orient_conf, PointerByReference script_name, FloatBuffer script_conf);
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/net/sourceforge/tess4j/Tesseract.java
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,8 @@ protected String getOCRText(String filename, int pageNum) {
textPtr = api.TessBaseAPIGetUNLVText(handle);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_alto"))) {
textPtr = api.TessBaseAPIGetAltoText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_page_xml"))) {
textPtr = api.TessBaseAPIGetPAGEText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_lstmbox"))) {
textPtr = api.TessBaseAPIGetLSTMBoxText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_tsv"))) {
Expand Down Expand Up @@ -672,6 +674,13 @@ private TessResultRenderer createRenderers(String outputbase, List<RenderedForma
api.TessResultRendererInsert(renderer, api.TessAltoRendererCreate(outputbase));
}
break;
case PAGE:
if (renderer == null) {
renderer = api.TessPAGERendererCreate(outputbase);
} else {
api.TessResultRendererInsert(renderer, api.TessPAGERendererCreate(outputbase));
}
break;
case TSV:
if (renderer == null) {
renderer = api.TessTsvRendererCreate(outputbase);
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/net/sourceforge/tess4j/Tesseract1.java
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,8 @@ protected String getOCRText(String filename, int pageNum) {
textPtr = TessBaseAPIGetUNLVText(handle);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_alto"))) {
textPtr = TessBaseAPIGetAltoText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_page_xml"))) {
textPtr = TessBaseAPIGetPAGEText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_lstmbox"))) {
textPtr = TessBaseAPIGetLSTMBoxText(handle, pageNum - 1);
} else if (String.valueOf(TRUE).equals(prop.getProperty("tessedit_create_tsv"))) {
Expand Down Expand Up @@ -653,6 +655,13 @@ private TessResultRenderer createRenderers(String outputbase, List<RenderedForma
TessResultRendererInsert(renderer, TessAltoRendererCreate(outputbase));
}
break;
case PAGE:
if (renderer == null) {
renderer = TessPAGERendererCreate(outputbase);
} else {
TessResultRendererInsert(renderer, TessPAGERendererCreate(outputbase));
}
break;
case TSV:
if (renderer == null) {
renderer = TessTsvRendererCreate(outputbase);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/sourceforge/tess4j/util/LoadLibs.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public class LoadLibs {
/**
* Native library name.
*/
public static final String LIB_NAME = "libtesseract534";
public static final String LIB_NAME = "libtesseract541";
public static final String LIB_NAME_NON_WIN = "tesseract";

private static final org.slf4j.Logger logger = LoggerFactory.getLogger(new LoggHelper().toString());
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/versionchanges.txt
Original file line number Diff line number Diff line change
Expand Up @@ -248,4 +248,7 @@ Version 5.10.0 (4 January 2024)

Version 5.11.0 (7 March 2024)
- Upgrade to Tesseract 5.3.4
- Update lept4j-1.19.1
- Update lept4j-1.19.1

Version 5.12.0 (24 June 2024)
- Upgrade to Tesseract 5.4.1
Binary file removed src/main/resources/win32-x86-64/libtesseract534.dll
Binary file not shown.
Binary file not shown.
Binary file removed src/main/resources/win32-x86/libtesseract534.dll
Binary file not shown.
Binary file added src/main/resources/win32-x86/libtesseract541.dll
Binary file not shown.
24 changes: 23 additions & 1 deletion src/test/java/net/sourceforge/tess4j/TessAPI1Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ public void testTessBaseAPIGetComponentImages() throws Exception {
@Test
public void testTessVersion() {
logger.info("TessVersion");
String expResult = "5.3.4";
String expResult = "5.4.1";
String result = TessAPI1.TessVersion();
logger.info(result);
assertTrue(result.startsWith(expResult));
Expand Down Expand Up @@ -498,6 +498,28 @@ public void testOSD() throws Exception {
}
assertEquals(expResult, actualResult);
}

/**
* Test of TessBaseAPIGetGradient method, of class TessAPI1.
*
* @throws java.lang.Exception
*/
@Test
public void testTessBaseAPIGetGradient() throws Exception {
logger.info("TessBaseAPIGetGradient");
File image = new File(testResourcesDataPath, "eurotext_deskew.png");
float expResult = -0.38202247f;
Pix pix = Leptonica1.pixRead(image.getPath());
TessAPI1.TessBaseAPIInit3(handle, datapath, "eng");
TessAPI1.TessBaseAPISetImage2(handle, pix);
TessAPI1.TessBaseAPIAnalyseLayout(handle);
float result = TessAPI1.TessBaseAPIGetGradient(handle);
logger.info("Average gradient (angle): " + result);
PointerByReference pRef = new PointerByReference();
pRef.setValue(pix.getPointer());
Leptonica1.pixDestroy(pRef);
assertEquals(expResult, result);
}

/**
* Test of ResultIterator and PageIterator.
Expand Down
Loading

0 comments on commit bae35f5

Please sign in to comment.