/ Модель

Характеристики

Контекст
512 токенов
Параметры
83,5 млн
Лицензия
Своя лицензия
Архитектура
bert · dense
Базовая модель
bert-base-greek-uncased-v1
Библиотека
transformers
Опубликована
26 мар 2026

KYC_classification

Классификация текстаТекст → label4 профессии

Модель классифицирует распознанный OCR текст греческих страниц документов по 18 категориям.

68скачиваний за 30 дней0лайковвеса обновлены26 мар 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Archeiothiki S.A., команда AI Services, разработала эту модель для классификации страниц документов на греческом языке по 18 категориям. Она принимает текст, извлечённый из документов с помощью OCR, и возвращает категорию страницы; среди примеров — счета за энергию, сертификаты и другие деловые документы. Для предварительной обработки текста перед запуском требуется использовать предусмотренную авторами функцию.

Модель построена на BERT и дообучена на базе nlpaueb/bert-base-greek-uncased-v1. В обучении применялись контрастивное обучение и настройка классификатора с функцией потерь для несбалансированных классов. В архитектуре оставлено 6 слоёв из исходных 12; размер скрытого слоя — 768, словарь содержит 35 000 токенов, максимальная длина входа — 512 токенов. В метаданных указано 83,5 млн параметров. На тестовом наборе из 1 336 примеров авторы сообщают точность 0,94 и macro F1 0,92.

Модель подходит для сортировки и маршрутизации страниц греческих документов после OCR. Редкие классы представлены малым числом примеров, и качество на них может быть ниже; авторы отмечают, что для класса AA_LEGAL_ENT_CERTIFICATE требуется больше обучающих данных. Лицензия указана как other, поэтому условия использования следует уточнить в репозитории модели.

Сценарии применения

  • классификация страниц греческих документов после OCR
  • сортировка счетов за энергию и деловых сертификатов
  • автоматическая маршрутизация документов по категориям
  • организация архива греческих документов
  • распределение страниц документов по рабочим процессам

Ограничения

Перед классификацией необходимо применить указанную авторами предобработку. Редкие классы представлены небольшим числом тестовых примеров; для AA_LEGAL_ENT_CERTIFICATE авторы отмечают необходимость дополнительных обучающих данных.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Arch-L3869-PageClassification

Model Details

Model Description

This is a Greek text classification model for categorizing document pages into 18 different classes. The model was trained using a two-phase approach:

  1. Phase 1 (Contrastive Learning): Further pre-training of the base BERT model using Supervised Contrastive Learning (SCL) to create better document embeddings.
  2. Phase 2 (Classification): Fine-tuning with Asymmetric Loss for handling class imbalance.
  • Developed by: Archeiothiki S.A. - AI Services Team
  • Model type: BertForSequenceClassification
  • Language(s): Greek (el)
  • Finetuned from model: nlpaueb/bert-base-greek-uncased-v1

Model Architecture

  • Base Model: nlpaueb/bert-base-greek-uncased-v1
  • Pruned Layers: [0, 2, 4, 6, 8, 11] (6 layers kept for efficiency)
  • Hidden Size: 768
  • Attention Heads: 12
  • Max Position Embeddings: 512
  • Vocab Size: 35,000

Uses

Direct Use

This model classifies document pages (text extracted via OCR) into one of 18 categories:

IDClass LabelDescription
0AA_AADE_OTHEROther AADE documents
1AA_Certificate_of_Current_Image_of_EntityBusiness/Partnership Certificates
2AA_ENERGYEnergy bills
3AA_Employer's_Certificate/PayrollEmployment certificates
4AA_ID_CardIdentity cards
5AA_INCOME_TAX_RETURN_-_E1Income tax return (E1 form)
6AA_INCOME_TAX_RETURN_OF_LEGAL_PERSONSLegal entity tax returns (N form)
7AA_LEGAL_ENTITY_MINUTESGeneral Assembly/Board minutes
8AA_LEGAL_ENT_ARTICLES_OF_ASSOCIATIONArticles of association
9AA_LEGAL_ENT_CERTIFICATECommercial Registry certificates
10AA_NEW_POLICE_IDENTITY_CARDNew police ID cards
11AA_Natural_Person_Information_FormOwnership certificates
12AA_Pension_CertificatePension certificates
13AA_Personal_Income_Tax_(FEP)Personal income tax (FEP)
14AA_SOLEMN_DECLARATIONSolemn declarations
15AA_TELEPHONYPhone bills
16BB_Other_DocumentsOther identifiable documents
17OtherUnclassified pages

