Ir al contenido
Otras versiones

Cargando…

Creación de su propio plugin de captura de datos OCR

Puede crear su propio plugin de captura de datos OCR.

Condiciones:

  • La nueva clase de captura de datos OCR debe implementar la interfaz “OCRTemplateParser”.
  • La nueva clase de captura de datos OCR debe declararse en el paquete “com.openkm.plugin.ocr.template.parser”.
  • La nueva clase de captura de datos OCR debe estar anotada con “@PluginImplementation”.
  • La nueva clase de captura de datos OCR debe extender “BasePlugin”.

Interfaz de captura de datos OCR:

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 allí.

Método Tipo Descripción
parse(OCRTemplateField otf, String text) Object Devuelve el valor del dato capturado como un Object.
Clases de Object permitidas:
- String
- Calendar (se convertirá a una cadena ISO 8601)
- Otras (se convertirán a una cadena con String.valueOf(object)).
getName() String Establece el nombre que se mostrará en la lista de selección de la interfaz de usuario de administración.
isPatternRequired() boolean Si devuelve true, indica que el campo de patrón es obligatorio.
La interfaz de usuario de administración mostrará un error — ‘missing pattern’ — 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;
}
}