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í.
Descripción de los métodos
Sección titulada «Descripción de los métodos»| 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. |
Ejemplo
Sección titulada «Ejemplo»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 */@PluginImplementationpublic 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; }}