How to Get Started with the Model

Prerequisites

pip install transformers torch

Preprocessing Function (Required!)

⚠️ IMPORTANT: This preprocessing MUST be applied to all texts before inference. The model was trained with this preprocessing.

import re
import unicodedata

# Same symbols removed during training
SYMBOLS_TO_REMOVE = r"[`~!@#$%^&*()\-+=\[\]{\}/?><,\'\":;|»«§°·¦ʼ¬£€©΄´\\…\n]"

def strip_accents_and_lowercase(text: str) -> str:
    """Remove accents and convert to lowercase."""
    return "".join(
        c for c in unicodedata.normalize("NFD", text)
        if unicodedata.category(c) != "Mn"
    ).lower()

def clean_text(text: str, symbols_to_remove: str | None = None) -> str:
    """
    Main preprocessing function.

    Steps:
        1. Remove special symbols
        2. Collapse multiple dots into single dot
        3. Remove accents + lowercase
        4. Normalize whitespace
    """
    if symbols_to_remove:
        text = re.sub(symbols_to_remove, " ", text)

    text = re.sub(r"\.{2,}", ". ", text)
    text = strip_accents_and_lowercase(text)
    text = re.sub(r"\s+", " ", text).strip()
    return text

def preprocess_text(text: str) -> str:
    return clean_text(text, symbols_to_remove=SYMBOLS_TO_REMOVE)

Inference Code Snippet (includes preprocessing + dummy strings)

import json
import re
import unicodedata
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

# Preprocessing (REQUIRED!)
SYMBOLS_TO_REMOVE = r"[`~!@#$%^&*()\-+=\[\]{\}/?><,\'\":;|»«§°·¦ʼ¬£€©΄´\\…\n]"

def strip_accents_and_lowercase(text: str) -> str:
    return "".join(
        c for c in unicodedata.normalize("NFD", text)
        if unicodedata.category(c) != "Mn"
    ).lower()

def clean_text(text: str, symbols_to_remove: str | None = None) -> str:
    if symbols_to_remove:
        text = re.sub(symbols_to_remove, " ", text)
    text = re.sub(r"\.{2,}", ". ", text)
    text = strip_accents_and_lowercase(text)
    text = re.sub(r"\s+", " ", text).strip()
    return text

def preprocess_text(text: str) -> str:
    return clean_text(text, symbols_to_remove=SYMBOLS_TO_REMOVE)

# Load model and tokenizer
MODEL_PATH = "path/to/model"
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH)
model.eval()

# Load label mapping
with open(f"{MODEL_PATH}/id2label.json", "r", encoding="utf-8") as f:
    id2label = json.load(f)

# Dummy texts (examples)
texts = [
    "ΔΕΛΤΙΟ ΑΣΤΥΝΟΜΙΚΗΣ ΤΑΥΤΟΤΗΤΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΙΩΑΝΝΗΣ",
    "ΕΝΤΥΠΟ Ε1 ΔΗΛΩΣΗ ΦΟΡΟΛΟΓΙΑΣ ΕΙΣΟΔΗΜΑΤΟΣ 2024",
]

# Preprocess texts
preprocessed_texts = [preprocess_text(t) for t in texts]

# Tokenize
inputs = tokenizer(
    preprocessed_texts,
    truncation=True,
    padding="max_length",
    max_length=512,
    return_tensors="pt"
)

# Inference
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    probabilities = torch.sigmoid(logits)  # Multi-label sigmoid
    predictions = probabilities.argmax(dim=1)

# Get labels
for i, pred in enumerate(predictions):
    label = id2label[str(pred.item())]
    confidence = probabilities[i][pred].item()
    print(f"Text: {texts[i][:50]}...")
    print(f"Prediction: {label} (confidence: {confidence:.4f})")
    print()

Expected Output

