Peter Boers

AI Document Classifier

Machine Learning Project

Een volledig geautomatiseerd systeem voor het classificeren van zakelijke documenten met behulp van state-of-the-art transformer modellen. Het systeem bereikt een nauwkeurigheid van 94% op een dataset van meer dan 50.000 documenten.

Technologie Stack

Python PyTorch Hugging Face FastAPI Docker

Probleemstelling

De opdrachtgever ontving dagelijks honderden documenten die handmatig moesten worden gesorteerd: facturen, contracten, correspondentie, en rapporten. Dit kostte gemiddeld 4 uur per dag aan administratief werk.

Oplossing

We hebben een end-to-end pipeline gebouwd die documenten automatisch classificeert:

Model Architectuur

Het classificatiemodel is gebaseerd op DistilBERT, gekozen voor de balans tussen nauwkeurigheid en inferentiesnelheid.

Python
from transformers import DistilBertForSequenceClassification
from transformers import DistilBertTokenizer

class DocumentClassifier:
    def __init__(self, model_path: str):
        self.tokenizer = DistilBertTokenizer.from_pretrained(model_path)
        self.model = DistilBertForSequenceClassification.from_pretrained(
            model_path,
            num_labels=4  # factuur, contract, brief, rapport
        )

    def classify(self, text: str) -> dict:
        inputs = self.tokenizer(
            text,
            truncation=True,
            max_length=512,
            return_tensors="pt"
        )
        outputs = self.model(**inputs)
        probs = outputs.logits.softmax(dim=-1)
        return {
            "label": self.labels[probs.argmax()],
            "confidence": probs.max().item()
        }

Resultaten

Geleerde Lessen

Data kwaliteit bleek belangrijker dan modelcomplexiteit. De eerste iteratie met een groter model (BERT-base) presteerde slechter vanwege overfitting op de relatief kleine trainingsset. DistilBERT met agressieve data augmentatie leverde uiteindelijk de beste resultaten.