Invoice Layout Detection — YOLOv8n

Fine-tuned YOLOv8n for 8-class invoice document layout region detection (metadata, vendor/customer blocks, table, line items, summary, payment, column headers).

Part of the Hub collection Invoice Layout Extraction.

Property Value
Architecture YOLOv8n (3.0M params, 8.1 GFLOPs)
Base weights ultralytics/yolov8n
Input size 1024 px
Classes 8 layout regions
Training epochs 87 (best @ epoch 62)
Optimizer AdamW
Dataset AvoCahDoe/invoice-annotated-bbox
Demo Space AvoCahDoe/invoice-layout-yolov8n-demo
Train / val / test 372 / 14 / 7 pages

Classes

ID Name
0 invoice_metadata
1 vendor_block
2 customer_block
3 table_block
4 line_item
5 summary_block
6 payment_block
7 Column

Metrics

Test split (held-out, 7 images)

Metric Value
mAP50 0.9600
mAP50-95 0.7167
Precision 0.9502
Recall 0.9592

Validation (best epoch 62)

Metric Best Final (epoch 87)
mAP50 0.8787 0.8282
mAP50-95 0.6253 0.6050
Precision 0.8853 0.8439
Recall 0.7849 0.7735

Training time: ~41.0 min on RTX 4070 Laptop GPU.

Training configuration

Parameter Value
Batch 8
Image size 1024
Patience 25
LR (cosine) 0.01 → 0.01
Mosaic 1.0
Mixup 0.15
Copy-paste 0.1
Horizontal flip 0.0

Training results

Learning curves

Training results

Precision–Recall

PR curve

Confusion matrices

Raw Normalized
Confusion matrix Normalized confusion matrix

Validation predictions

Ground truth Model predictions
Val labels Val predictions

Training batches (augmented)

Batch 0 Batch 1 Batch 2
Train batch 0 Train batch 1 Train batch 2

Label distribution

Label distribution

Usage

Ultralytics (recommended)

from ultralytics import YOLO
from huggingface_hub import hf_hub_download

weights = hf_hub_download("AvoCahDoe/invoice-layout-yolov8n", "weights/best.pt")
model = YOLO(weights)
results = model.predict("invoice_page.png", imgsz=1024, conf=0.25)
results[0].show()

Load from Hub by repo id

from ultralytics import YOLO

model = YOLO("hf://AvoCahDoe/invoice-layout-yolov8n/weights/best.pt")
results = model.predict("invoice_page.png")

Training reproduction

python scripts/train_comparison.py --models yolov8n

Repository layout

weights/best.pt          # Best checkpoint (use this)
weights/last.pt          # Last epoch checkpoint
config/                  # Training configuration
metrics/                 # Per-epoch and summary metrics
assets/                  # Plots and visualizations

Model comparison (test split)

All six architectures fine-tuned on the same invoice layout dataset.

Rank Model test mAP50 test mAP50-95 Precision Recall Hub
1 yolov8n ← this model 0.9600 0.7167 0.9502 0.9592 YOLOv8n
2 yolov8s 0.9006 0.6739 0.9419 0.8677 YOLOv8s
3 yolov8x 0.8757 0.6224 0.9144 0.8735 YOLOv8x
4 yolo11x 0.8738 0.6127 0.9484 0.8530 YOLO11x
5 yolo11m 0.8418 0.4926 0.9033 0.8466 YOLO11m
6 yolov8m 0.8388 0.5289 0.9077 0.8580 YOLOv8m

License

Apache 2.0

Downloads last month
712
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train AvoCahDoe/invoice-layout-yolov8n

Space using AvoCahDoe/invoice-layout-yolov8n 1

Collection including AvoCahDoe/invoice-layout-yolov8n

Evaluation results