Text: ΔΕΛΤΙΟ ΑΣΤΥΝΟΜΙΚΗΣ ΤΑΥΤΟΤΗΤΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΙΩΑΝΝΗΣ...
Prediction: AA_ID_Card (confidence: 0.9842)

Text: ΕΝΤΥΠΟ Ε1 ΔΗΛΩΣΗ ΦΟΡΟΛΟΓΙΑΣ ΕΙΣΟΔΗΜΑΤΟΣ 2024...
Prediction: AA_INCOME_TAX_RETURN_-_E1 (confidence: 0.9567)

Training Details

Training Data

  • Dataset: Internal annotated document dataset
  • Total Samples: ~6,600 (train + validation)
  • Test Samples: 1,336
  • Classes: 18 (imbalanced distribution)
  • Largest Class: Other (571 test samples, ~43%)
  • Smallest Class: AA_LEGAL_ENTITY_MINUTES (7 test samples, ~0.5%)

Training Procedure

Phase 1: Contrastive Learning

  • Base Model: nlpaueb/bert-base-greek-uncased-v1
  • Loss Function: Supervised Contrastive Loss (SCL)
  • Epochs: 200
  • Learning Rate: 2e-5
  • Batch Size: 32
  • Layer Pruning: Kept layers [0, 2, 4, 6, 8, 11]

Phase 2: Classification

  • Base Model: Output of Phase 1 (26_01_2026_15_00_12)
  • Loss Function: Asymmetric Loss (gamma=4)
  • Epochs: 50
  • Learning Rate: 1e-4
  • Batch Size: 32
  • Gradient Accumulation: 2
  • Warmup Ratio: 0.1
  • LR Scheduler: Cosine
  • Oversampling: BB_Other_Documents (x2)

Framework Versions

  • Python: 3.9.0
  • PyTorch: 2.x
  • Transformers: 4.38.2
  • Datasets: 2.x

Evaluation Results

Overall Metrics (Test Set: 1,336 samples)

MetricScore
Accuracy0.94
Macro F10.92
Weighted F10.94

Per-Class Performance

ClassPrecisionRecallF1-ScoreSupport
AA_AADE_OTHER0.890.890.899
AA_Certificate_of_Current_Image1.001.001.0010
AA_ENERGY0.920.890.9127
AA_Employer's_Certificate/Payroll0.860.970.9239
AA_ID_Card1.000.991.00190
AA_INCOME_TAX_RETURN_-_E10.920.860.8977
AA_INCOME_TAX_RETURN_LEGAL1.001.001.008
AA_LEGAL_ENTITY_MINUTES1.001.001.007
AA_LEGAL_ENT_ARTICLES0.801.000.898
AA_LEGAL_ENT_CERTIFICATE0.710.880.7917
AA_NEW_POLICE_IDENTITY_CARD0.961.000.9826
AA_Natural_Person_Form0.900.930.9230
AA_Pension_Certificate0.920.950.9374
AA_Personal_Income_Tax_(FEP)1.000.940.97147
AA_SOLEMN_DECLARATION0.800.890.849
AA_TELEPHONY0.970.920.9465
BB_Other_Documents0.820.640.7222
Other0.940.950.95571

Key Performance Highlights

  • ✅ Other class: F1=0.95 (excellent handling of the majority class)
  • ✅ BB_Other_Documents: F1=0.72 (best among all trained models for this rare class)
  • ✅ High-confidence classes: AA_ID_Card, AA_Certificate, AA_Legal_Entity_Minutes all achieve 1.00 F1
  • ⚠️ Lower performance: AA_LEGAL_ENT_CERTIFICATE (F1=0.79) - needs more training data

Model Files

FileDescriptionRequired
model.safetensorsModel weights✅ Yes
config.jsonModel architecture + id2label/label2id✅ Yes
tokenizer.jsonTokenizer✅ Yes
tokenizer_config.jsonTokenizer config✅ Yes
vocab.txtVocabulary✅ Yes
special_tokens_map.jsonSpecial tokens✅ Yes
id2label.jsonID to label mapping✅ Yes
label2id.jsonLabel to ID mapping✅ Yes
test_report.txtClassification reportOptional

Model Card Authors

AI Services Team - Archeiothiki S.A.

Model Card Contact

Internal use only.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · text-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
BertForSequenceClassification
Ревизия весов
479068c

0 моделей