Ir al contenido

Crear su propio plugin de OCR Data Capture

Puede crear su propio plugin de OCR Data Capture.

Condiciones:

  • La nueva clase OCR Data Capture debe implementar la interfaz “OCRTemplateParser”.
  • La nueva clase OCR Data Capture debe declararse en el paquete “com.openkm.plugin.ocr.template.parser”.
  • La nueva clase OCR Data Capture debe anotarse con@PluginImplementation”.
  • La nueva clase OCR Data Capture debe extender “BasePlugin”.

Interfaz OCR Data Capture:

package com.openkm.plugin.ocr.template;
import com.openkm.db.bean.OCRTemplateField;
import net.xeoh.plugins.base.Plugin;
/**
* OCRTemplateParser
*/
public interface OCRTemplateParser extends Plugin {
Object parse(OCRTemplateField otf, String text) throws OCRTemplateException, OCRParserEmptyValueException;
String getName();
boolean isPatternRequired();
}

La nueva clase debe cargarse en el paquete com.openkm.plugin.ocr.template.parser porque el sistema de plugins de la aplicación intentará cargarla desde ahí.

Método Tipo Descripción
parse(OCRTemplateField otf, String text) Object Devuelve el valor de dato capturado como un Object.
Clases de Object permitidas:
- String
- Calendar (se convertirá a una cadena ISO8601)
- Otros (se convertirán a una cadena con String.valueOf(object)).
getName() String Devuelve el nombre que se mostrará en el selector de la interfaz de administración.
isPatternRequired() boolean Si devuelve true, el campo pattern es obligatorio.
Se mostrará un error - “missing pattern” - en la interfaz de administración si el patrón es obligatorio y el usuario no lo ha establecido.

Clase StringParser:

package com.openkm.plugin.ocr.template.parser;
import com.openkm.db.bean.OCRTemplateField;
import com.openkm.plugin.BasePlugin;
import com.openkm.plugin.ocr.template.OCRParserEmptyValueException;
import com.openkm.plugin.ocr.template.OCRTemplateException;
import com.openkm.plugin.ocr.template.OCRTemplateParser;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* StringParser
*/
@PluginImplementation
public class StringParser extends BasePlugin implements OCRTemplateParser {
@Override
public Object parse(OCRTemplateField otf, String text) throws OCRTemplateException, OCRParserEmptyValueException {
if (text == null || text.equals("")) {
throw new OCRParserEmptyValueException("Empty value");
}
if (otf.getPattern() == null || otf.getPattern().equals("")) {
return text != null ? text.trim() : null;
} else {
Pattern pattern = Pattern.compile("(" + otf.getPattern() + ")", Pattern.UNICODE_CASE);
Matcher matcher = pattern.matcher(text);
if (matcher.find() && matcher.groupCount() == 1) {
return matcher.group();
} else {
throw new OCRTemplateException("Bad format, parse exception");
}
}
}
@Override
public String getName() {
return "String";
}
@Override
public boolean isPatternRequired() {
return false;
}
}