Ir al contenido
Otras versiones

Cargando…

Crear 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.ocr.template.parser”.
  • La nueva clase de captura de datos OCR debe estar anotada con “@PluginImplementation”.

Interfaz OCRTemplateParser:

package com.openkm.ocr.template;
import net.xeoh.plugins.base.Plugin;
import com.openkm.dao.bean.OCRTemplateField;
/**
* OCRTemplateParser
*
*/
public interface OCRTemplateParser extends Plugin {
Object parse(OCRTemplateField otf, String text) throws OCRTemplateException, OCRParserEmptyValueException;
String getName();
boolean isPatternRequired();
}
Método Tipo Descripción
parse(OCRTemplateField otf, String text) Object Devuelve el valor de los datos capturados en un Object.
Clases de Object permitidas:
- String
- Calendar (se convertirá a un String ISO8601)
- Otra (se convertirá a string con String.valueOf(object).
getName() String Establece el nombre que se mostrará en la lista de selección de la interfaz de administración.
isPatternRequired() boolean Cuando devuelve true, indica que el campo de patrón 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.ocr.template.parser;
import com.openkm.dao.bean.OCRTemplateField;
import com.openkm.ocr.template.OCRParserEmptyValueException;
import com.openkm.ocr.template.OCRTemplateException;
import com.openkm.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 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;
}
}