Skip to main content

ModernBERT Document Classification

A robust document classification library leveraging ModernBERT and Docling for state-of-the-art text extraction and classification.

Features

  • Advanced Extraction: Uses docling and langchain to parse complex PDFs, images, and text files with OCR and layout analysis.
  • ModernBERT: Finetuned on your data for high-performance classification.
  • End-to-End Pipeline: From raw files to trained model and inference.
  • Metrics & Visualization: Automated generation of Confusion Matrices, Classification Reports (Precision, Recall, F1).
  • CLI Support: Easy-to-use command-line interface.

Installation

pip install .

Note: Requires torch, docling, and tesseract-ocr/poppler-utils (for PDF/Image processing).

Usage

1. Data Preparation

Organize your data in a folder (e.g., data_root which is the default in config) where each subfolder represents a class.

data_root/
  ├── invoice/
  │   ├── file1.pdf
  │   └── file2.png
  └── resume/
      ├── file3.txt
      └── file4.pdf

2. Training (One-Step)

Run the training command. If dataset.csv does not exist, the library will automatically extract text from files in data_dir (defined in configs/train_config.yaml) before training.

python3 -m modernbert_doc_cls.cli train --config configs/train_config.yaml

Note: You can still run modernbert-cls extract manually if preferred. Create a configuration file (e.g., configs/train_config.yaml):

data_path: "dataset.csv"
model_id: "answerdotai/ModernBERT-base"
results_dir: "results"

training_args:
  train_batch_size: 4
  eval_batch_size: 4
  learning_rate: 2e-5
  num_train_epochs: 3
  save_strategy: "epoch"
  eval_strategy: "epoch"
  logging_strategy: "steps"
  logging_steps: 10
  save_total_limit: 2
  metric_for_best_model: "f1"

Run training:

python3 -m modernbert_doc_cls.cli train --config configs/train_config.yaml

The model and metrics will be saved in results/.

4. Inference

CLI Usage

Predict the class of a new document.

python3 -m modernbert_doc_cls.cli predict \
  --model_path results/model \
  --encoder_path results/label_encoder.pkl \
  --file path/to/document.pdf

Python API Usage

You can also use the library directly in your Python scripts:

from modernbert_doc_cls.inference import DocumentClassifier

# Initialize the classifier
classifier = DocumentClassifier(
    model_path="results/model",
    encoder_path="results/label_encoder.pkl"
)

# Predict
label, confidence = classifier.predict("data_root/class2/invoice.pdf")
print(f"Predicted: {label} ({confidence:.4f})")

License

MIT License

Metadata

Release files for modernbert-doc-cls 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for modernbert-doc-cls 0.1.0
File Size Uploaded
modernbert_doc_cls-0.1.0.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for modernbert-doc-cls 0.1.0
File Interpreter ABI Platform
modernbert_doc_cls-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / modernbert_doc_cls-0.1.0.tar.gz

Download URL modernbert_doc_cls-0.1.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1abc8ab84d51c99f52379af40349f4ed27ca3e19f799280ee2411979b40ebb89
BLAKE2b-256 checksum
How to use checksums
45b60a9828ba39eb695f4eeab8e4518912ad51d8e8ba2ab6e3587af068631518
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / modernbert_doc_cls-0.1.0-py3-none-any.whl

Download URL modernbert_doc_cls-0.1.0-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dca2df53246d50d470e81b20184f9cef459f107896a05c204a80bd383348fb44
BLAKE2b-256 checksum
How to use checksums
6eaaee2bf190ee5c8c222ba1a274dc2d104308a2a5438a304497f5cbbac4e383
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page