File size: 3,854 Bytes
360239b
49cc409
 
360239b
e407ec0
 
360239b
 
 
 
 
 
 
de9192c
cc20338
3af8896
360239b
d0a3fab
e407ec0
49cc409
 
360239b
 
628d92a
 
 
 
 
 
 
e224609
628d92a
 
 
 
 
 
3af8896
e224609
1af6b22
360239b
 
 
e407ec0
360239b
 
3300273
360239b
 
 
 
 
 
 
 
 
75b91fd
 
0864c88
360239b
 
 
 
0864c88
f3772fd
360239b
 
 
 
 
0864c88
360239b
 
 
 
 
 
e407ec0
 
 
 
ccf9579
fda1a60
360239b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"""Picarones — Plateforme de benchmark OCR/HTR pour documents patrimoniaux.

Licence Apache 2.0.

API publique des couches 1 & 3 (abstractions stables) ré-exportée
ici pour permettre :

>>> from picarones import Corpus, Document, BaseModule, ArtifactType
>>> from picarones import BenchmarkResult, EngineReport, DocumentResult

Pour les implémentations (calcul de métriques, runner, adapters OCR…),
utiliser les sous-packages explicites :

>>> from picarones.app.services.benchmark_runner import run_benchmark_via_service
>>> from picarones.evaluation.metrics.text_metrics import compute_metrics
>>> from picarones.adapters.ocr.tesseract import TesseractAdapter

Voir ``docs/explanation/architecture.md`` pour la cartographie complète des
8 couches, et ``docs/reference/api-stable.md`` pour le contrat de stabilité.
"""

from __future__ import annotations

# Version (Sprint A9 / M-5) — résolue dans cet ordre :
#   1. ``picarones._version`` injecté au build par setuptools_scm
#      (présent dans le wheel installé) ;
#   2. fallback ``importlib.metadata.version("picarones")`` pour les
#      installations editable où ``_version.py`` peut être stale ;
#   3. fallback final ``"1.0.0"`` si aucune source n'est disponible
#      (ex : tarball sans .git ni metadata).
try:
    from picarones._version import __version__  # type: ignore[import-not-found]
except ImportError:
    try:
        from importlib.metadata import version as _get_version
        __version__ = _get_version("picarones")
    except Exception:  # noqa: BLE001
        __version__ = "2.0.0"

__author__ = "Picarones contributors"


# ──────────────────────────────────────────────────────────────────────────
# API publique — couches stables (domain + evaluation)
# ──────────────────────────────────────────────────────────────────────────

from picarones.evaluation.corpus import (
    Corpus,
    Document,
    TextGT,
    AltoGT,
    PageGT,
    EntitiesGT,
    ReadingOrderGT,
    load_corpus_from_directory,
)
from picarones.domain.artifacts import ArtifactType
from picarones.domain.module_protocol import BaseModule
from picarones.evaluation.benchmark_result import (
    BenchmarkResult,
    DocumentResult,
    EngineReport,
)
from picarones.evaluation.metric_result import MetricsResult, aggregate_metrics
from picarones.domain.facts import (
    DetectorRegistry,
    Fact,
    FactImportance,
    FactType,
)
from picarones.evaluation.metric_registry import (
    MetricSpec,
    compute_at_junction,
    register_metric,
    select_metrics,
)

# Trigger d'enregistrement du registre typé : l'import de
# ``picarones.evaluation.metrics`` provoque l'exécution des décorateurs
# ``@register_metric`` sur ``cer``, ``wer``, ``mer``, ``wil`` + ~15
# métriques philologiques + reading order + NER + ALTO.
import picarones.evaluation.metrics as _trigger_metric_registration  # noqa: F401, E402

__all__ = [
    "__version__",
    "__author__",
    # Corpus
    "Corpus",
    "Document",
    "TextGT",
    "AltoGT",
    "PageGT",
    "EntitiesGT",
    "ReadingOrderGT",
    "load_corpus_from_directory",
    # Modules génériques (BaseModule)
    "ArtifactType",
    "BaseModule",
    # Résultats
    "BenchmarkResult",
    "DocumentResult",
    "EngineReport",
    "MetricsResult",
    "aggregate_metrics",
    # Moteur narratif (modèle de données)
    "DetectorRegistry",
    "Fact",
    "FactImportance",
    "FactType",
    # Registre de métriques typées
    "MetricSpec",
    "compute_at_junction",
    "register_metric",
    "select_metrics",
]