Instructions to use FranJCastilloC/layoutlmv3-docint-extraction with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use FranJCastilloC/layoutlmv3-docint-extraction with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="FranJCastilloC/layoutlmv3-docint-extraction")# Load model directly from transformers import AutoProcessor, AutoModelForTokenClassification processor = AutoProcessor.from_pretrained("FranJCastilloC/layoutlmv3-docint-extraction") model = AutoModelForTokenClassification.from_pretrained("FranJCastilloC/layoutlmv3-docint-extraction", device_map="auto") - Notebooks
- Google Colab
- Kaggle
LayoutLMv3 para extraccion de campos en documentos de negocio
LayoutLMv3ForTokenClassification afinado para extraer campos de cabecera de
facturas, ordenes de compra y certificados de analisis escaneados.
Espacio de etiquetas
39 clases BIO sobre 19 entidades semanticas compartidas entre tipos de documento
(DOC_NUMBER, DOC_DATE, PARTY_NAME, TOTAL_AMOUNT, LOT_NUMBER,
EXPIRY_DATE, RESULT_STATUS...). El mapeo de entidad a nombre de campo depende
del tipo de documento y lo resuelve el decodificador: DOC_NUMBER es
invoice_number en una factura y po_number en una orden de compra.
Compartir entidades entre tipos fue deliberado: 33 campos por BIO serian 67 clases con unas decenas de ejemplos cada una.
Datos de entrenamiento
929 documentos sinteticos generados con ReportLab y Faker, con degradacion que
simula escaneo (rotacion, ruido, desenfoque, artefactos JPEG, sombra). Tres
familias de plantilla. Las etiquetas se derivaron alineando el ground truth del
generador contra los tokens del OCR, y los documentos cuyo etiquetado quedo dudoso
se excluyeron en vez de marcarse como O.
No se uso ningun documento real de ninguna empresa.
Resultados y limitacion principal
| Conjunto | token-F1 | Field exact-match end-to-end |
|---|---|---|
| Plantilla vista en entrenamiento | 96.5 | 0.920 |
| Plantilla nueva (dev) | 68.1 | 0.522 |
| Plantilla nueva (test) | 72.5 | 0.508 |
El modelo memoriza layout. Con tres familias de plantilla en entrenamiento, aprender la posicion de un campo en la pagina sale mas barato que aprender su relacion con la etiqueta que lo precede. Sobre una plantilla nueva queda por debajo de un extractor por reglas bien construido (0.580).
No usar en produccion sin entrenar con muchas mas variedades de layout. La cifra de 0.920 solo aplica a plantillas que el modelo ya vio.
Uso
from transformers import LayoutLMv3ForTokenClassification, LayoutLMv3Processor
from transformers import LayoutLMv3ImageProcessor, LayoutLMv3TokenizerFast
model = LayoutLMv3ForTokenClassification.from_pretrained("FranJCastilloC/layoutlmv3-docint-extraction")
processor = LayoutLMv3Processor(
image_processor=LayoutLMv3ImageProcessor(apply_ocr=False),
tokenizer=LayoutLMv3TokenizerFast.from_pretrained("microsoft/layoutlmv3-base"),
)
apply_ocr=False es obligatorio: el modelo espera las palabras y las cajas del
OCR propio, con las cajas normalizadas al rango 0-1000.
Codigo completo: https://github.com/FranJCastilloC/Clasificaci-n-y-extracci-n-OCR-de-documentos
- Downloads last month
- -