Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Jadice-Viewer bietet die Möglichkeit mittels des TextSelectionTools einen Bereich eines Textes aus zu wählenauszuwählen. Dieser Bereich kann beispielsweise als Bild gerendert und in der Zwischenablage gespeichert werden. Mit ein paar Anpassungen lässt sich das so erzeugte Bild an eine OCR-Engine weiterleiten, welche dann den enthaltenen Text extrahieren kann. Um diese Funktionalität mit der jadice documentplatform zu nutzten nutzen genügt es ein eigenes Command zu erstellen, dass die obengenannten oben genannten Schritte durchfürhtdurchführt. Das folgende Beispiel zeigt eine solche Implementierung des AbstractSelectionCommands:

...

Die Klasse hat folgende Aufgaben:

  1. Anstreuerung Ansteuerung des CLI- der OCR-Engine (Tesseract-ocr).
  2. Einlesen des Ergebnisses der OCR-Verarbeitung und Übergabe als String.

 

Codeblock
themeEclipse
languagejava
titleSimpleTesseractWrapper
public class SimpleTesseractWrapper {


  Logger LOGGER = LoggerFactory.getLogger(SimpleTesseractWrapper.class);

  final String installPath = "C:/Program Files (x86)/Tesseract-OCR/";

  private File outputFile = new File("c:/tmp/ocr-out/");

  private File tempFile = new File("c:/tmp/ocr-in/");


  private final String language = "eng";

  public SimpleTesseractWrapper() {

    try {
      tempFile = File.createTempFile("temp_ocr", ".png");
      outputFile = File.createTempFile("temp_ocr", ".txt");
    } catch (IOException e) {
      LOGGER.error("Could not create temp file", e);
    }
  }

  public void doOcr(BufferedImage image, Rectangle2D roi, Resolution resolution) {
    InputStream stderr = null;
    String outputFileName = outputFile.getParent() + File.separator + outputFile.getName().replace(".txt", "");
    BufferedReader br = null;
    
    try {
      ImageIO.write(image, "PNG", tempFile);
    } catch (IOException e1) {
      LOGGER.error("Error writing File", e1);
    }
    try {
      ProcessBuilder builder = new ProcessBuilder(installPath +File.separator+ "tesseract.exe", tempFile.getAbsolutePath(),
          outputFileName, "-l " + language);

      Process proc = builder.start();
      stderr = proc.getErrorStream();

      InputStreamReader isr = new InputStreamReader(stderr);
      br = new BufferedReader(isr);
      String line = null;
      while ((line = br.readLine()) != null)
        System.out.println(line);
      int exitVal = proc.waitFor();
      if (exitVal != 0) {
        LOGGER.debug("Process exitValue: " + exitVal);
      }

    }


    catch (Exception e) {
      // TODO Error Handling
    } finally {
      try {
        stderr.close();
        tempFile.delete();
        br.close();

      } catch (IOException e) {
        LOGGER.error("Couldn't close Streams", e);
      }

    }
  }

  public String loadResult() {

    String content = null;
    File file = outputFile;
    try {
      FileReader reader = new FileReader(file);
      char[] chars = new char[(int) file.length()];
      reader.read(chars);
      content = new String(chars);
      reader.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return content;

  }
}

 

 

...

Nach Stichwort filtern (Inhalt nach Stichwort)
showLabelsfalse
max5
spacesJKB
sortmodified
showSpacefalse
reversetrue
typepage
labelsjadice documentplatform