Suppressing ERROR_PTR Messages in Java Spring Application with Tesseract OCR Integration

15 views
Skip to first unread message

Oran Mor

unread,
Jun 24, 2024, 9:22:50 AM (5 days ago) Jun 24
to tesseract-ocr

I am integrating Tesseract OCR with my Java Spring application and encountered an issue where the application prints error messages related to ERROR_PTR to the console. My goal is to suppress these error messages to prevent them from being displayed.

Steps Taken
  1. Loading Native Library for Error Suppression:

    • Created a custom native library (liberrorsuppressor.so) to suppress the error messages.
    • Compiled the library and placed it in the native directory of the project.
    • Configured DYLD_LIBRARY_PATH and java.library.path to include the path to the custom library.
    • Modified the OCRScanner class to load the native library using System.loadLibrary("errorsuppressor").
  2. Java Configuration:

    • Set the DYLD_LIBRARY_PATH to /Users/oran.mor/workspace/server-services/services/dlp/native.
    • Set the java.library.path to /Users/oran.mor/workspace/server-services/services/dlp/native.
  3. Adjustments in Code:

    • Modified the OCRScanner class:
      java
      Copy code
      static { System.loadLibrary("errorsuppressor"); }
    • Attempted to load the native library but encountered java.lang.UnsatisfiedLinkError indicating the library could not be found in the specified paths.
  4. Command-Line Configuration:

    • Attempted to run the application with additional VM options:
      bash
      Copy code
      bootRun -x test -Djava.library.path=/Users/oran.mor/workspace/server-services/services/dlp/native/
  5. Creating and Using the Library:

    • Created a bin directory and compiled the custom library as libtcnative-1.dylib.
    • Placed the library in the bin directory and updated the System.loadLibrary("tcnative-1") line in the OCRScanner class.
  6. Handling Error Output Directly:

    • Attempted to redirect System.err in the main method to suppress specific error messages containing "ERROR_PTR":
      java
      Copy code
      System.setErr(new PrintStream(System.out) { @Override public void println(String x) { if (!x.contains("ERROR_PTR")) { super.println(x); } } });
  7. Custom Logger Configuration:

    • Tried to configure Log4j and Logback to filter out specific error messages:
      • Log4j example:
        xml
        Copy code
        <Filters> <RegexFilter regex=".*ERROR_PTR.*" onMatch="DENY" onMismatch="ACCEPT"/> </Filters>
      • Logback example:
        xml
        Copy code
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>return message.contains("ERROR_PTR");</expression> </evaluator> <onMatch>DENY</onMatch> <onMismatch>NEUTRAL</onMismatch> </filter>
Current Status

Despite the various methods attempted, the application still prints the ERROR_PTR messages to the console, and the libtcnative-1 library could not be loaded successfully. I am seeking advice on alternative methods or corrections to the steps taken to suppress these error messages effectively in a Java Spring application integrated with Tesseract OCR.

Reply all
Reply to author
Forward
0 new messages