CoolFace
Modelpublic

navodPeiris/layoutlmv2-document-classifier

sourceHugging Facecc-by-nc-sa-4.0updated 1y agoView on Hugging Face
1likes7downloads
Model Card

<!-- This model card has been generated automatically according to the information the Trainer had access to. You should probably proofread and complete it, then remove this comment. -->

layoutlmv2-document-classifier

This model is a fine-tuned version of microsoft/layoutlmv2-base-uncased on an unknown dataset. It achieves the following results on the evaluation set:

  • Loss: 0.0008
  • Accuracy: 1.0

Dataset Infomation

This model was fine-tuned to classify some company documents.

Dataset used: Company Documents Dataset

Dependencies

pip install PyMuPDF
pip install transformers
pip install torch
pip install torchvision
pip install pytesseract

Model Usage

use a file in this dataset to test: https://www.kaggle.com/datasets/navodpeiris/company-documents-dataset

import os
from PIL import Image
from transformers import LayoutLMv2Processor, LayoutLMv2ForSequenceClassification
import fitz
import io

processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")
model = LayoutLMv2ForSequenceClassification.from_pretrained("navodPeiris/layoutlmv2-document-classifier")

DATA_FOLDER = "data"
filename = "invoice.pdf"

file_location = os.path.join(DATA_FOLDER, filename)
doc = fitz.open(file_location)

page = doc.load_page(0)
pix = page.get_pixmap(dpi=200)

# Convert Pixmap to bytes
img_bytes = pix.tobytes("png")

# Load into PIL.Image
image = Image.open(io.BytesIO(img_bytes)).convert("RGB")
doc.close()

encoding = processor(image, return_tensors="pt", truncation=True, padding="max_length", max_length=512)

outputs = model(**encoding)
logits = outputs.logits

predicted_class_id = logits.argmax(dim=1).item()
classified_output = model.config.id2label[predicted_class_id]

print(f"Predicted class: {classified_output}")

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 5e-05
  • trainbatchsize: 8
  • evalbatchsize: 8
  • seed: 42
  • optimizer: Use OptimizerNames.ADAMWTORCH with betas=(0.9,0.999) and epsilon=1e-08 and optimizerargs=No additional optimizer arguments
  • lrschedulertype: linear
  • num_epochs: 1

Training results

Training LossEpochStepValidation LossAccuracy
0.77220.0970260.22490.9216
0.08280.1940520.04520.9907
0.0260.2910780.04590.9907
0.02650.38811040.02670.9907
0.02630.48511300.00681.0
0.0080.58211560.00261.0
0.00230.67911820.00141.0
0.00140.77612080.00091.0
0.00110.87312340.00081.0
0.00120.97012600.00081.0

Framework versions

  • Transformers 4.51.3
  • Pytorch 2.6.0+cu124
  • Datasets 3.6.0
  • Tokenizers 0.21.1