Downloads · 30 days
10
29% of all-time downloads
Klissh/layoutlmv3-cord-v2
layoutlmv3-cord-v2 is a token classification model from Klissh. Use it when you need labels on individual words, such as names. It is set up for transformers. The card lists the license as mit.
microsoft/layoutlmv3-base yang di-fine-tune untuk token classification (BIO) pada CORD-v2 — ekstraksi informasi kunci dari struk belanja (nama item, qty, harga satuan, subtotal, pajak, diskon, total, dll).
Downloads · 30 days
10
29% of all-time downloads
All-time downloads
35
Public
Parameters
126M
504 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors504 MB · 99%
From the Hugging Face model README
microsoft/layoutlmv3-base yang di-fine-tune untuk token classification (BIO)
pada CORD-v2 — ekstraksi
informasi kunci dari struk belanja (nama item, qty, harga satuan, subtotal, pajak,
diskon, total, dll).
Dipakai oleh layanan Klissh/managemymoney-scan-struk untuk fitur scan struk + split per item pada aplikasi managemymoney.
| Arsitektur | LayoutLMv3ForTokenClassification |
| Base | microsoft/layoutlmv3-base |
| Dataset | CORD-v2 (train 800 / val 100 / test 100) |
| Jumlah label | 55 (skema BIO, termasuk O) |
| Bahasa | Inggris (dataset) + dipakai untuk struk Indonesia |
| OCR saat inferensi | EasyOCR (apply_ocr=False — bbox & teks dari luar) |
load_best_model_at_end (metric_for_best_model="f1").seqeval.learning_rate=1e-5, epochs=10, batch=2, fp16, seed=42.Isi angka F1/precision/recall test-split di sini dari
test_results.jsonsetelah training (mis. F1 test = 0.xx).
Seluruh data CORD-v2 berasal dari valid_line yang teranotasi sebagai entitas,
sehingga tidak ada contoh training murni untuk kelas O (bukan-entitas).
Pada struk nyata, teks non-entitas (footer, NPWP, nomor telepon) berpotensi
salah label. Ini keterbatasan sumber data, bukan pipeline.
from transformers import LayoutLMv3ForTokenClassification, LayoutLMv3Processor
from PIL import Image
model = LayoutLMv3ForTokenClassification.from_pretrained("Klissh/layoutlmv3-cord-v2")
processor = LayoutLMv3Processor.from_pretrained("Klissh/layoutlmv3-cord-v2", apply_ocr=False)
image = Image.open("struk.jpg").convert("RGB")
words = ["Indomie", "Goreng", "3", "10.500"] # dari EasyOCR
boxes = [[70, 120, 210, 140], [215, 120, 330, 140], # dinormalisasi 0..1000
[800, 120, 830, 140], [880, 120, 960, 140]]
enc = processor(image, words, boxes=boxes, return_tensors="pt",
truncation=True, padding="max_length", max_length=512)
pred = model(**enc).logits.argmax(-1)[0].tolist()
Model dilatih di Kaggle; notebook lengkap ada di repo aplikasi
(notebooks/layoutlmv3-cord-v2-finetuning.ipynb).